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

关于IF语句是不是有bug? [开拓者 TB]

  • 咨询内容: 同样的策略,每一条进场出场的if语句分开写和合并写的结果不一样。
    看代码
    1.            If(MarketPosition == 0 And Time >= begintime/100)
    2.         {
    3.                         if(Buycondition)
    4.                 {
    5.                             Buy(BuyLots,Open);
    6.                 }
    7.                
    8.                 if(Sellcondition)
    9.                 {
    10.                     
    11.                             SellShort(BuyLots,Open);
    12.                 }
    13.         }

     

  • TB技术人员: 除了你贴出来的部分,公式里还有其它什么代码?
    仅就你贴出来的代码来看(代码一),第一个开仓信号出现后,不可能再出现其它的第二个信号的。。所以那个开空,应该是其它代码来实现的。。

     

  • TB客服:
    小米 发表于 2015-2-27 10:25
    除了你贴出来的部分,公式里还有其它什么代码?
    仅就你贴出来的代码来看(代码一),第一个开仓信号出现后 ...


    还有一个出场代码:
    1.         if(MarketPosition != 0)
    2.         {
    3.             if(MarketPosition == 1)
    4.                 {
    5.                     
    6.                         /*HighestAfterEntry = Max(High,HighestAfterEntry);
    7.                         if(High > EntryPrice + Profit)
    8.                         {
    9.                             Sell(BuyLots,EntryPrice+ Profit );
    10.                         }*/
    11.                         if(EntryPrice-low>=par3)
    12.                       {
    13.                     Sell(BuyLots,Min(open,EntryPrice-par3));
    14.             }
    15.                         Else if(BarsSinceEntry >= par1 And low-entryprice<=par2)
    16.                         {
    17.                             Sell(Buylots,EntryPrice+par2);
    18.                         }
    19.                         Else if(Sellcondition)
    20.                         {
    21.                             Sell(BuyLots,Open);
    22.                         }
    23.                 }
    24.                 if(MarketPosition == -1)
    25.                 {
    26.                    /*if(Low < EntryPrice - Profit)
    27.                    {
    28.                        BuyToCover(BuyLots,EntryPrice - Profit);
    29.                    }*/
    30.                    if(high-EntryPrice>=par3 )
    31.                 {
    32.                     BuyToCover(BuyLots,Max(open,EntryPrice+par3));
    33.             }
    34.                         Else if(BarsSinceEntry >= par1 And EntryPrice-High <= par2)
    35.                         {
    36.                             BuyToCover(BuyLots,entryprice-par2);
    37.                         }
    38.                         Else if(Buycondition)
    39.                         {
    40.                             BuyToCover(BuyLots,Open);
    41.                         }
    42.                 }
    43.         }
    44.         if(Time==0.15143000 and MarketPosition==1)
    45.         {
    46.             Sell(Buylots,open);
    47.         }
    48.         if(Time==0.15143000 and MarketPosition==-1)
    49.         {
    50.             BuyToCover(Buylots,open);
    51.         }  
    复制代码其他的代码都不涉及进出场了。
    第二种代码的其他部分就是把if全部拆开来的,跟主楼的例子一样。

     

  • 网友回复:
    vista852 发表于 2015-2-27 10:32
    还有一个出场代码:其他的代码都不涉及进出场了。
    第二种代码的其他部分就是把if全部拆开来的,跟主楼的 ...

    所以你的一楼的测试没有意义呀。。因为信号受了其它语句的影响 。。你要多判断你的代码一与代码二是否结果一致,那只能使用这其中的语句方可。。。

     

  • 网友回复:
    小米 发表于 2015-2-27 10:25
    除了你贴出来的部分,公式里还有其它什么代码?
    仅就你贴出来的代码来看(代码一),第一个开仓信号出现后 ...

    是不是在实时行情中,开盘那一个tick,代码一从上到下执行的时候,只会平仓,等到第二个tick来了才会开仓。而代码二在第一个tick的执行中会多次判断持仓状态,从而开仓。

    在历史测试中每根K线只执行一次,代码一就只能等到第二根K线才执行?

    动态行情中我没有监控过两个的区别,信号太多了..

 

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

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


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

相关文章

    没有相关内容