海龟交易法则

-回复 -浏览
楼主 2018-06-19 04:18:07
举报 只看此人 收藏本贴 楼主

何谓海龟交易法则


海龟交易法则包含了交易中的每一个环节,从选择市场到确定头寸规模、买卖点、止损点等都涵括在内,其完整性是整个海龟系统成功的一个重要因素。

此外,海龟交易法则由两个系统组成,分别是:系统一和系统二,没错,长得帅的人命名都是这么直接。


今天小编要讲的是系统二哦(为什么莫名感觉自己有点二呢….汗…),系统一下次再讲~


废话不多说,下面就让我们直接来看看海龟交易法则(后面简称“海龟”)的原理~


如何选择市场


由于“海龟”起源于美国,要求高流动性,因此小编选择了国内商品期货作为交易标的,但是,要注意品种之间的相关性不要太强!


如何确定头寸


对于头寸,一定要进行波动性标准化处理。


简单点说就是要根据一个市场的绝对波动幅度来调整头寸的规模,也就是将头寸的绝对波动幅度标准化。


额,好像有点绕,算了,直接上算法吧。


为了确定波动性标准化处理后的头寸规模单位PsnLimit,首先必须知道几个变量:


真实波动幅度TR:


(备注:H表示当日最高价,L表示当日最低价,LPC表示前一日收盘价)


真实波动幅度均值N值:


(备注: ATR = 前一日的平均真实波动幅度,TR = 当日的真实波动幅度)


绝对波动幅度M值:


(备注:contractMulti表示合约乘数)

然后,波幅调整后的头寸规模单位 PsnLimit (Position Limit)就可以确定啦~


此外,我们对每个持仓头寸做限制如下:不超过4个头寸规模单位。


如何确定买卖点


一句话概括就是:以55日通道突破作为入市信号,以20日通道突破作为退出信号。


1、入市信号:


所谓“55日通道”是以55日的最高价和最低价为界,即以55日的最高价和最低价作为开仓突破点,当突破过去55日的最高点或最低点,立即入市交易(价格高于55日最高点则开多仓,低于55日最低点则开空仓)。


2、逐步建仓:


一旦信号产生,首先在突破点建立1个单位的头寸,然后按1/2×N的价格间隔一步一步扩大头寸逐步建仓。


3、退出信号:


同样的,“20日通道”是以20日的最高价和最低价为界。在建仓之后,以20日的最高价和最低价作为退市突破点。对于多头来说,当价格低于20日最低价(向下突破),或对于空头来说,当价格高于20日最高价(向上突破)时,将所有头寸单位清仓,退出市场。


如何确定止损


“海龟”根据头寸风险来设定止损标准。任何一笔交易的风险程度都不得超过2%。


由前面计算头寸的公式,我们可以知道,1N的价格变动代表账户净值的1%,那么,在2%的风险控制下,价格变动的上限就是2N,即“海龟”的止损标准为:

(1)对于多头头寸来说,止损价比(最新)入市价低2N;

(2)对于空头头寸来说,止损价比(最新)入市价高2N;

当市场价格达到这个价格时,“海龟”将清仓退出市场;


以上就是“海龟系统二”的内容啦。那下面就让我们来扒一扒源代码吧!


策略简介


这次小编使用的海龟交易法则策略,订阅了8个相关度不是太高的商品期货主力连续合约,分别是:甲醇、鸡蛋、玉米、聚丙烯、热轧卷板、螺纹钢、黄金和铜。


使用了日收盘价、日最高价、日最低价、15分钟收盘价、15分钟最高价、15分钟最低价以及每个品种的合约乘数。


策略总资金设为2百万,但是策略只使用一半(1百万)资金。


依据之前说到的“海龟”原理编写策略,啥?你又忘了。。。记性不行啊,策略流程图,上!




策略参数配置


小编的这个“海龟”策略每15分钟会调仓一次,根据之前提到的订阅的交易代码和数据,使用Quantrader可以直接配置如下:




策略主程序


数据准备好了之后,我们就可以开始码代码啦。


直接上精华部分!

1、计算头寸单位。




2、突破55日通道开仓。



3、突破20日通道平仓。



4、考虑逐步加仓并且更新止损点。


代码当然不止这么多啦,要看完整版代码?下载地址在最后面哦~


策略回测


策略写完了当然要用历史数据回测看看绩效。同样的,使用Quantrader,刷一下就回测完啦。


从绩效报告中可以看出,从13年1月到15年10月,这个“海龟“策略的收益都非常好而且很稳定,年化收益率接近50%。


