以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  交易系统测试平台--BUG  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=8880)

--  作者:ricegene
--  发布时间:2011/11/9 14:06:40
--  交易系统测试平台--BUG

 

第一步  下面是我写的SMA代码 ,然后放在交易系统上测试

input:N(15,1,50),M(2,1,50);
variable:y1=0;
 
 if barpos=1 then
 y:=c;
 else
 
y:=(c-y[barpos-1])*M/N+y[barpos-1];

y1:=y;
jx:y;


ljx:=ref(jx,1);
lc:=ref(c,1);

kd:=cross(lc,ljx);
kk:=cross(ljx,lc);

kdj:=o;
kkj:=o;

sell(kk and holding>0 and date>=1110101 ,0,limitr,kkj);//平多
//sellshort(kd and holding<0 ,0,limitr,kdj);//平空
buy(kd and holding=0 and date>1110101 ,asset,limitr,kdj);//开多
//buyshort(kk and holding=0 ,asset,limitr,kkj);//开空)

 

第二步 直接用系统的SMA代码 ,然后放在交易系统上测试

input:N(15,1,50),M(2,1,50);
jx:SMA(c,N,M);

ljx:=ref(jx,1);
lc:=ref(c,1);

kd:=cross(lc,ljx);
kk:=cross(ljx,lc);

kdj:=o;
kkj:=o;

sell(kk and holding>0 and date>=1110101 ,0,limitr,kkj);//平多
//sellshort(kd and holding<0 ,0,limitr,kdj);//平空
buy(kd and holding=0 and date>1110101 ,asset,limitr,kdj);//开多
//buyshort(kk and holding=0 ,asset,limitr,kkj);//开空)

 

问题  第一步和第二的JX是完全重合的,按理他们的收益率和回撤应该是一样的,

但是奇怪的总是出现,这两种方式的收益率和回撤 在K线上是一样的,但是在系统的测试平台中测出来收益率和回撤大为不同!!!!

请版主查证,修改。

我测的是399905  日线


--  作者:just
--  发布时间:2011/11/9 15:39:56
--  

在跟踪,稍后回复


--  作者:just
--  发布时间:2011/11/9 16:47:23
--  
已经测试过了,用IF等金字塔能下单的合约进行测试,结果完全一致,估计是由于品种的关系,可能跟软件系统设定的交易费率,保证金什么的有关故得到的结果不一致,你用股票测试感觉没有什么意义啊。
--  作者:ricegene
--  发布时间:2011/11/10 21:14:25
--  
这两天忙,过两天,我把测试过程发图上来,你一看就明白了。
--  作者:ricegene
--  发布时间:2011/11/16 12:52:33
--  

今天闲一点,我就讲给你听,错在哪里

首先确定策略1和策略2

原码---策略1

 

input:N(15,1,50),M(2,1,50);
variable:y1=0;
 
 if barpos=1 then
 y:=c;
 else
 
y:=(c-y[barpos-1])*M/N+y[barpos-1];

y1:=y;
jx:y;

 

ljx:=ref(jx,1);
lc:=ref(c,1);

kd:=cross(lc,ljx);
kk:=cross(ljx,lc);

kdj:=o;
kkj:=o;

sell(kk and holding>0 ,0,limitr,kkj);//平多

buy(kd and holding=0  ,asset,limitr,kdj);//开多

 


资产:ASSET/10000,NOAXIS,linethick1,coloryellow;
可用现金:=CASH(0)/10000,LINETHICK0;
持仓:=HOLDING,LINETHICK0;


T:=barpos/245;
年复合收益率:100*(POW(资产/100,1/T)-1),LINETHICK0 ;
最大回撤:100*llv((asset/ref(hhv(asset,0),0)-1),0),LINETHICK3, noaxis;
盈回比:(-1)*年复合收益率/最大回撤,linethick0;

交易胜率:PERCENTWIN*100,LINETHICK0 ;

 

 

 

原码---策略2

 

input:N(15,1,50),M(2,1,50);
jx:SMA(c,N,M);

ljx:=ref(jx,1);
lc:=ref(c,1);

kd:=cross(lc,ljx);
kk:=cross(ljx,lc);

kdj:=o;
kkj:=o;

sell(kk and holding>0  ,0,limitr,kkj);//平多

buy(kd and holding=0 ,asset,limitr,kdj);//开多


资产:ASSET/10000,NOAXIS,linethick1,coloryellow;
可用现金:=CASH(0)/10000,LINETHICK0;
持仓:=HOLDING,LINETHICK0;


T:=barpos/245;
年复合收益率:100*(POW(资产/100,1/T)-1),LINETHICK0 ;
最大回撤:100*llv((asset/ref(hhv(asset,0),0)-1),0),LINETHICK3, noaxis;
盈回比:(-1)*年复合收益率/最大回撤,linethick0;

交易胜率:PERCENTWIN*100,LINETHICK0 ;

 

 

其次设定费率,  在公式里设定为股票模式双边均为0.3%, 在测试平台里设置为股票测试 费率双边均为0.3%,并且只测多头  ,确保K线和平台测试费率一致.

 

好,  接下来开始测 

测试对象  上证综指全历史  1990.12.18---2011.11.16

 

策略1  在K线图表下显示 年收益率 19.31%  最大回撤 57.7%

策略2  在K线图表下显示 年收益率 19.31%  最大回撤 57.7%

 

 

策略1  在测试平台中测试,结果为 年收益率 5.44%  最大回撤 83.45%

策略2  在测试平台中测试,结果为 年收益率 19.29%  最大回撤 58.35%

 

问题就是,策略1和策略2本质是相同的,只不过一个SMA的原码,一个直接用系统的SMA,  在K线图表下其运行结果完全一致. 

那么为什么两个完全一样东西在测试平台中测出来的结果确完全不相同,因此推论测试平台可能存在问题,请查实并更证,谢谢.