inspirone 发表于 2018-6-14 16:30:51

关于同一bar盘中平前仓收盘开新仓问题

本帖最后由 inspirone 于 2018-6-14 21:40 编辑

我在策略中加入了止损,测试时当盘中止损和反向开新仓(我用收盘开仓)发生在同一bar时止损位本应该在盘中发生但系统将止损位移到收盘。这样止损和开新仓都发生在收盘了止损位本应该在盘中的。如何让测试时盘中止损和反向开新仓(我用收盘开仓)发生在同一bar时止损位不给移到收盘。

这是我的策略,红字是后加入的止损。很简单就是10日均线向上收阳做多10日均线向下收阴做空。
Params
        Numeric FastLength(10);
        Numeric StopLossSet(30);    // 止损设置
Vars
        NumericSeries AvgValue10;
        Numeric MinPoint;                       // 最小变动单位
    Numeric MyEntryPrice;       // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
    Numeric MyExitPrice;        // 平仓价格
Begin
        MinPoint = MinMove*PriceScale;
    MyEntryPrice = AvgEntryPrice;
        AvgValue10 = AverageFC(Close,FastLength);
        PlotNumeric("MA1",AvgValue10);
       
       
   

        // 集合竞价和小节休息过滤
        If(!CallAuctionFilter()) Return;
       
        If( AvgValue10 > AvgValue10 && close > close && close > AvgValue10)
        {
                Buy(1,Close);
        }
        else If(MarketPosition==1) // 有多仓的情况
    {
         if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
            If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(0,MyExitPrice);
        }
    }
       
        If(AvgValue10 < AvgValue10 && close < close && close < AvgValue10)
        {
                SellShort(1,Close);
        }

   
   else if(MarketPosition==-1) // 有空仓的情况
    {
         if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
            If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            BuyToCover(0,MyExitPrice);
        }
    }


        //PlotNumeric("PL",Portfolio_TotalProfit);       
End

小米 发表于 2018-6-15 09:05:36

这样写开仓会有信号消失的,需要修改开仓条件的。

inspirone 发表于 2018-6-16 09:23:06

我想把开仓条件这样写,在我的策略中加入:如果止损与开仓在同一bar则下一bar开盘价开仓,请问版主这的怎么写?
页: [1]
查看完整版本: 关于同一bar盘中平前仓收盘开新仓问题