以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  公式测试参数优化,慢慢?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=67872)

--  作者:netfox
--  发布时间:2014/7/26 9:02:01
--  公式测试参数优化,慢慢?

 2.2xx 时期的版本穷举参数优化速度也不慢。 出来虚拟内存后速度确实慢一些。

但,记得说过不用虚拟内存速度会提高?

 

公式测试-禁用虚拟内存   关与开似乎影像不大

选项-内存-禁用虚拟内存   没理解这个和公式测试有关系否。

 

总之遗传算法确实速度好,但早先穷举速度慢了。 是否在优化优化穷举效率?

  还是说我设置错误? 可对比2.3xx 与 2.2xx 同样代码真的是早先版本效率好一些。


--  作者:netfox
--  发布时间:2014/7/26 9:49:14
--  

穷举绝对有问题 , 36次优化 需要 10分钟,这不科学。 早前只要几秒。

 


--  作者:netfox
--  发布时间:2014/7/26 11:21:17
--  

  还特地搞了个新虚拟机测试2997的版本,不是金字塔版本问题,与统计函数有关。

 

总:=BARSCOUNT(C);
最大:hhv(ADX,总),NODRAW;
最小:llv(ADX,总),NODRAW;

 

上面3行干掉立马秒速。。。 可这个我只是图标上参考下最大最小波动在哪里, 参数优化时候也参与吗?


--  作者:FexTel
--  发布时间:2014/7/28 8:49:17
--  

1,新版使用虚拟内存对应的处理速度会相对慢一点

2,这个我们要本地验证下,ADX取的是什么?


--  作者:netfox
--  发布时间:2014/7/28 8:57:33
--  
以下是引用FexTel在2014/7/28 8:49:17的发言:

1,新版使用虚拟内存对应的处理速度会相对慢一点

2,这个我们要本地验证下,ADX取的是什么?

 

提供源代码

TA00   5分钟 参数优化 kick  时间 2010年1月1日 2014年7月1日 , 单参数优化都慢,但是取消掉上面关于统计那部分立马秒速。

 

虚拟内存关闭照旧是慢。。。不知道为何这么统计函数上去后速度慢的太多太多。

 

INPUT:M(12,4,60,2),P(104,40,130,2);
INPUT:20K(20,10,30,1),50K(50,50,70,1);
INPUT:KICK(100,50,120,2); //止损点
INPUT:SS(1,1,10,1);


//DMI中间变量
TR1 := SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),M);
HD := HIGH-REF(HIGH,1);
LD := REF(LOW,1)-LOW;
PDM:= SUM(IF(HD>0 AND HD>LD,HD,0),M);
MDM:= SUM(IF(LD>0 AND LD>HD,LD,0),M);
PDI:PDM*100/TR1,NODRAW;
MDI:MDM*100/TR1,NODRAW;
ADX:MA(ABS(MDI-PDI)/(MDI+PDI)*100,P),NOAXIS;
ADXR:=(ADX+REF(ADX,P))/2;

//交易条件
开多条件:=CROSS(PDI,MDI) and ADX>20K and ADX>ref(ADX,1);//开多
平多条件:=CROSS(50K,ADX);
开空条件:=CROSS(MDI,PDI) and ADX>20K and ADX>ref(ADX,1);//开空
平空条件:=CROSS(50K,ADX);

//交易系统
if ref(平空条件,1) then begin
sellshort(holding<0,holding,limitr,open); //平空
end

if ref(开多条件,1) then BEGIN
buy(holding=0,SS,limitr,open); //开多
end

if REF(平多条件,1) then begin
sell(holding>0,holding,limitr,open); //平多
end


if REF(开空条件,1) then BEGIN
buyshort(holding=0,SS,limitr,open); //开空
end

// 移动止损
最高:=HHV(H,OPENBAR+1);
最低:=LLV(L,OPENBAR+1);

多头止损:if(holding>0,最高-KICK,DRAWNULL);
空头止损:if(holding<0,最低+KICK,DRAWNULL);

IF L<最高-KICK and H-L多损:SELL(holding>0,holding,MARKETR);
END

IF H>最低+KICK and H-L空损:SELLSHORT(holding<0,holding,MARKETR);
END


//运行状态

多头持仓:if(holding>0,holding,DRAWNULL),NODRAW;
空头持仓:if(holding<0,abs(holding),DRAWNULL),NODRAW;
持仓周期:if(holding=0,DRAWNULL,openbar+1),NODRAW;
平仓收益:valuewhen(holding=0,asset),noaxis;

总:=BARSCOUNT(C);
最大:hhv(ADX,总),NODRAW;
最小:llv(ADX,总),NODRAW;


--  作者:FexTel
--  发布时间:2014/7/28 9:30:11
--  
1,现象确实如此,已在和相关部门沟通
[此贴子已经被作者于2014/7/28 10:07:39编辑过]

--  作者:fly
--  发布时间:2014/7/28 10:03:28
--  

统计函数本身就需要大量计算的,最后三句是多重循环

你看着没优化这部分参数,但实际写在代码里的东西,参数优化时候全部参与计算

 

如果只是图标上参考下最大最小波动在哪里,那就在参数优化时把这三句去掉吧