useboy 发表于 2018-4-25 22:54:25

实盘中If条件不满足却执行了,不知何原因?

我在程序里面,用了If条件语句,但是条件不满足时,却执行了。具体片段如下:
If(A_BuyPosition>0 && Time>=Nightbegintime/100 && Time<=Nightlasttime/100 )
        {
                If(Q_Last > Myprice+2*MinMove*PriceScale )   //多单保本出场
                {   
                  PlotString("A","可保本出场",high,Yellow);
                  If( Q_Last<=Myprice)
                  {
                       A_SendOrder(Enum_Sell,Enum_Exit,EachLots,Q_BidPrice());
                          Commentary("多单保本出场");       
                      PlotString("PS","多单保本出场",Low,Red);
                          Myprice=InvalidNumeric;
                  }
                }
                Else If( Low< Low )// 建仓后的多单出场条件
                {
                        A_SendOrder(Enum_Sell,Enum_Exit,EachLots,Q_BidPrice());
                        Commentary("多单出场");       
                        PlotString("PS","多单出场",Low,Red);
                }       

结果在没有持仓都情况下,”可保本出场”的字段,在每个BAR都出现了,是不是每个BAR在条件不满足都情况下,都执行了IF语句里面的PlotString("A","可保本出场",high,Yellow); 如下图:       
       

不知是啥原因,管理员解释一下。       

小米 发表于 2018-4-26 09:46:50

对于A函数的调试,我们是建议使用fileapend来记录。
这段代码里使用a_xxxx类的帐户函数,但是却没有使用barstatus==2的分支控制,这样在历史K线上的a_buyposition是一个无效值 ,而这个无效值是一个大于0的数值,所以在时间条件内的a_buypsotion>0是会一直满足的。
在第一层条件满足的情况下,第二层也满足了,自然就会输出字符串了。

A_XXXX类帐户函数的使用需要对TB的语法以及机制更为了解方好使用。
页: [1]
查看完整版本: 实盘中If条件不满足却执行了,不知何原因?