变量定义:

onbar事件里面:


K线图运行结果(箭头所示位置的K线结果):

问题:
1. 按照代码逻辑,应该只有ZZ_5=1, 其他的ZZ_1~ZZ_4应该均为0,但实际上如图,ZZ_3、ZZ_4也等于1,这是啥原因?
2. 有的K线计算对的,有的K线计算不对,非常奇怪,如下图是正确的情况:

代码精简了一下,针对这个问题附可复现的完整代码如下:
Params
//此处添加参数
Vars
//此处添加变量
Series<Bool> ZZ_1;
Series<Bool> ZZ_2;
Series<Bool> ZZ_3;
Series<Bool> ZZ_4;
Series<Bool> ZZ_5;
Defs
//此处添加策略函数
Events
//此处实现事件函数
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
ZZ_1 = LV(H, 2) < HV(L, 2);
ZZ_2 = LV(H, 2) >= HV(L, 2) AND LV(H, 3) < HV(L, 3);
ZZ_3 = LV(H, 3) >= HV(L, 3) AND LV(H, 4) < HV(L, 4);
ZZ_4 = LV(H, 4) >= HV(L, 4) AND LV(H, 5) < HV(L, 5);
ZZ_5 = LV(H, 5) >= HV(L, 5) AND LV(H, 6) < HV(L, 6);
Commentary("ZZ_1 = " + IIFString(ZZ_1, "1", "0"));
Commentary("ZZ_2 = " + IIFString(ZZ_2, "1", "0"));
Commentary("ZZ_3 = " + IIFString(ZZ_3, "1", "0"));
Commentary("ZZ_4 = " + IIFString(ZZ_4, "1", "0"));
Commentary("ZZ_5 = " + IIFString(ZZ_5, "1", "0"));
}
}
lv和hv是序列类型,不能放在and和or判断条件后面
改一下写法 写成这样
//原来的
ZZ_2 = LV(H,2) >= HV(L,2) and LV(H,3) <HV(L,3);
//改成
ZZ_2 = LV(H,2) >= HV(L,2);
ZZ_2 = LV(H,3) <HV(L,3) and ZZ_2; 好的,谢谢老师