SF24 | 海龟交易策略的“宽窄”改进版

松鼠宽客
2020-12-31


公众号致力于分享量化策略,培训视频,Python,程序化交易等相关内容如果你喜欢本文,麻烦分享关注一下公众号非常感谢


赠言

“我有活儿,所以我还活着”

再见,2020



『正文』

ˇ

海龟简介

海龟交易法是著名的公开交易系统,1983年著名的商品投机家理查德. 丹尼斯在一个交易员培训班上推广而闻名于世,它涵盖了交易系统的各个方面。其法则覆盖了交易的各个方面,并且不给交易员留下一点主观想象决策的余地。它具备一个完整的交易系统的所有成分。

海龟交易策略,利用唐安奇通道来跟踪趋势产生买卖信号,利用ATR(真实波幅均值)分批加仓或者减仓,并且动态进行止盈和止损。

唐奇安通道

在趋势信号的扑捉上,海龟交易法则使用了一个非常重要的技术指标—唐奇安通道(Donchian channel)。这个通道很类似我们熟悉的布林通道(Bollinger Bands),只是在具体计算方式上有些不一样。

唐奇安通道指标是Richard Donchian发明的,由3条不同颜色的曲线组成,该指标用周期(一般都是20,有的平台系统设置时可以改变的,有的则设置的不可以)内的最高价和最低价来显示市场价格的波动性,当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大。

当价格冲破该通道的上轨道时,就是可能的买入信号;反之,冲破下轨时就是可能的卖出信号。

唐奇安通道的各项指标的计算方法为:

上轨 = Max(最高低,n), n日最高价的最大值
下轨 = Min(最低价,n), n日最低价的最小值


#短周期区间

DonchianHi = HighestFC(High[1],boLength);

DonchianLo = LowestFC(Low[1],boLength);

#长周期区间

fsDonchianHi = HighestFC(High[1],fsLength);

fsDonchianLo = LowestFC(Low[1],fsLength);


头寸计算:


海龟策略根据账户资金情况结合ATR动态调节投入的保证金计算手数,这个模块非常经典,很多CTA策略都在借鉴使用;

AvgTR = XAverage(TrueRange,ATRLength);N = AvgTR[1];TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());TurtleUnits = IntPart(TurtleUnits); // 对小数取整


动态止损:


海龟交易策略充分利用了ATR指标,2倍ATR做为波幅来动态调整止损位置:


#多头持仓,当价格跌破开仓价-2*ATR止损出场Low <= preEntryPrice - 2 * N #空头持仓,当价格突破开仓价+2*ATR止损离场High >= preEntryPrice + 2 * N


移动出场:


海龟策略用10日的高低点作为离场条件:



ExitLowestPrice = LowestFC(Low[1],teLength);ExitHighestPrice = HighestFC(High[1],teLength);#多头持仓,跌破10日低点清空全部仓位Low < ExitLowestPrice#空头持仓,突破10日高点清空全部仓位High > ExitHighestPrice


加仓模块:


加仓模块比较有意思,它是一个循环加仓的设定,当有底仓的时候最新价格高于(低于)进场价格的0.5倍ATR并且小于最大加仓次数。


while(High >= preEntryPrice + 0.5*N && CurrentEntries < nEntries) // 以最高价为标准,判断能进行几次增仓{   myEntryPrice = preEntryPrice + 0.5 * N;   preEntryPrice = myEntryPrice;   if(False == Buy(TurtleUnits,myEntryPrice))   {    break;   }   SendOrderThisBar = True;}


总结


海龟交易作为经典策略,为交易者提供了完整的策略编写框架。在波动率放大的趋势中使用循环加仓模块可以带来非常爆炸的利润,但是在波动率较窄的震荡市中可以把脸给你赔肿了。正所谓盈亏同源好坏参半,加仓模块的使用要非常谨慎,好不容易积累的利润因为加仓使得抗波动能力降低,稍有冲击利润回吐明显,最后可能亏损出场。对,海龟最大的一个问题就是利润回吐。除了加仓的问题,更多的是出场设计的比较鸡肋。移动止损和10日高低点极不适应市场,过于死板且并不理想。


改进思路:


  1. 开仓条件过于简单,加入过滤模块;

  2. 为了保住累计利润增加抗波动能力,屏蔽循环加仓;

  3. 删除原有出场模块,使用动态出场替代;


过滤模块:


海龟策略本身的参数较多,影响了普适性。为了不增加多余的优化参数,我们借鉴一下SF23的趋势模块过滤,本身都是通过HHV和LLV计算的,所以不用增加可变参数了。


