“交易圣杯”海龟交易策略还有用吗?

时间:2022-04-18 09:56:18

海龟交易法是公开的交易系统,1983年中,著名的商品投机家理查德·丹尼斯与他的老友比尔·埃克哈特进行了一场辩论,这场辩论是关于伟大的交易员是天生造就的还是后天培养的。理查德相信,他可以教会人们成为伟大的交易员,而比尔认为遗传和天性才是决定因素。为此,理查德在1983年招募了13个人,教授给他们期货交易的基本概念,以及他自己的交易方法和原则。学员们被称为“海龟”,因此这套交易法则就被后人称作“海龟交易法则”。海龟实验成为了交易史上最著名的实验,因为在随后的四年中海龟取得了年均复利80%的收益。丹尼斯证明用一套简单的系统和法则,可以使仅有很少或根本没有交易经验的人成为优秀的交易员。

当时,海龟们认为应对理查德·丹尼斯负责,商定甚至在他们议定的10年保密协定于1993年终止后也不泄露这些法则。但是,有个别海龟在网站上出售海龟交易法则而谋取钱财。两个原版海龟科蒂斯·费思和阿瑟·马多克,为了阻止个别海龟对知识产权的偷窃和出售海龟交易法则而赚钱的行为,决定在网站上将海龟交易法则免费公之于众。

海龟交易策略买卖点如下(具体多少个交易日自己定,也有人用55交易日与20交易日):

1、当前价格高于过去20个交易日收盘价中的最高价,开仓多买入

2、当前价格低于过去10个交易日收盘价中的最低价,平仓多卖出

3、当前价格低于过去20个交易日收盘价中的最低价,开仓空买入

4、当前价格高于过去10个交易日收盘价中的最高价,平仓空卖出

海龟交易策略的仓位控制需要用到TR与ATR,“振幅区间”记作TR(True Range),它反应的是交易标的当天波动幅度。我们分别用“H”表示当日最高价,“L”表示当日最低价,“P”表示上个交易日的收盘价,则振幅区间的计算公式为:TR = Max( H-L,H-P,P-L )。然而仅仅一天的波动幅度并不能代表交易标的真实的波动水平,一般意义上,我们更倾向于获取一段时期内的平均波动幅度。为此我们采用了“平均振幅区间”,记作ATR(Average True Range),公式为:ATR = (TR1+TR2+……+TRn) / n。

那么完整的包含加仓、平仓逻辑的海龟策略如下:

1、当前价 > 过去20个交易日收盘价中的最高价,做多买入1个Unit;

2、当前价 < 过去10个交易日收盘价中的最低价,平仓多;

3、当前价 > 上一次买入价 + 0.5个ATR,则加仓1个Unit;

4、当前价 < 上一次买入价 - 2个ATR,则平仓多。

反向作空道理一样,具体如下:

1、当前价 < 过去20个交易日收盘价中的最低价,做空买入1个Unit;

2、当前价 > 过去10个交易日收盘价中的最高价,平仓空;

3、当前价 < 上一次买入价 - 0.5个ATR,则加仓1个Unit;

4、当前价 > 上一次买入价 + 2个ATR,则平仓空。

具体加仓多少次(一般单个交易标的设为4),可以自己决定。

代码实现方面折腾了一天,一个是用cancel_all()时需要保证没有正常成交的单子,否则回测数据会错乱,还有一个重要的点是顺势挂单不能提前挂,你比如当前价是51000u,如果你分别挂52000u,53000u,54000u的多单,会是什么结果?会以51000u的价格直接成交。所以核心代码得重写,下面分享出来,若有不妥之处,望指正。

(代码添加不了,需要的私聊我吧)

我们用最近一年的数据回测一下看看。

可以看到,效果不理想,我们在tradingview中画一下线看看,选用5分钟k线,研究一下。

可以看到,确实是很多假突破,画图代码如下:

high = highest(close, 20)

low = lowest(close, 20)

p1 = plot(high, color=red, linewidth=2, title="1")

p2 = plot(low, color=green, linewidth=2, title="1")

为了避免假突破,由于加仓用的是ATR,那么我们上下线也加上一定数量的ATR来过滤,比如上下分别加减1个单位的ATR,我们重画来看看。

可以看出,假突破变少了,具体选用什么值来过滤,大家可以自己去研究。我们把过滤条件加到代码里面,K线周期改成15分钟,重新回测一下看看。

结果有了改善,但依然不够,我们把过滤系数和K线周期调整一下,对比看看。

可见过滤系数及K线周期越大,亏损越小,我们选择过虑系数为2,K线周期为60分钟,再对比一下止损系数看看。

收益率2.32%,可见机构已把这个策略吃的死死的,研究半天研究了个寂寞!要想用这个策略盈利要在止盈止损方面继续研究优化。今天就到这里,后面有时间再继续优化这个策略。

以上策略及代码仅供测试参考,请勿用于实盘,如用于实盘导致亏损,本人不负任何责任。

举报/反馈