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

求大神,止损不会执行 [开拓者 TB]

  • 咨询内容: Params
            Numeric FastLength(12);
            Numeric SlowLength(26);
            Numeric MACDLength(9);
           
        Numeric StopLossSetA(300);    // 止损设置多头
        Numeric StopLossSetB(300);    // 止损设置空头
    Vars
            NumericSeries M;
            Numeric AvgMACD;
            NumericSeries N;
            Numeric MACDDiff;
            Numeric  G1;
            Numeric G2;
            Numeric E;
         Numeric F;
            Numeric P1;
            Numeric P2;
         NumericSeries EA;
         NumericSeries EF;
         NumericSeries EP1;
         NumericSeries EP2;
         
       
    Numeric MinPoint;// 一个最小变动单位,也就是一跳
    Numeric MyEntryPrice; // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
    Numeric MyExitPrice;// 平仓价格


    Begin
            M = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
            AvgMACD = XAverage(M,MACDLength);
            MACDDiff = M - AvgMACD;
           
        MinPoint = MinMove*PriceScale;
        MyEntryPrice = AvgEntryPrice;
            PlotNumeric("MACD",M);
            PlotNumeric("MACDAvg",AvgMACD);
           
            If (MACDDiff >= 0)       
                    PlotNumeric("MACDDiff",MACDDiff,0,Red);
            Else
                    PlotNumeric("MACDDiff",MACDDiff,0,Green);
            PlotNumeric("零线",0);          
            N=AvgMACD;
            G1=Highest (h,8);
            G2=Lowest(l,8);

            If (((M[1]>N[1]) AND (M<N))AND(M<>0))
            {E=M;
            P1=G1;
         EA=E;
         EP1=P1;
            PlotNumeric("EA",E);
            PlotNumeric("EP1",P1);
           
            }
           

            IF(((M[1]<N[1]) AND (M>N))AND(M<>0))
            {F=M;
            P2=G2;
            EF=F;
            EP2=P2;
            PlotNumeric("EF",F);
            PlotNumeric("EP2",P2);
            //PlotNumeric("R",R);
            }



      IF ((EP2 <EP2[1]) and(EF>=EF[1]))
                 Buy(0,Close);
             
               IF(MarketPosition==1) // 有多仓的情况
        {     IF(Open <= MyEntryPrice - StopLossSetA*MinPoint)// 止损条件表达式
            {
                MyExitPrice = MyEntryPrice - StopLossSetA*MinPoint;
            
              IF(Low< MyExitPrice)
              MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
                Sell(0,MyExitPrice);
            }
            }
           

              
              
        IF((EP1>EP1[1] ) and (EA <=EA[1]))
            SellShort(0,Close);
                  
      IF(MarketPosition==-1) // 有空仓的情况
        {   IF(Open >= MyEntryPrice + StopLossSetB*MinPoint)// 止损条件表达式
            {
                MyExitPrice = MyEntryPrice + StopLossSetB*MinPoint;
                
            IF(High> MyExitPrice)
            MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
                BuyToCover(0,MyExitPrice);
       }
        }
                  

    End



    这段代码,无论止损怎么设,都不会执行,同时我还遇到一种情况,就是空头止损无论设置多大第二根BAR就会被止损,多头无论设置多小都不会被执行,这是什么情况?

     

     来源:CXH99.COM

  • TB技术人员: 本帖最后由 kookzw 于 2017-6-24 17:49 编辑

    你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
    我加了备注清晰明了。想移动止损,想初始止损,随便改。
    1. //bStop = Highest(High[1],BarsSinceEntry) - nLoss*OnePoint;    //买盘止损线不断移动到买入后产生的最高价减去止损限额
    2.         //sStop =  Lowest( Low[1],BarsSinceEntry) + nLoss*OnePoint;    //卖盘止损线不断移动到卖出后产生的最低价减去止损限额
    3.         bStop = EntryPrice - nLoss*OnePoint;    //买盘止损线不断移动到买入后产生的最高价减去止损限额
    4.         sStop =  EntryPrice + nLoss*OnePoint;    //卖盘止损线不断移动到卖出后产生的最低价减去止损限额
    5.         
    6.                 If (MarketPosition == 1) PlotNumeric("bStop",bStop);    // 画出多单止损线。   
    7.         If (MarketPosition ==-1) PlotNumeric("sStop",sStop);    // 画出空单止损线。  
    8.          If ( BarsSinceEntry <> 0)
    9.         {        
    10.            If ( MarketPosition == 1 &&  Low<bStop )       Sell(0,Min(Open,bStop));
    11.            If ( MarketPosition ==-1 && High>sStop ) BuyToCover(0,Max(Open,sStop));
    12.                  }
    复制代码

     

  • TB客服:
    kookzw 发表于 2017-6-24 17:45
    你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
    我加 ...

    好的,谢谢,我试试看

     

  • 网友回复:
    kookzw 发表于 2017-6-24 17:45
    你用这个官网提供的止损代码改改多好。把开平仓的代码放一起,止损的代码单独放一起,编程看着舒服。
    我加 ...

    我尝试了,问题还是没得到解决,不过还是非常感谢你

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容