你是要实现 这么一个流程式的判断?先怎么再怎样 这种逻辑吗?
X:c;
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
majc1:=cross(c,ma5);
majc2:=cross(c,ma10);
masc1:=cross(ma5,c);
masc2:=cross(ma10,c);
Len1:=SUMBARS(majc1,1);//从1开始
Len2:=SUMBARS(majc2,1);
Len3:=SUMBARS(masc1,1);
Len4:=SUMBARS(masc2,1);
cd1:=min(Len1,Len2)>max(Len3,Len4);//表示最近2次的2个死叉 必须都在 最近2个金叉后面。不能有交叉。
cd2:=c<ma5 and c<ma10 and count(ma5>ma20 or ma10>ma20,max(len1,len2))=0;//从最近一次金叉到最近一次死叉 之间的所以区间 必须都在ma20周期以下
cd:=cd1 and cd2;
DRAWICON(cd and not(ref(cd,1)),h,1);//在初次满足的位置做个标记。因为这个状态可能会持续一定周期
此主题相关图片如下:temp.png
测试了下,如上图所示 能判断出来。