这段TB代码可以解决日内重复开仓的问题了。 ===================== Params numeric K(0.7); Vars numeric Spreadvalue; numeric IsTradedThisDay; Begin spreadvalue=max(closed(1)-LowD(1),highd(1)-closed(1)); IsTradedThisDay = GetGlobalVar(1); if(day!=day[1]) { IsTradedThisDay = 0; } if(IsTradedThisDay != 1 and high>opend(0)+K*spreadvalue) { buy(0,min(opend(0)+K*spreadvalue+2*minmove*pricescale,high)); IsTradedThisDay = 1; SetGlobalVar(1, IsTradedThisDay); } if(IsTradedThisDay != 1 and low<opend(0)-K*spreadvalue) { sellshort(0,max(opend(0)-k*spreadvalue-2*minmove*pricescale,low)); IsTradedThisDay = 1; SetGlobalVar(1, IsTradedThisDay); } end
这里有一个陷阱,各位应该注意: 1、按日线回测只有一个信号,但真实交易会出现两个信号,比如日内先出现信号平空开多,后又出现信号平多开空,这个损失在回测里是忽略不计的,但是真实交易一定会出现, 请各位高手,能给个接近真实情况的回测结果,谢谢 期待ING
在国内期货实证了一下这个系统,最大的感觉就是对隔夜跳空缺口无能为力,绝对只能听天由命。 受外盘影响少的橡胶,是我的几个品种里盈利最多最稳定的品种。 对美国这样的领头羊市场,这不是问题。但现在国内期货受外盘的影响太大了。
学习了R以后,对这个模型有更深刻的理解。 根据我的理解,它应该是抓住了金融时间序列里最常见的“波动集群”特征,所以能历经那么多年还长盛不衰。 突破就说明有大波到来,永远持仓就是为了抓住第一个大波后很可能出现的其他大波。 我用《时间序列分析及应用》P202里的方法对EUR/USD日线进行了分析,特征十分明显。