海龟交易法则量化交易策略及代码

6413
回复
17312
查看
  [复制链接]
字体大小: 正常 放大

3万

主题

3万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39029

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2022-11-22 07:55:38 | 显示全部楼层 |阅读模式
492681; 本帖最后由 欧米伽 于 2017-3-9 20:21 编辑

海龟

天然的海龟是一个比较成熟而完整的交易系统。构建交易系统的目的就是避免交易员自己做出主观的决策。这样才能真正的让概率发挥作用。海龟的主要捕捉的是趋势。其采用突破法来确定趋势,当价格突破时认为有买入的信号,而随着价格离当初突破的价格越来越远,我们认为趋势成立的概率就越来越高,加仓!那么,这个突破怎么确定呢?我们需要用到唐奇安通道的方法进行处理。

唐奇安通道

在海龟的系统的止盈止损中,实际上就是借助了唐奇安通道。那么,这唐奇安通道究竟是个什么东西呢?

首先引入上线中线下线的概念。上线=Max(前N个交易日的最高价),下线=Min(前N个交易日的最低价),中线=(上线+下线)/2,每个交易日结束之后更新当天的数据。这里N一般默认取20。那么唐奇安通道就是这个上线和下线所形成的走势区间。所谓的突破,也就是指今日盘中股价高过了上线。参见下图:







37a3b90f2360b7155f4a8156c60cd9e2.png

(55.14 KB, 下载次数: 0)



2017-3-9 20:09 上传
点击文件名下载附件








这里有个小插曲,为什么默认的N是20呢?这有个典故——神奇数字。Donchian在开发唐奇安通道的期间,碰巧阅读到整形外科医生Maxwel Maltz博士在1960年所作的“心理控制论”(这本书在1989年被重新发现)。Maltz博士称在整形外科手术过程中,患者最少需要21日来看到自己的新的容颜。这一事实震惊了Donchian,所以他也采用了这个说法。(小编也听说过,养成一个新的习惯需要21天嘛)

在聚宽平台实现这个策略,最好采用按分钟回测,这样可以准确的捕捉日内的买卖点,否则等日线的收盘价出来,说不定已经离突破很远了。同时请注意,在以往国外的实战当中,主要是在纽约和芝加哥的场内期货交易的,期货可以做多也可以做空,但是国内的股票只能买入和卖出,因此我们只能做向上突破。

止损

有了唐奇安通道,我们有了买入和卖出的依据了, 那么止损是干什么的呢?其实止损提出的初衷是,如果某笔交易是亏损的交易,造成的损失不要超过总仓位的k%。在完整的海龟系统里面,海龟用了一系列的公式进行仓位比例的计算,具体的内容可以参考下一节。
完整的海龟交易系统

完整的海龟交易系统包含以下内容:

1、市场:

原版海龟选择交易纽约和芝加哥的场内期货。筛选标准则是高流动性,我大A股市场当然也符合这个标准啦。

2、仓位:

这可以说是海龟交易系统最核心的部分。Richard Dennis期望通过市场的波动性水平来管理仓位。其构建了指数N来衡量波动性水平。指数的构建为以下四步

(注:如果暂时不能理解下面的公式,完全不用担心,这些都在代码中体现出来,大家可以在代码的实际使用中搞明白这些麻烦的公式)。

(1)True Range

TrueRange = Maximum(H−L,H−PDC,PDC−L)

公式中,True Range表示一天内的波动量,H为当日日内最高价,L为当日日内最低价,PDC为前一日收盘价。

(2)N

N = (19∗PDN+TR) / 20

公式中,TR为True Range,即一天内波动量,PDN为前一日的N值。此公式的真是含义为计算之前20天(包括今天在内)的N的平均值

(3)Dollar Volatility

DollarVolatility = N ∗ DollarsPerPoint

公式中,Dollar Volatility指的是波动的价格,Dollars per Point指的是标的股票每波动一个最小单位,1手股票的总价格变化量。在国内最小变化量是0.01元,1手是100股。所以Dollars per Point就是0.01×100=1

(4)Unit

