最近看到大家在讨论如何最大限度地接近实盘测试,自己也刚好在想这个问题。在这里发表一个愚见,抛砖引玉
假设是某交易系统,用5周期均线上下穿越30周期均线进行买卖,用于15分钟图。
连续图上的主力合约换月的时候,系统的买卖合约也跟着换月
思路:首先找出主力合约,其次在相应的合约上产生信号、并换月。
实例和说明如下:(不保证完整)
vol00:="if00$vol#day";
vol01:="if01$vol#day";
vol02:="if02$vol#day";
vol03:="if03$vol#day";
vol04:="if04$vol#day";
vol05:="if05$vol#day";
vol06:="if06$vol#day";
vol07:="if07$vol#day";
vol08:="if08$vol#day";
vol09:="if09$vol#day";
vol10:="if10$vol#day";
vol11:="if11$vol#day";
vol12:="if12$vol#day";
n:=if(vol00=vol01,'if01',if(vol00=vol02,'if02',if(vol00=vol03,'if03',if(vol00=vol04,'if04',if(vol00=vol05,'if05',if(vol00=vol06,'if06',if(vol00=vol07,'if07',if(vol00=vol08,'if08',if(vol00=vol09,'if09',if(vol00=vol10,'if10',if(vol00=vol11,'if11',if(vol00=vol12,'if12','ru00'))))))))))));//用成交量判断相应的主力合约
ma5:stkindi(n,'ma.ma1',0,3);//调用相应合约的5周期均线
ma30:stkindi(n,'ma.ma3',0,3);//调用相应合约的30周期均线
n1:=refx(n,1);//判断换月的时候用的
n2:=ref(n,1);
sell((ma5<ma30 or stricmp(n,n1)<>0) and holding>0,1,thisclose);//死叉或者即将换月的时候,就平仓
sellshort((ma5>ma30 or stricmp(n,n1)<>0) and holding<0,1,thisclose);
buy(ma5>ma30 and holding=0 and stricmp(stklabel,n1)=0,1,thisclose);//条件成立,而且下一根K线图依然是主力合约,就发出信号。
buyshort(ma5<ma30 and stricmp(stklabel,n1)=0 and holding=0,1,thisclose);
以上探讨,在测试的时候,要把所有的股指合约都选择上。系统会自动判断哪段时间买卖哪个合约的。
建义refx不要在逐周期上使用,会导致系统运行非常缓慢。
buy系统因为只能在逐周期上运行,故建义将BUY修改为ENTERLONG,然后将公式系统修改序列模式。
问:
1.事实上,我在做期指实盘的时候,成交量超过1天就换合约了,而期指连续IF00是成交量连续超过2天才换,楼主能针对这点做改善吗?
2.所有合约选入后,测试结果是否参照全部综合的数据?(全部综合是将所有合约的结果简单相加并平均之计算还是有加权计算?)
3.测试中使用参数优化,因为多合约计算,计算量会非常庞大,这几乎无法解决。
你的思路应该可以实现。方法是判断出主力合约。然后在该合约上做相应的下单操作,平调非主力合约的所有仓位。
没有逐周期权限了,还没购买呢。不能调试。你自己试试
火哥这个帖子真给力啊。。主力合约换月的想了好久的呢
顶个!!!