您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

请问版主策略进阶中的跟踪止损问题 - TradeBlazer公式 [开拓者 TB]

  • 咨询内容: 我使用了策略进阶中的跟踪止损代码,但是出来的效果不能理解,有时候是按照我的设定跟踪止损的,有时候不是,不知道问什么?
    源代码如下:
    Params               
            Numeric TrailingStart5(50);      // 跟踪止损启动设置5   
            Numeric TrailingStop5(0.10);      // 跟踪止损设置5
    Vars
            Numeric MinPoint;           // 一个最小变动单位,也就是一跳
               Numeric MyEntryPrice;       // 开仓价格
            Numeric MyExitPrice;        // 平仓价格
           
              NumericSeries HighestAfterEntry;        // 开仓后出现的最高价
              NumericSeries LowestAfterEntry;         // 开仓后出现的最低价
           
            BoolSeries Con1;
            BoolSeries Con2;
    Begin         
             If(BarsSinceentry == 0)
        {       
            HighestAfterEntry = Close;
            LowestAfterEntry = Close;
            If(MarketPosition <> 0)
            {
                HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);   // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
                LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);     // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
            }
        }else
        {
            HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
         LowestAfterEntry = Min(LowestAfterEntry,Low);    // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
        }   
           
        MinPoint = MinMove*PriceScale;       
        MyEntryPrice = AvgEntryPrice;
        If(MarketPosition==1) // 有多仓的情况
        {       
            If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart5*MinPoint)   // 第5级跟踪止损的条件表达式
            {
                If(Low <= HighestAfterEntry[1] - TrailingStop5*TrailingStart5*MinPoint)
                {
                    MyExitPrice = HighestAfterEntry[1] - TrailingStop5*TrailingStart5*MinPoint;
                    If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
               Sell(0,MyExitPrice);
            PlotString("zhiying","止赢",(Low-0.5*MinMove),Red);                               
                }
        }                        
            
        }else if(MarketPosition==-1) // 有空仓的情况
        {       
                If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart5*MinPoint)   // 第5级跟踪止损的条件表达式
            {
                If(High >= LowestAfterEntry[1] + TrailingStart5*TrailingStop5*MinPoint)
                {
                    MyExitPrice = LowestAfterEntry[1] + TrailingStart5*TrailingStop5*MinPoint;
                    If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
               BuyToCover(0,MyExitPrice);
                    PlotString("zhiying","止赢",(Low-0.5*MinMove),Red);                               
                }
             }   
        }       

    //开仓
        If(Con1)
        {                
             Buy(0,Close);               
        }else If(Con2)
        {                    
            SellShort(0,Close);
        }       
           
    End

     

  • TB技术人员: 据我观察,记录最高最低价部分有问题。

     

  • TB客服: 能不能详细说明一下?

【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容