老话题了,以前反应过,有工作人员说他们验证了没问题, 我今天闲一点,我就重新详细讲给你们听,一起分析分析错在哪里
首先确定策略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线图表下其运行结果完全一致.
那么为什么两个完全一样东西在测试平台中测出来的结果确完全不相同,因此推论测试平台可能存在问题,请查实并更证,谢谢.
只不过一个SMA的原码,一个直接用系统的SMA
要看你sma的源码是否正确咯
把2个系统的信号位置比对比对,一定不一样
我用肉眼比了,信号位置,成交手数,没发现不一样的地方。这里正好再提一个问题,能不能把测试结果导出成为EXCELL文件,这样,我把两个策略的281次交易导出来,比较起来就更为方便和准确了,多谢。
当然没有把281个交易一一比过来,希望JZT派人再认真检查检查去比一比,看是不是完全一样,如果两个策略的信号位置交易手数完全一样,那我这个问题不就是存在了吗,呵呵。
下午再次进行了详细测试 以下是做测试的步骤 和结果说明:
我使用的是IF11 限定周期 当日即11月17日
首先我把WEISTOCK/DATA文件夹里的ZJ文件删除。
然后在主图上运行策略1,再进行程序化测评与之比对(注意:测评中别自动补充数据)。得出结果是第一笔成交时间不符,原因是策略公式对第一笔做了特殊限定 BARPOS=1.
同样对策略2进行相同的操作,得出的测评结果与K线主图上的完全一致。