实盘中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); 如下图:
不知是啥原因,管理员解释一下。 对于A函数的调试,我们是建议使用fileapend来记录。
这段代码里使用a_xxxx类的帐户函数,但是却没有使用barstatus==2的分支控制,这样在历史K线上的a_buyposition是一个无效值 ,而这个无效值是一个大于0的数值,所以在时间条件内的a_buypsotion>0是会一直满足的。
在第一层条件满足的情况下,第二层也满足了,自然就会输出字符串了。
A_XXXX类帐户函数的使用需要对TB的语法以及机制更为了解方好使用。
页:
[1]