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

初学TB,做了一个克罗均线系统,关于信号闪烁的问题? [开拓者 TB]

  • 咨询内容: 初学TB想做个顺势均线突破系统,写下来,回测了下,一看结果出奇的好就知道不对了。。。
    信号有闪烁,大神看下能不能根据交易规则,改一下?然后解释下信号闪烁和回测结果出奇好友什么关系?有什么解决方法?


    交易规则:
    适用于日线,1小时线
    在上升趋势中,只持有多头头寸,或不入市。不持有空头头寸。
    在下降趋势中,只持有空头头寸,或不入市。不持有多头头寸。
    下一步是将进入和退出的原则公式化,这项讨论将用到下列原则:

    我们将用收盘价与三个简单移动平均作比较,
    进行长期分析:10天,20天,50天。
    买入:当收盘价>10天>20天>50天;
    卖出:当收盘从<10天<20天<50天。
    进行短期分析,4天,9天,18天。
    买入:当收盘价>4天>9天>18天;
    卖出:当收盘从<4天<9天<18天
    ---------------------------------------------------------------------------------------------- 我是分割线(ㄒoㄒ)
    Params
          Numeric lots(1);

    Vars
          Numeric ma4;
          Numeric ma9;
          Numeric ma10;
          Numeric ma18;
          Numeric ma20;
          Numeric ma50;
    Begin
          ma4=AverageFC(Close,4);
          ma9=AverageFC(Close,9);
          ma10=AverageFC(Close,10);
          ma18=AverageFC(Close,18);
          ma20=AverageFC(Close,20);
          ma50=AverageFC(Close,50);
          If(Close>Close[1])
          {
               If((Close[1]>ma10 && ma10>ma20 && ma20>ma50) || (Close[1]>ma4 && ma4>ma9 && ma9>ma18))
                    Buy(lots,Open);
          }
          If(Close<Close[1])
          {
               If((Close[1]<ma10 && ma10<ma20 && ma20<ma50) || (Close[1]<ma4 && ma4<ma9 && ma9<ma18))
                    SellShort(lots,Open);
          }
    End

     

  • TB技术人员: 自己顶起

     

  • TB客服: @小米 请帮我看看。。。

     

  • 网友回复: 本帖最后由 小米 于 2015-9-17 10:15 编辑
    wu82088465 发表于 2015-9-13 21:17
    @小米 请帮我看看。。。
    1. Params
    2.       Numeric lots(1);

    3. Vars
    4.       Numeric ma4;
    5.       Numeric ma9;
    6.       Numeric ma10;
    7.       Numeric ma18;
    8.       Numeric ma20;
    9.       Numeric ma50;
    10.       boolseries con1;
    11.       boolseries con2;
    12. Begin
    13.       ma4=AverageFC(Close,4);
    14.       ma9=AverageFC(Close,9);
    15.       ma10=AverageFC(Close,10);
    16.       ma18=AverageFC(Close,18);
    17.       ma20=AverageFC(Close,20);
    18.       ma50=AverageFC(Close,50);
    19.       con1 = Close[1]>ma10 && ma10>ma20 && ma20>ma50) || (Close[1]>ma4 && ma4>ma9 && ma9>ma18;
    20.       con2 = Close[1]<ma10 && ma10<ma20 && ma20<ma50) || (Close[1]<ma4 && ma4<ma9 && ma9<ma18;
    21.       If(Close[1]>Close[2])
    22.       {
    23.            If(con1[1] ==true)
    24.                 Buy(lots,Open);
    25.       }
    26.       If(Close[1]<Close[2])
    27.       {
    28.            If((con2[1]==true))
    29.                 SellShort(lots,Open);
    30.       }
    31. End
    复制代码你的公式里有信号消失的原因在于使用了close的判断以及close计算的变量结果。
    当一个bar没有结束前,这个close是会变动的。。于是这个值可能会在满足条件与不满足条件之间来回跳动。
    当前的处理办法是在这个bar结束时再判断条件是否满足,即在下一个bar一开始时就进行判断条件并决定是否下单 。

     

  • 网友回复:
    小米 发表于 2015-9-14 11:19
    你的公式里有信号消失的原因在于使用了close的判断以及close计算的变量结果。
    当一个bar没有结束前,这个 ...

    个人意见:
    24行:If(con1[2] ==true) =====改为======> If(con1[1] ==true)
    27行:If(Close[2]<Close[2]) =====改为======> If(Close[1]<Close[2])

 

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

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


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

相关文章

    没有相关内容