if条件不满足,但进入了执行语句

背景:日线以下级别周期策略,QQ_ATR为小周期逆推日线级别ATR的函数,策略执行前10天的时候,DATR都是N/A。问题:在前10天,也会产生开仓,此时 “DATR <> InvalidNumeric” 应该为 false 进不去循环才对呀,求赐教~~~OnBar(ArrayRef<Integer> indexs) { DATR = QQ_ATR(10); // 10天周期的日线ATR if (Time >= daystart && Time <= dayfinish && DATR <> InvalidNumeric) { // 顺势开多 if (longCurrentContracts == 0 // 没多单 && !reverse_long // long关闭 && High > bbreak_1) // 当前bar最高价>bbreak_1 { if (shortCurrentContracts == 0) // 没空单 { Buy(lots, Max(Open, bbreak_1)); // 开多 barentrycnt = 0; // 开仓后置0 }else if(shortCurrentContracts > 0 && barentrycnt > 0) // 有空单,非当前bar开仓 { BuyToCover(0, Max(Open, bbreak_1)); // 平空 Buy(lots, Max(Open, bbreak_1)); // 开多 barentrycnt = 0; // 开仓后置0 } } } }

缺少环境不太好分析。建议直接通过print和commentary等工具输出关键节点的条件信息判断条件到底有没有满足

回复:输出过了,确实不满足;但是将这个条件(DATR <> InvalidNumeric)放到第二层的if条件中,就能够控制住不开单。

回复:找到原因了,if (条件1 || 条件2 && 条件3),没把 条件1||条件2 用括号圈起来