condRHL=HL<>HL[1];   If(condRHL)   {    R_HL=HL[1];    X=X+1;    sumAG=sumAG+HL[1];    If(X>2)    {      HLAverage=sumAG/X;      sumAG=0;      X=0;    }   }

上面的是基础算法,但是具体条件的使用还是有不一样的;

if(condRHLAverage){   RHLAverage=HLAverage[1];}A_condD=HLAverage>RHLAverage andRHLAverage>0 and HLAverage>0;A_condK=HLAverage<RHLAverage and RHLAverage>0 and HLAverage>0;

如下图



“宽窄”移动出场


我们知道,海龟的初始开仓分为短周期开仓和长周期开仓,这里我们默认只用短周期开仓,关于长周期的那个区间我们当作调节出场参数的滤波器来使用吧。


思路:长周期和短周期区间本身就是波动幅度变化的动态指标,持有仓位时如果价格在短区间内波动,使用默认出场参数。如果突破了长周期,说明波动率开始放大了,这个时候我们开始调节收敛参数,保住利润。因为开仓条件简单,在趋势中即使止盈出场,也有很多机会再次加入趋势。有些模型在趋势中的交易次数太少,一旦踏空可能2,3个月没有信号。趋势拿的稳固然没错,但是交易信号太少,可操作性不大,波段循环操作更为合理一点。


      Dcond_outTrs=CrossOver(C[1],fsDonchianHi[1]);      Commentary("fsDonchianHi="+Text(fsDonchianHi));      If(Dcond_outTrs and SendOrderThisBar==True)      {        out_range=TRS*XX;        SendOrderThisBar=False;      }


黄色部分是在短周期区间内的状态,红色部分是突破了长周期区间后的加速。


策略绩效



螺纹


动力煤


焦炭



纯碱


EB



白糖


淀粉


鸡蛋


其他平台_螺纹:


MC:



文华8:


提供源码



结语


朋友们,我们2021年再会!



End


咨询详情



长按下方二维码

加客服“小松鼠-松鼠宽客”
微信号: viquant01

对话框回复 SF24 咨询源码领取

(俱乐部加入→回复VIP)

加入松鼠俱乐部



----------------往期精彩内容----------------


算法策略专辑:

5.【算法策略】商品统计套利之趋势套利策略

4.【算法策略】傅里叶滤波结合跨周期波段模型

3.【日内模型】TBquant信号回测版本+python历史回测版源码

2.【日内模型】第二版本基于orderflow的盘口策略(完整源码)

1.【日内模型】基于orderflow的盘口策略开发帖

量化视频专辑:

视频教程 | 手把手系列之"Aberration"策略的优化与升级

视频教程 | 手把手系列之"震荡过滤"突破策略的优化与实现

量化研究专栏:

量化研究 | 来聊一下量化交易的人工干预、参数失效、筛选品种

量化研究 | 残差动量策略刻画与构建(二)

量化研究 | 残差动量策略刻画与构建(一)

量化研究 | 主连复权算法大揭秘[含公式算法]

量化研究 | 策略在指数与主连复权的差异化分析(三)

量化研究 | 策略在指数与主连复权的差异化分析(二)

量化研究 | 策略在指数与主连复权的差异化分析(一)

精品自动交易策略库(近期更新):
【SF23】| 朴实无华的Dual Thrust策略长期保持正期望收益
【SF22】| 来给你的交易策略加一个"变速箱",五挡起步那种

【SF21】| 利用PSY指标,我们来开发一个短线模型?

【SF20】| 来聊聊平仓离场的方法,如何构建高效,灵活,可靠的出场策略?

【SF19】| 基于VWAP(成交量加权平均价格)开发Alpha均线增强策略

【SF18】| MACD顶底背离+动态区间交易模型源码(技术贴)

【SF17】| 均线波动差构建交易策略

【SF16】| "凹凸"均线形态交易策略源码(技术帖)

【SF15】| 波峰波谷交易策略结合ER降噪过滤

【SF14】| Supertrend“超级趋势线”指标魔改升级(源码)
【SF13】| 实盘策略解密“小品种,小资金”在跑策略源码!

【SF12】| 全新波动率算法,自适应区间+波动率择时!

【SF11】| 成交量来确定阻力支撑点,基于Volume Profile构建交易策略

【SF10】| 如何构建一个胜率超过60%的短线螺纹策略(开发教程)

【SF09】| 资金流向交易策略源码,绩效突出,适应性兼容性强,5分钟交易模型;
【SF08】| 经典KD指标另类使用有奇效,股指商品双版本策略



祝点击在看的小伙伴,2021发大财

分享