各位高手,请教一个问题:我用高低点突破的模型(类似HANS123)做回测,当日只交易一次,即高低点(高低点采用前一日的数据)突破就开仓,当日平仓。为什么在5分钟、30分钟、60分钟回测的结果会不一样。因为如果5分钟突破了,30分钟、60分钟肯定也突破了,回测结果也应该一样啊,求指教。
您好,对应看下您的下单语句中的报单价格,也许是同时触发下单但对应不同周期历史的C是不一样哦
另外当日平仓是怎么限定的?看下对应其他分钟当日平仓是否稳定执行
开仓是用的
开多:buy(开多条件 and holding=0,手数,limitr,向上突破值);
开空:buyshort(开空条件 and holding=0,手数,limitr,向下突破值);
平仓用的
收盘平多:sell(1,手数,market);
收盘平空:sellshort(1,手数,market);
不知道是不是因为用 LIMITR 的原因...
谢谢!
回测结果不一样,怎么样不一样。比如说某5分钟有信号,包含该5分钟的其他周期没有信号吗?
信号都有。举个例子:30分钟和60分钟的。
30分钟:9点半—10点产生做多信号,交易做多,然后到收盘平仓
60分钟:9点半—10点产生做多信号,交易做多;10点到10点半再产生一个做空信号。这时候会发现成交单有的是在9点半—10点这段时间做多交易,有的是在10点—10点半这段时间做空交易的。也都是只交易一次,在收盘平仓。
最好的办法您放在图上看下信号情况以及对应的开仓价格,周期不同会有偏差的!检验下
我把30分钟和60分钟的交易明细找出来对比了下。
发现就是60分钟如果在前2个30分钟都有信号的情况下,大部分情况都是在第一个30分钟交易,这部分交易结果与30分钟是一样的。
但是还有一少部分情况是在第二个30分钟交易,这部分交易结果与30分钟不同甚至交易方向完全相反,我没有设置在第一个30分钟不交易条件。
我的理解是如果用下面的公式测试,60分钟周期也应该在信号出来就交易啊,而不管是不是在第几个30分钟。不知道这样理解对不对?
开多:buy(开多条件 and holding=0,手数,limitr,向上突破值);开空:buyshort(开空条件 and holding=0,手数,limitr,向下突破值);
策略用的就是论坛发布的区间突破
input:PercentOfRange(0.5,0,1,0.1);
input:LOTS(1,0,9,1);
HighD:=callstock(stklabel,vthigh,6,-1);
LowD:=callstock(stklabel,vtlow,6,-1);
OpenD:=valuewhen(date<>REF(date,1),open);
RangeT:= HighD-LowD;
UpperBand: OpenD +PercentOfRange*RangeT;
LowerBand: OpenD -PercentOfRange*RangeT;
开多条件:=h>UpperBand;
开空条件:=l<LowerBand;
if time>093000 and time<140000 then begin
开多:buy(开多条件 and holding=0,LOTS,limitr,UpperBand);
开空:buyshort(开空条件 and holding=0,LOTS,limitr,LowerBand);
end
if time>=145000 then BEGIN
收盘平多:sell(1,LOTS,market);
收盘平空:sellshort(1,LOTS,market);
end
您好,您对应time限制了,time取的是K线时间哦
以股指为例,5分钟一个K线的time是9.20,30分钟第一根K线的time是9.45
对应如果是开盘后5分钟满足突破,对应策略在5分钟周期不会报单,对应30分钟周期策略就会报单