以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [建议]PEL增加对else if 语法的支持  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=4563)

--  作者:z7c9
--  发布时间:2010/12/24 8:31:06
--  [建议]PEL增加对else if 语法的支持

目前为了实现当cond1不满足时判断cond2,当cond2不满足时判断cond3这样的逻辑控制,要么如Test1进行大量的if嵌套,要么如Test2在if语句中加入goto语句,如果PEL支持else if语法的话,如Test3,很清晰明了的就能表达这个逻辑控制,而且当存在更多的如cond4,cond5...这样的逻辑时,无疑前两种方法的表式过于繁琐,建议PEL增加对else if语句的支持。

 

Test1

以下内容为程序代码:

1 if cond1 then
2     buy(1,1,limitr,close);
3 else begin
4     if cond2 then
5         buy(1,1,limitr,close);
6     else cond3 then
7         buy(1,1,limitr,close);            
8 end;

 

Test2

 

以下内容为程序代码:

1 if cond1 then begin
2     buy(1,1,limitr,close);
3     goto end@;
4 end;
5
6 if cond2 then begin
7     buy(1,1,limitr,close);
8     goto end@;
9 end;
10
11 if cond3 then begin
12     buy(1,1,limitr,close);
13     goto end@;
14 end;
15
16 end@;

 

 

 

Test3

以下内容为程序代码:

1 if cond1 then
2     buy(1,1,limitr,close);
3 else if cond2 then
4     buy(1,1,limitr,close);
5 else if cond3 then
6     buy(1,1,limitr,close);

 

 

 

 

[此贴子已经被作者于2010-12-24 8:32:07编辑过]

--  作者:大灰狼
--  发布时间:2010/12/24 8:45:10
--  

楼主提出问题之前,可否自己先自行测试一下

1 if cond1 then
2     buy(1,1,limitr,close);
3 else if cond2 then
4     buy(1,1,limitr,close);
5 else if cond3 then
6     buy(1,1,limitr,close);

这个语法金字塔上完全可以执行


--  作者:fly
--  发布时间:2010/12/24 8:47:08
--  

用已有的功能已经可以实现,且实现并不复杂.

因不是非增不可.

故暂不考虑增加


--  作者:z7c9
--  发布时间:2010/12/24 9:12:14
--  
以下是引用大灰狼在2010-12-24 8:45:10的发言:

楼主提出问题之前,可否自己先自行测试一下

1 if cond1 then
2     buy(1,1,limitr,close);
3 else if cond2 then
4     buy(1,1,limitr,close);
5 else if cond3 then
6     buy(1,1,limitr,close);

这个语法金字塔上完全可以执行

http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=4556&skin=0


--  作者:z7c9
--  发布时间:2010/12/24 9:14:36
--  

以下内容为程序代码:

1 runmode:0;
2
3 if true then
4     begin
5         buy(1,1,limitr,close);
6     end;    
7 else if true then
8     begin
9         buy(1,1,limitr,close);
10     end;
11 else if true then
12     begin
13         buy(1,1,limitr,close);
14     end;

 

这样是能运行呀,到底PEL支不支持else if语法呀,晕了。


--  作者:xian_0_9
--  发布时间:2011/10/31 11:14:07
--  

这么写不行吗?

if cond1 or cond2 or cond3 then buy(1,1,limitr,c);

 

和例子3有啥区别?

 if cond1 then 
     buy(1,1,limitr,close); 
else if cond2 then 
     buy(1,1,limitr,close); 
else if cond3 then 
     buy(1,1,limitr,close);


--  作者:fly
--  发布时间:2011/10/31 13:30:37
--  

1.任意cond1,cond2,cond3一个满足就开仓.

2.当cond1不满足时判断cond2,当cond2不满足时判断cond3.


--  作者:xian_0_9
--  发布时间:2011/10/31 20:00:11
--  

谢谢