关闭
您正在使用的浏览器版本较低,无法支持聚宽的某些特性。
为了获得更好的体验,推荐使用:
Google Chrome
或者
Mozilla Firefox
或者
IE9以上
。
返回主题列表
海龟交易法则升级版---(分钟级回测+合约变更移仓)
颖硕
发布于2018-08-13
回复 7
浏览 10972
51
listen
分享到:
微信
微博
雪球
前一阵子学习了ScintiGimcki 同学写的[商品期货策略——海龟交易法][1] ,颇有收获。在学习的基础上,自己对策略进行了升级,主要体现在以下三个方面: 1. 上一个帖子中,对于主力合约变更时,策略将原主力合约平仓了结。本贴加入一个移仓选项g.shift(第17行)。如果为True则移仓,将原主力合约平仓,再对新主力合约进行相同数量相同方向开仓。为False则不移仓,对原主力合约平仓了结,不对新主力合约开仓。 2. 海龟交易法则为日级别的回测,本贴升级为分钟级回测,修改g.frequency(第18行)为’1d’为日回测,’1m’为分钟级回测。 注意:别忘了右上边也跟着调整。 3. 如果希望变更回测标的,修改g.symbol(第13行)即可。 如果有同学不了解海龟交易法则,可以拜读上述ScintiGimcki的帖子有详细的解释。我对海龟交易法则的交易规则进行一个简单的总结: 以多头为例, 【突破开仓】如果价格突破过去20日的最高价,则买入一个单位。值得注意有两点,一是如果已经持有多头头寸,则即使突破也不开仓。二是如果已经持有空头头寸,需要将原来的空头头寸平掉再开多仓。 【顺势加仓】如果股价相比于上一次多开的价格又上涨了0.5个ATR,那么则再买入一个单位,加仓有最多4次的限制。 【回调止损】如果股价相比于上一次多开的价格下降了2个ATR,那么则平掉所有持有的多仓。 【止盈止损】自持有头寸起,如果股价相比于期间最高价下跌5%,则平仓结束交易。 【ATR】A就是平均,TR是真实波幅。TR=max(h-l,abs(h-c0),abs(l-c0)),c0为昨日收盘价。 【一个单位】(total_value*0.01/ATR)/future_multiplier ![1.png][2] 问题: 策略有一个缺点,如果组合期初金额设置较小的话,则可能因为资金问题而导致开仓失败,但是日志中显示是理论开仓数量。只要策略资金够的话,这个问题不会发生。 如果大家在回测过程中发现其他什么问题,请留言。根据大家的问题汇总,有必要的话可以再写一版。 [1]: https://www.joinquant.com/post/9184 [2]: https://image.joinquant.com/ac34fe327f60925988beae547ab7dbb9
51
listen
分享到:
微信
微博
雪球
评论
秋灵儿
说点我的想法,不知对不对。 1.我测试了策略,发现新开仓的铜和交割月是相差二个月,就实盘交易经验来说,相差三个月比较妥当。 2.测试说是改成了分钟策略,不知是多大周期的分钟策略,这个也很重要。实际交易中15分钟和60分钟比较常用。 3.换月份时,我认为应该是检测新合约是不是符合开仓标准,而不是一键移仓。因为近月受到现货的影响比较强,逼仓时方向相差蛮大的。 欢迎拍砖!
2018-08-15
颖硕
@秋灵儿 非常感谢您的建议。本人期货知识有限,选取的合约是聚宽提供的主力合约。分钟级回测是指每分钟都会判断一次是否触发交易,至于实际上多久交易一次,还看触发信号没有。移仓的触发条件是主力合约变更了。
2018-08-15
宋一堆
在计算ATR时有一点小问题 range(T+1)生成的是[0,,21],这样在i=0时,后续计算hmc,lmc时会取到-1的值,不符合逻辑 改成range(1,T+1)就对了 ![360截图-26059436.jpg][1] [1]: https://image.joinquant.com/02b4de71ae6a4de0d24f70910f6211e0
2018-10-20
颖硕
@宋一堆 对,应该是range(1,T+1)
2018-10-21
水手zsl
您好,我想问一下,怎么实现按实时进行回测,而不是按天? 
2019-08-13
齐天大圣猪八戒
楼主能教教怎么改变合约吗
2019-08-16
chilly
海龟交易的收益相当不错,可惜想逮住大鱼要太多次错误的尝试,即便每次损失很低,胜率太低,对人性是极大的考验,实操起来甚难。
2020-06-10
您尚未登录,请
登录
或者
注册
聚宽发表回复。
取 消
提 交