以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- [原创]多周期回测的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=61213) |
-- 作者:dengjl76 -- 发布时间:2014/1/23 9:09:22 -- [原创]多周期回测的问题 各位高手,请教一个问题:我用高低点突破的模型(类似HANS123)做回测,当日只交易一次,即高低点(高低点采用前一日的数据)突破就开仓,当日平仓。为什么在5分钟、30分钟、60分钟回测的结果会不一样。因为如果5分钟突破了,30分钟、60分钟肯定也突破了,回测结果也应该一样啊,求指教。
|
-- 作者:lichenghu -- 发布时间:2014/1/23 9:20:42 -- 您好,对应看下您的下单语句中的报单价格,也许是同时触发下单但对应不同周期历史的C是不一样哦
另外当日平仓是怎么限定的?看下对应其他分钟当日平仓是否稳定执行 |
-- 作者:dengjl76 -- 发布时间:2014/1/23 10:57:48 -- 开仓是用的 开多:buy(开多条件 and holding=0,手数,limitr,向上突破值); 开空:buyshort(开空条件 and holding=0,手数,limitr,向下突破值); 平仓用的 收盘平多:sell(1,手数,market); 收盘平空:sellshort(1,手数,market); 不知道是不是因为用 LIMITR 的原因... 谢谢!
|
-- 作者:yukizzc -- 发布时间:2014/1/23 11:01:26 -- 回测结果不一样,怎么样不一样。比如说某5分钟有信号,包含该5分钟的其他周期没有信号吗? |
-- 作者:dengjl76 -- 发布时间:2014/1/23 11:12:21 -- 信号都有。举个例子:30分钟和60分钟的。 30分钟:9点半—10点产生做多信号,交易做多,然后到收盘平仓 60分钟:9点半—10点产生做多信号,交易做多;10点到10点半再产生一个做空信号。这时候会发现成交单有的是在9点半—10点这段时间做多交易,有的是在10点—10点半这段时间做空交易的。也都是只交易一次,在收盘平仓。
|
-- 作者:lichenghu -- 发布时间:2014/1/23 11:19:56 -- 最好的办法您放在图上看下信号情况以及对应的开仓价格,周期不同会有偏差的!检验下 |
-- 作者:dengjl76 -- 发布时间:2014/1/23 11:30:33 -- 我把30分钟和60分钟的交易明细找出来对比了下。 发现就是60分钟如果在前2个30分钟都有信号的情况下,大部分情况都是在第一个30分钟交易,这部分交易结果与30分钟是一样的。 但是还有一少部分情况是在第二个30分钟交易,这部分交易结果与30分钟不同甚至交易方向完全相反,我没有设置在第一个30分钟不交易条件。 我的理解是如果用下面的公式测试,60分钟周期也应该在信号出来就交易啊,而不管是不是在第几个30分钟。不知道这样理解对不对? 开多:buy(开多条件 and holding=0,手数,limitr,向上突破值);
开空:buyshort(开空条件 and holding=0,手数,limitr,向下突破值); |
-- 作者:lichenghu -- 发布时间:2014/1/23 11:32:55 -- 您好,对应代码贴下,分析下具体问题! 图上做下对比应该很容易发现的 |
-- 作者:dengjl76 -- 发布时间:2014/1/23 11:51:39 -- 策略用的就是论坛发布的区间突破 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 |
-- 作者:lichenghu -- 发布时间:2014/1/23 12:19:27 -- 您好,您对应time限制了,time取的是K线时间哦 以股指为例,5分钟一个K线的time是9.20,30分钟第一根K线的time是9.45
对应如果是开盘后5分钟满足突破,对应策略在5分钟周期不会报单,对应30分钟周期策略就会报单 |