前一阵子学习了ScintiGimcki 同学写的商品期货策略——海龟交易法 ,颇有收获。在学习的基础上,自己对策略进行了升级,主要体现在以下三个方面:
- 上一个帖子中,对于主力合约变更时,策略将原主力合约平仓了结。本贴加入一个移仓选项g.shift(第17行)。如果为True则移仓,将原主力合约平仓,再对新主力合约进行相同数量相同方向开仓。为False则不移仓,对原主力合约平仓了结,不对新主力合约开仓。
- 海龟交易法则为日级别的回测,本贴升级为分钟级回测,修改g.frequency(第18行)为’1d’为日回测,’1m’为分钟级回测。 注意:别忘了右上边也跟着调整。
- 如果希望变更回测标的,修改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
问题:
策略有一个缺点,如果组合期初金额设置较小的话,则可能因为资金问题而导致开仓失败,但是日志中显示是理论开仓数量。只要策略资金够的话,这个问题不会发生。
如果大家在回测过程中发现其他什么问题,请留言。根据大家的问题汇总,有必要的话可以再写一版。