关于一段代码,无法PlotBool的问题,看了两个小时也没明白

请教一下各位老师,条件1倒是可以顺利打印,为什条件2中, 无论是写成PlotBool("condition2",condition2,Low-100); 还是写成PlotBool("condition2",condition2,Low); 或者是写成PlotBool("condition2",condition2,Low+500);都无法在图标上标记笑脸。 附上源码: Params Numeric Strengthb(8); Numeric strengths(8); Vars bool condition1; bool condition2; series<bool> var0b2(false); series<bool> var0b(false); Series<Numeric> var2b( 0 ); Series<Numeric> var1b( 0 ); bool var0s(false); Series<Numeric> var1s(0) ; Numeric minpoint; Events OnInit() { //=========数据源相关设置============== AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 //AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 } OnBar(ArrayRef<Integer> indexs) { Minpoint = MinMove* PriceScale; //条件1************************************************************************* condition1 = SwingHigh(1, High, Strengthb, Strengthb + 1 ) <> -1 ; if (condition1) { var0b = true ; var1b = High[Strengthb]; } Else { condition1 = ((var0b) and (High >= var1b + 1*Minpoint)) ; if (condition1) { var0b = false ; PlotBool("condition1",condition1,High+100); Commentary("var1b:"+Text(var1b)); } } //条件2************************************************************************* condition2 = Swinglow(1, low, Strengths, Strengths + 1 ) <> -1 ; if (condition2) { var0s = true ; var1s = low[Strengthb]; } Else { condition2 = ((var0s) and (low <= var1s - 1*Minpoint)) ; if (condition2) { var0s = false ; PlotBool("condition2",condition2,Low-100); Commentary("var1s:"+Text(var1s)); } } }

做空的这一段,怎么引用了做多的参数?

回复:其实两个参数就是个常量,数值也都一样,不过刚才您的回答应该是正确的,非常感谢!

策略逻辑可能有点问题。

回复:condition2这段代码的逻辑是: if这段先找出符合要求的波谷, else这段是找到符合if条件的波谷以后,再寻找突破波谷的bar, condition2并不是重复或重新定义,而是在找到波谷后,在非波谷的bar上寻找再次突破波谷的bar(在满足if条件后再次迭代),if和else中间通过var0s开关来控制,var0s只有在找到波谷后才变为True,变为True后,找到向下突破的bar,然后又变为False 而且,condition1是找波峰的,这个逻辑在condition1可以找到波峰并且向上突破的bar,为什么condition2找波谷,再找向下突破的bar就无法找到呢?

回复:如果这样说,那做空跟做多部分,差不多写就可以啊。

回复:嗯嗯 ,好的,明白了,谢谢