量化交易-海龟交易法则
海龟交易法则是由传奇交易大师理查德·丹尼斯缔造的海龟交易法则是为数不多的完全开放的、机械化的、完整的的交易系统。本节内容会详细讲解海龟交易法则的具体实施步骤(量化交易代码自己写,我不会分享),海龟交易法的买点与卖点选择使用的是唐奇案通道法(Donchian channel),具体代码实施过程中可以使用优化算法(各种优化算法都可以,发展的本质是在做优化,怎么把实际问题转化成优化问题是关键)计算唐奇安通道中的n值以达到收益最大化。参考中的论文也给出了一些对于海龟交易法的优化思路。
唐奇安通道
唐奇安通道使用最近n根k线的最高值最为通道上线,最低值最为通道下线,上线与下线的均值作为中线。海龟交易法使用唐奇安通道作为买入与卖出信号线。
计算公式如下:
$$
上线 = Max(最高价格,n)\
下线 = Max(最低价格,n)\
中线 = (上线+下线)/2
$$
触碰上线并突破作为做多点,开仓做多;触碰下线并突破作为做空点,开仓做空。
仓位控制
海龟交易法则使用ATR作为仓位控制的参数(在原文中使用的是市场波动性N,事实上是同一个东西,计算方法略有不同,N更简单一点儿),以20日突破交易为例,N代表20日真实波动幅度的指数移动平均值。
$$
TR = MAX(最高价-最低价,最高价-上根K线的收盘价,上根K线收盘价-最低价)\
ATR = 近期N根K线的TR数值求和再平均
$$
由以上公式可知,市价波动性越大,持仓数量越小,反之亦然。
海龟交易法则将账户资金划分为许多个小的单位,头寸规模随所有市场的波动性进行调整,保证一个ATR保持相对于账户净值的1%。计算公式为
$$
头寸规模单位= \frac{账户的1%}{ATR每一点数所代表的价格}
$$
以股市为例,假如某只股票的价格为10元,股市一手买卖需要100股;那么每一数所代表的价格就是$10100=1000$元
入市规则
海龟交易法则给出了两种入市的方法,两种方法各有好处,如果想详细的看他们的对比效果可以去知网看一下基于海龟交易法则的量化交易策略研究-张伟嘉这篇硕士论文。
系统一:以20日突破为基础的短期系统 当价格突破唐奇安通道20日上限时,就触发入市规则,此时开始做多,买入一个头寸单位;当价格跌破唐奇安通道20日下线时,此时开始做空,卖出一个头寸单位。系统一在此基础上还有一个限制条件,就是入市信号触发时如果上一次的突破是一次盈利性突破,那么系统一所触发的当前入市信号要被忽略掉,此时,交易将在55日突破点入市,这也是在保证稳定的基础上避免错过重大趋势。
系统二:以55日突破为基础的长期系统
同理系统一,当市场价格突破55日唐奇安通道的上限或下线时,就会触发入市规则,而系统二并没有任何其他限制条件。
因系统一与系统二是两个独立的系统,不能并用。
加仓与移动止损
海龟交易法则的加仓规则是在突破时建立一个头寸单位,之后基于上一个订单的实际交易价格以1/2N的市场价格间隔增加头寸。因此,如果初始的突破指令减少了1/2N的价格,那么,为了凸显1/2N价格的减少,突破后的新指令为1N加上正常的1/2N单位价格的增量间隔。通常情况下,海龟交易法则单一品种最多加仓4个单位,如果市场波动迅速,在一天之内有可能增加到最多4个单位。(针对的是系统二)
长期来看,为了能够控制住损失,所能做的最重要的事情就是在入市之前就制定一个止损的标准,海龟交易法则也不例外的确定了止损规则,而且需要毫不犹豫的执行。海龟交易法则的止损受到两个方面的制约:一是根据头寸规模风险设定的止损标准,每笔交易亏损额达到总投资额的2%时止损;二是以数值表示的价格变动的上限2N,即止损点设置在做空时价格涨幅为2N或者做多时价格跌幅为2N(2N所参照的价格是距离最近添加头寸单位的价格)。然而,因开盘跳空而设置的间隔过大或者当市场波动太快造成“打滑(skid)”导致后面单位受影响的情况下,止损也会有所不同。
止盈退出
系统一采用10日突破退出规则:对于空头头寸,价格在突破10日最高点时退出;对于多头头寸,价格在跌破过去10日最低点时退出。
系统二采用20日突破退出规则:同系统一,对于空头头寸,价格在突破20日最高点时退出;对于多头头寸,价格在跌破过去20日最低点时退出。
参考
《海龟交易法则》
基于海龟交易法则的量化交易策略研究-张伟嘉