以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  关于if嵌套的问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=137218)

--  作者:arutema
--  发布时间:2016/7/28 13:22:15
--  关于if嵌套的问题
请版主赐教
If cod then begin
DRAWTEXT( cod,h HIGH,\'S    5\',COLORrgb(100,255,100));
end
else begin
if cod6 then begin
DRAWTEXT(cod,h,\'S   4\',COLORrgb(120,255,120));
end
else begin
if  cod then begin
DRAWTEXT( cod,h,\'S  3\',COLORrgb(140,255,140));
end
else begin
if cod then begin
DRAWTEXT(cod,h,\'S 2\',COLORrgb(160,255,160));
end
……
这样写 提示 缺少end     我实现的是 满足第一行的条件时,不计算以后的任何条件,当第一条件满足不了时,然后在运算第二个条件,不计算第二个条件以后的任何条件,当一、二条件都不能满足时,运算第三个条件,不计算第三个以后的任何条件,一次类推到n个
 还有 一个系统 可不可多组if else嵌套?
谢 

--  作者:wenarm
--  发布时间:2016/7/28 13:55:15
--  

支持多层嵌套的。但是要考虑执行的效率

If cod then begin
 DRAWTEXT( cod,h HIGH,\'S    5\',COLORrgb(100,255,100));
 end
 else if cod6 then begin
   DRAWTEXT(cod,h,\'S   4\',COLORrgb(120,255,120));
 end
  else if  cod then begin
    DRAWTEXT( cod,h,\'S  3\',COLORrgb(140,255,140));
   end
   else if cod then begin
    DRAWTEXT(cod,h,\'S 2\',COLORrgb(160,255,160));
   end


--  作者:arutema
--  发布时间:2016/7/28 21:59:18
--  
x1:ref(h,5),COLORRED;
x2:ref(LOW,5),COLORgreen;
If h>=x1*1.0043 then begin
DRAWTEXT( h>=x1*1.0043,HIGH,\'S5\',COLORrgb(100,255,100));
end
 else if h>=x1*1.00266 then begin
DRAWTEXT( h>=x1*1.00266,h,\'S4\',COLORrgb(120,255,120));
end
  else if  h>=x1*1.00163 then begin
DRAWTEXT(h>=x1*1.00163, h,\'S3\',COLORrgb(140,255,140));
end
   else if h>=x1*1.001016 then begin
DRAWTEXT(h>=x1*1.001016, h,\'S2\',COLORrgb(160,255,160));
end
    else if h>=x1*1.00063 then begin
DRAWTEXT( h>=x1*1.00063,h,\'S1\',COLORrgb(180,255,180));
end
     else if h>=x1*1.00023 then begin
DRAWTEXT(h>=x1*1.00023,h,\'S\',COLORrgb(200,255,200)),ALIGN 2;
end

 if l<=X2*0.9957 then begin
DRAWTEXT( l<=X2*0.9957,l,\'B5\',COLORrgb(255,100,100));
end
else if l<=X2*0.99734 THEN begin
DRAWTEXT( l<=X2*0.99734,l,\'B4\',COLORrgb(255,120,120));
end
else if l<=X2*0.99837 then begin
DRAWTEXT(l<=X2*0.99837,l,\'B3\',COLORrgb(255,140,140));
end
else if l<=X2*0.998984 then begin

DRAWTEXT(l<=X2*0.998984,l,\'B2\',COLORrgb(255,160,160));
end
else if l<=X2*0.99937 then begin
DRAWTEXT(l<=X2*0.99937,l,\'B1\',COLORrgb(255,180,180));
end
else if l<=x2*0.99967 then begin
DRAWTEXT(l<=x2*0.99967,l,\'B\',COLORrgb(255,200,200)),ALIGN 2;
end

测试是通过了  但是显示混乱 当前k线一变 前面所有k线都跟着变 ,买点b为什么显示不处理  不是可以嵌套吗  求教





--  作者:wenarm
--  发布时间:2016/7/29 9:18:09
--  

这个你自己逻辑判断下你的条件。

这个是3层嵌套的范例。逻辑是没有错的。你可以参考后迭代添加。条件可以使用 FALSE 和  TRUE 进行代替,可以测试嵌套是否进入该层。

If FALSE then begin
 DEBUGFILE(\'D:\\123.TXT\',\'第一层=%.2f\',1);
end
else if FALSE
then begin
 DEBUGFILE(\'D:\\123.TXT\',\'第二层=%.2f\',2);
 end
    else if  TRUE then begin
    DEBUGFILE(\'D:\\123.TXT\',\'第三层=%.2f\',3);
   end