Unit = 1% of Account / MarketDollarVolatility

公式中,Unit即为我们买卖的单位,1% of Account是总资产的1%,Market Dollar Volatility就是我们之前算出的Dollar Volatility,通过此公式计算出的Unit就是我们要买入的单位数量。此公式的意义是在一般情况下(市场波动率不大的时候),如果买入1Unit单位的资产,当天震幅使得总资产的变化不超过1%

3、入市:

海龟将所有资金分为两部分,一部分资金按系统一执行,一部分资金按系统二执行

系统一

(1)若当前价格高于过去20日的最高价,则买入一个Unit(注意是分钟回测)
(2)加仓:若股价在上一次买入(或加仓)的基础上上涨了0.5N,则加仓一个Unit

系统二

与系统一相一致,但当如破55日最高价时才购买

(1)若当前价格高于过去55日的最高价,则买入一个Unit(注意是分钟回测)
(2)加仓:若股价在上一次买入(或加仓)的基础上上涨了0.5N,则加仓一个Unit

Example:若某只股票A的N为2,20日最高价为100
则当股价突破100时买入一个Unit,当股价突破100+0.5×2=101时加仓一个Unit,当股价突破101+0.5×2=102时加仓一个Unit。

4、止损:

即损失达到多少时就一定要卖出现有仓位。海龟交易系统规定,当价格比最后一次买入价格下跌2N时,则卖出全部头寸止损(也就是,在一般情况下,损失不会超过2%)。

5、止盈:

系统一

当股价跌破10日内最低价时(10日唐奇安通道下沿),清空头寸结束本次交易

系统二

当股价跌破20日内最低价时(20日唐奇安通道下沿),清空头寸结束本次交易

6、技巧:

资金的调整。开始时设定两个比例:Loss和Adjust。若交易结束后损失的资金占总资金比例大于Loss,则今后只用现有投资资金的Adjust比例。
Example:若初始资金为100万,设定Loss=80%,Adjust=90%。则当总资产低于100×80%=80万时,进行一次资金调整,以后只使用80×90%=72万的资金用于投资行为

你以为到这里就完了吗?嘿嘿,too young too simple

还有很多复杂的情况,你考虑到了嘛?比如说,通道上沿是昨天的,如果当天分钟价格反复在通道上下震荡,一个不小心就会造成反复的买入。再比如,如果当天刚刚买入,马上又要止损,但是日内不能卖出,我们明天要怎么处理呢?再比如说,如果今天要买入5000手,但实际情况下我们只能买入4000手,剩下的1000手我们要怎么处理呢?是明天补充,还是就此忽略?我们现在是设置的统一的止损线,我们是否可以对买入的每一次单都设置一个单独的止损线呢?

这些问题,没有标准的解法,你可以有自己的处理措施,但是小编只是想说:编写一个完整的策略,一定要思考到位。

小编在这里也只是列出了一部分问题,怎么解决这些问题就暂时留给各位读者作为家庭作业了!







8fdbe1b9daa42dbf8fb7be7dcfe10243.jpg

(71.39 KB, 下载次数: 0)



2017-3-9 20:16 上传
点击文件名下载附件














8fdbe1b9daa42dbf8fb7be7dcfe102431.jpg

(36.03 KB, 下载次数: 3)



2017-3-9 20:16 上传
点击文件名下载附件








【策略案例代码】





本资源来源于 网络 付费网站  付费收集而来, 随时收集更新资源  本站专注搜集和分享各种付费网站资源,感谢您的信任


资源下载地址:
游客,如果您要查看本帖隐藏内容请回复>>>开通VIP无需回帖直接下载VIP通道

本站所有资源都来源于网络收集,网友提供或者交换而来!

如果侵犯了您的权益,请及时联系客服,我们即刻删除!




上一篇:Python金融量化交易实战
下一篇:脑科学家妈妈洪兰35讲:破除育儿谣言,打造孩子核心竞争力
回复

使用道具 举报

客服客服

客服客服

客服客服

客服QQ
微信扫一扫
自助开通会员后联系客服