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

如此双均线系统,咋还出现信号消失呢? - TradeBlazer公式 [开拓者 TB]

  • 咨询内容: 我在模拟交易中,测试陈总讲课的例子,但还是出现信号消失问题,很是不解。请各位高手能给予帮助。先谢了

    程序代码如下:
    1. Params                                                
    2.         Numeric Length1(8);                // 短均线周期
    3.         Numeric Length2(22);                 // 长均线周期
    4.         Numeric InitialStop(6);                                // 初始止损比例*1000
    5.         Numeric BreakEvenStop(10);                // 保本止损比例*1000
    6.         Numeric TrailingStop(14);                // 追踪止损比例*1000
    7.         Numeric Lots(1);                            // 头寸大小   
    8.        
    9. Vars                                                   
    10.         NumericSeries MA1;                           
    11.         NumericSeries MA2;
    12.         BoolSeries condBuy(false);                // 做多条件
    13.         BoolSeries condSell(false);                // 做空条件
    14.            Numeric MyPrice;
    15.         NumericSeries HigherAfterEntry;        // 多头盈利峰值价
    16.         NumericSeries LowerAfterEntry;        // 空头盈利峰值价
    17.         BoolSeries bLongStoped(false);        // 当前均线多头趋势下是否有过一次进场
    18.         BoolSeries bShortStoped(false);        // 当前均线空头趋势下是否有过一次进场
    19.         Numeric StopLine(0);

    20. Begin

    21.         // 把上一根bar的出场状况传递过来
    22.         if (BarStatus > 0)
    23.         {
    24.                 bLongStoped = bLongStoped[1];
    25.                 bShortStoped = bShortStoped[1];
    26.         }

    27.         // 传递或比较盈利峰值价
    28.         If(BarsSinceEntry >= 1)
    29.         {
    30.                 HigherAfterEntry = Max(HigherAfterEntry[1],High[1]);
    31.                 LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]);
    32.         }
    33.         Else
    34.         {
    35.                 HigherAfterEntry = HigherAfterEntry[1];
    36.                 LowerAfterEntry = LowerAfterEntry[1];
    37.         }

    38.         MA1 = AverageFC(Close,Length1);              
    39.         MA2 = AverageFC(Close,Length2);
    40.         PlotNumeric("MA1",MA1);
    41.         PlotNumeric("MA2",MA2);

    42.         // 计算是否出现了金叉死叉
    43.         condBuy = CrossOver(MA1,MA2);
    44.         condSell = CrossUnder(MA1,MA2);

    45.         // 如果当前bar没有发生交叉,则将前一个Bar的交叉状态传递下去
    46.         if ( condBuy == false and condSell == false )
    47.         {
    48.                 condBuy = condBuy[1];
    49.                 condSell = condSell[1];
    50.         }

    51.         // 过滤集合竞价
    52.         If((BarType==1 or BarType==2) && BarStatus == 2 && date!=date[1] && high==low)         return;
    53.         If(BarType==0 && BarStatus == 2 && CurrentTime<=0.09 && high==low)                                 return;

    54.         // 多头初次入场
    55.         If (MarketPosition!=1 and condBuy[1]==true and bLongStoped==false)
    56.         {
    57.                 Buy(Lots,Open);
    58.                
    59.                 HigherAfterEntry = Open;
    60.                 LowerAfterEntry = Open;
    61.                 bLongStoped = false;
    62.                 bShortStoped = false;                       
    63.         }

    64.         // 空头初次入场
    65.         If (MarketPosition!=-1 and condSell[1]==true and bShortStoped==false)
    66.         {
    67.                 HigherAfterEntry = Open;
    68.                 LowerAfterEntry = Open;
    69.                 bLongStoped = false;
    70.                 bShortStoped = false;
    71.         }

    72.         // 多头再次入场,必须突破前次出场前的高点
    73.         If(bLongStoped and MarketPosition==0 and High > HigherAfterEntry)
    74.         {
    75.                 MyPrice = HigherAfterEntry;
    76.                 If(Open > MyPrice) MyPrice = Open;
    77.                 Buy(Lots,MyPrice);
    78.                
    79.                 bLongStoped = False;
    80.                 HigherAfterEntry = MyPrice;
    81.                 LowerAfterEntry = MyPrice;

    82.                 Return;                // 再次入场,开仓bar不平仓
    83.         }

    84.         // 空头再次入场,必须跌破前次出场前的低点
    85.         If(bShortStoped and MarketPosition==0 and Low < LowerAfterEntry)
    86.         {
    87.                 MyPrice = LowerAfterEntry;
    88.                 If(Open < MyPrice) MyPrice = Open;
    89.                 SellShort(Lots,MyPrice);
    90.                        
    91.                 bShortStoped = False;
    92.                 HigherAfterEntry = MyPrice;
    93.                 LowerAfterEntry = MyPrice;
    94.                        
    95.                 Return;                // 再次入场,开仓bar不平仓
    96.         }

    97.         // 止损部分
    98.         If(MarketPosition==1)        // 持多头
    99.         {
    100.                 StopLine = EntryPrice * (1-InitialStop/1000);                        // 初始止损
    101.                 If (HigherAfterEntry >= EntryPrice * (1+BreakEvenStop/1000))        StopLine = EntryPrice;                //保本止损
    102.                 If (StopLine < HigherAfterEntry*(1-TrailingStop/1000))                StopLine = HigherAfterEntry*(1-TrailingStop/1000);                // 追踪止损
    103.                
    104.                 // 止损触发
    105.                 If(Low <= StopLine)
    106.                 {
    107.                         MyPrice = StopLine;
    108.                         If(Open < MyPrice) MyPrice = Open;
    109.                         Sell(Lots,MyPrice);
    110.                         bLongStoped = True;                // 止损后设置标志
    111.                 }
    112.         }
    113.         Else If(MarketPosition==-1)        // 持空
    114.         {
    115.                                 StopLine = EntryPrice * (1+InitialStop/1000);                                  // 初始止损
    116.                 If (LowerAfterEntry <= EntryPrice *(1-BreakEvenStop/1000))                            StopLine = EntryPrice;                //保本止损
    117.                 If (StopLine > LowerAfterEntry*(1+TrailingStop/1000))                            StopLine = LowerAfterEntry*(1+TrailingStop/1000);        // 追踪止损
    118.                
    119.                 // 止损触发
    120.                 If(High >= StopLine)
    121.                 {
    122.                         MyPrice = StopLine;
    123.                         If(Open > MyPrice) MyPrice = Open;
    124.                         BuyToCover(Lots,MyPrice);
    125.                         bShortStoped = True;        // 止损后设置标志
    126.                 }
    127.         }
    128. End

     

  • TB技术人员: 自己顶一个

     

  • TB客服: 回复 1# kongwei1107


    是哪个信号出现信号消失?
    看了一下条件,是用历史条件判断的,应该不会出现信号消失的。

     

  • 网友回复: 回复 3# lh948

    是啊,我也觉得奇怪。

    我是用30MIN周期的CF1201做测试的,昨天下午在平多和开空时都出现信号消失提示。

    还有一个很奇怪的事情:在昨天实时过程中,在消息中心中显示的信号消失提示,在今天的消息中心里又没有了呢?我设的是保留20天的消息,也记录有昨天的信息,但惟独缺了信号消失的内容,我想拷屏也不行了。

     

  • 网友回复: 回复 4# kongwei1107


    将条件fileappend到文件里,如果出现信号消失,就到文件中找相应时间的日志内容看看是哪些条件不满足。

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

相关文章

    没有相关内容