全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
if条件不满足,但进入了执行语句
2024-07-23 14:08

背景:日线以下级别周期策略,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

}

}

}

}

kyover

缺少环境不太好分析。

建议直接通过print和commentary等工具输出关键节点的条件信息判断条件到底有没有满足

2024-07-23 14:23
tbj614****5013
@kyover

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

2024-07-23 14:32
tbj614****5013
@kyover

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

2024-07-23 14:40
您未登录,请先 登录注册 后发表评论
顶部