请教老师个问题

IF con11 THEN BEGIN DRAWTEXT('多空',con11,FX,'强多'),RGB(255,0,255);ENDELSE BEGIN IF con12 THEN BEGIN DRAWTEXT('多空',con12,FX,'强空'),RGB(0,255,255);END ELSE BEGIN IF con13 THEN BEGIN DRAWTEXT('多空',con13,FX,'多'),RGB(255,0,0);ENDELSE BEGIN IF con14 THEN BEGIN DRAWTEXT('多空',con14,FX,'空'),RGB(0,255,0);END ELSE BEGIN IF con15 THEN BEGIN DRAWTEXT('多空',con15,FX,'上'),RGB(200,0,0);ENDELSE BEGIN DRAWTEXT('多空',con16,FX,'下'),RGB(0,200,0);END END END END END以上代码会造成在报价字段有时候显示并不准确,第一和第二的"强多""强空"的显示是对的,后面的经常会乱,比如有时候应该显示第五个状态"上",结果显示的是其他状态,但是颜色却能按照状态来准确显示请问这个语法有什么地方不正确吗

另外, 简语言的ifelse毕竟原始, 这有个例子处理多个状态,且可以输出在行情报价上,你可以参考下, RSV:=(CLOSE-LLV(LOW,14))/(HHV(HIGH,14)-LLV(LOW,14))*100;//收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值定义为RSV K:=SMA(RSV,3,1);//RSV的移动平均 D:=SMA(K,3,1);//K值的移动平均 主力:K,COLORRED; 散户:D,COLORGREEN; IF CROSS(主力,散户) THEN BEGIN DRAWTEXT('简语言if案例',主力<22,20,'多起动',' '),colORRED;END Else BEGIN IF CROSS(主力,30) then BEGIN DRAWTEXT('简语言if案例',散户<主力,40,'上扬',' '),colORRED;END else begin IF CROSS(散户,主力) then BEGIN DRAWTEXT('简语言if案例',散户>75,80,'空起动',' '),COLORGREEN;END else begin IF CROSS(主力,70) then BEGIN DRAWTEXT('简语言if案例',散户>主力,60,'下甩',' '),COLORGREEN;END else BEGIN DRAWTEXT('简语言if案例',1,0,' ',' ');END end end end

系统案例是代码块里的东西, 粗看你的代码,你想实现多级别的判断;能看出的改进点有2个, 1. 你的各个con 之间必须相互之间排他,无包含关系, 否则就进入其他分支了, 2. 如果你是向行情报价输出的, 行情报价和k线不同,机制是接收,所以你需要把不符合条件的状态也输出出去, 比如 DRAWTEXT('多空',con11,FX,'强多') 要写成DRAWTEXT('多空',con11,FX,'强多',' '); 注意不但drawtext的逻辑要全写满,ifelse的逻辑也要全写满你可以试试

回复:谢谢老师的回复,以我的那段代码为例,比如强多的条件是:CROSS(A,B) AND C>D,多的条件是CROSS(A,B)没那么是不是就会出现你说的有了包含关系导致显示逻辑出错呢,那有没其他的方式能把这个区别用字段显示出来呢

回复:

回复:你看我另一个回复, 有个用kd的例子写的, 你自己参照下

con1:= ref(c,1) > ref(o,1); con2:= c>o; IF con1 THEN BEGIN DRAWTEXT('阴阳线',con2,CLOSE,'阳阳','阳阴');END Else BEGIN DRAWTEXT('阴阳线',con2,CLOSE,'阴阳','阴阴');END