你好,我想请教一下,以下这个公式为什么能成立IF RSI1>80 THEN CHM:=1;
IF RSI1<20 THEN CHM:=2;
IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=3;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=4;
IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=0;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;
我的理解是逐k线模式下,公式将每个k线解释一次,而CHM 并没有标记为全局变量,所以当前的k线下CHM=1时的C>MAVALUE和CHM=3时的C<MAVALUE冲突,因为是同一k线下。
但是公式运行是成功的。我想请教一下我的理解在哪个方面出错了。谢谢老师
你可以直接在k线上输出你的条件的因子项,在成立位置看结果。
好的,我按照你的方法,加了color来显示图标,只是针对rsi1>80的情况,改成了以下:IF RSI1>80 THEN CHM:1,COLORRED,NOAXIS;
IF RSI1<20 THEN CHM:=2;
IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1) AND REF(C,2)<REF(MAVALUE,2) THEN CHM:3,COLORYELLOW,NOAXIS;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) AND REF(C,2)>REF(MAVALUE,2) THEN CHM:=4;
IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:0,COLORGREEN,NOAXIS;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;
结果显示:
编译错误,变量名‘CHM’重复。
为什么会这样呢?之前是一直稳定的。
‘:’是定义和赋值,你前面已经定义了CHM, 后面不能再用对CHM使用‘:’了。 后面的CHM的赋值全部改成 用 ‘:=’
好的,但是我全部改成"CHM:=",就不能在图表上显示位置了呀,这就搞不清楚开始那个问题:CHM到赋值流程到底是怎么样的。
CHM:0;
IF RSI1>80 THEN CHM:=1,COLORRED,NOAXIS;
IF RSI1<20 THEN CHM:=2;
第一次定义的时候 用 “:” 后面的用 ‘:=’就可以了。
突然想到,回到最初的问题,我想请教一下,当逐k线模式情况下,在前面没有定义的变量,是否会按照上一根k线遗留下来的变量来进行赋值:就像之前的公式:
IF CHM=1 AND C>MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=3,coloergreen,noaxis;
IF CHM=2 AND C<MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=4;
IF CHM=3 AND C<MAVALUE AND REF(C,1)>REF(MAVALUE,1) THEN CHM:=0;
IF CHM=4 AND C>MAVALUE AND REF(C,1)<REF(MAVALUE,1) THEN CHM:=0;
中的,CHM=3时,是否是公式在上一根k线留下的变量。
毕竟我测评过,CHM=0或CHM=3的不同情况下,对于交易结果都是不一样的。
会有这种情况的。但是可以在你的判断里面进行一下处理,保证CHM在任何情况下都有赋值。你原先那个如果RSI1 在[20,80]直接那就没有赋值了。