以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  PEL语句执行效率问题  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=184865)

--  作者:youop
--  发布时间:2021/3/24 9:42:21
--  PEL语句执行效率问题
我使用下面的无意义程序测试20个品种,2014年~2021年的数据,用了将近4分半钟,是不是意思是说,不用复杂函数,系统的行数其实对PEL的执行效率能产生很大影响。


if barpos = 1 then
 DEBUGFILE2(\'D:\\2222.TXT\',\'开始\',0,1);

if barpos= DATACOUNT then
 DEBUGFILE2(\'D:\\2222.TXT\',\'结束\',0,1);
//=========================================================
//定义变量
//=========================================================
X:=100;Et:=0;
Lti:=Ref(Time,1);Mc:=c;

If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;
If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;If Et>0 Then Et:=Et+1;

Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);
Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);Cs:=If(Et>=6000,x*0.6,x);

--  作者:banzhuan
--  发布时间:2021/3/24 9:56:13
--  
不知道这样有什么意义呢?策略后面的代码都会去运算一遍,回测个7,8年的数据用4分钟也很正常啊
--  作者:youop
--  发布时间:2021/3/24 9:59:26
--  PEL语句执行效率问题
自己的pel跑大概是40~50多秒,比这个短,因为看到一句话,逐k+最后一根k线,tick过来是刷新最新一根,但是等新的k线形成,还是要整理刷新一遍,所以我想看看能不能简化下代码。