请教老师个问题

IF con11 THEN

   BEGIN DRAWTEXT('多空',con11,FX,'强多'),RGB(255,0,255);END

ELSE 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);END

ELSE 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);END

ELSE

   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