系统一和系统二的关系


系统一是以20日突破为基础的短期系统,20日通道突破入市,10日通道突破退出。


系统二是以55日突破为基础的长期系统,55日通道突破入市,20日通道突破退出。


也就是说,实际上,系统一是在系统二的基础上尝试捕捉出入市的突破信号。


那么,现在就有一个问题在等待着大家,到底什么时候要选择系统一,什么时候要选择系统二呢?为了解答这个问题,我们需要考虑上一次突破后的情况。


盈利还是亏损?


通过分析上一次突破的性质是赢利型还是亏损型,可以确定系统的选择,以捕捉更早的趋势信号。


1、若是赢利型,则忽略系统一的入市信号,此后将系统二的入市信号作为保障性信号,即系统一替换为系统二;

2、若是亏损型,则只考虑系统一,不考虑系统二;


这个时候,你恐怕又要问了,那么到底要怎么判断上一次突破是赢利型还是亏损型的呢?


方法很简单。


我们可以先默认上一次突破是赢利型的,之后有实际突破后,考虑该突破后的退市是采用通道突破退市还是因为亏损而止损退市。


若是止损退市,则此次突破为亏损型,反之为赢利型。


至于为什么当上一次突破是亏损型时,用系统一能够捕捉到更早的信号呢?


海龟们的解释是这样的:

“在任何时候,如果一个交易者处于离场等待的状态,那么总有某个价位能引发空头入市信号,也总有某个更高的价位能引发多头入市信号。如果上一次突破是亏损性的,那么新突破点(也就是20日的突破点)将更接近于当前价格;如果上一次突破是赢利性的,那么新突破点可能离当前价远得多,因为那有可能是个55日突破点。”


风险控制


为了降低亏损时期的亏损风险,系统一在头寸单位的规模上做了多层面的限制,而不仅仅只对单个标的做限制。

示例:



“双重损失”止损策略


“双重损失”止损策略是海龟交易法则中的一个备选止损策略,它可以实现更高的利润率,但执行难度也更大。


在“双重损失”止损策略下,每一笔交易的风险上限不是2%,而0.5%。


也就是说,价格波动的上限是1/2N。在一个头寸单位止损退出后,交易者将在价格恢复到最初的入市价时重新建立这个头寸单位。


相对与上一篇提到的系统二的止损策略,“双重损失”止损策略还有一个好处,在于它不需要因为新头寸单位的补充而调整之前单位的止损点,因为我们最多只能有4个单位头寸,总风险水平不可能超过2%。


海龟止损策略的优势


由于海龟止损策略以N为基础(不要问我N是什么,自己去看上一篇去),它们与市场的波动性息息相关。因此,更具波动性的市场有更大的止损范围,但每个头寸单位的合约数量也相对较少。


这就统一了所有交易的风险水平,加强了分散化的效果和风险管理的稳健性。


到这里,“海龟系统一”的内容也全部说完啦。下面照例进入源代码部分!


策略简介


这次小编使用的海龟交易法则策略,订阅了10个期货主力连续合约,分别是:甲醇、鸡蛋、玉米、聚丙烯、热轧卷板、螺纹钢、黄金、铜、国债期货和股指期货。


使用了过去60个交易日的日收盘价、日最高价、日最低价,15分钟收盘价、15分钟最高价、15分钟最低价以及每个品种的合约乘数。


策略总资金依旧设为2百万,策略只使用一半(1百万)资金。

结合上面“海龟系统二”策略原理,就可以开始编写策略啦~


                           


策略参数配置


小编的这个“海龟”策略每15分钟会调仓一次,根据之前提到的订阅的交易代码和数据,使用Quantrader可以直接配置如下:


策略主程序


数据准备好了之后,我们就可以开始码代码啦。


补充说明一点,上次小编的策略用的是Quantrader提供的“position目标持仓”策略类型,这次小编使用的是“order委托单”类型,所以策略代码下单部分会有一些不同哦~大家要看仔细了。


此外,由于系统一是在系统二的基础上建立的,所以小编没办法把系统一单独截出来给大家看,所以这里就放出部分代码,完整版代码就由大家下载后去看啦~




300行的完整版代码下载地址在最后面哦~


策略回测


策略写完了当然要用历史数据回测看看绩效。同样的,使用Quantrader,刷一下就回测完啦。


在接近2年的时间内回测,年化收益超过60%,并且收益曲线平缓稳定上升。对比上一篇“海龟系统二”策略,绩效妥妥的更完美了~



我要推荐
转发到

友情链接