第二章 编写量化交易策略
第二章 编写量化交易策略
第一节 什么是“海龟交易策略 ”交易策略?
第二节 海龟交易策略的改进
股指期货的海龟交易策略编写及迭代
第一节 什么是“海龟交易策略 ”交易策略?
海龟交易法是著名的公开交易系统,1983年著名的商品投机家理查
德. 丹尼斯在一个交易员培训班上推广而闻名于世,它涵盖了交易系
统的各个方面。其法则覆盖了交易的各个方面,并且不给交易员留下
一点主观想象决策的余地。它具备一个完整的交易系统的所有成分。
海龟交易策略,利用唐安奇通道来跟踪趋势产生买卖信号,利用ATR
(真实波幅均值)分批加仓或者减仓,并且动态进行止盈和止损。
海龟简介
唐奇安通道
在趋势信号的扑捉上,海龟交易法则使用了一个非常重要的技术指标—唐奇安通道(
Donchian channel)。这个通道很类似我们熟悉的布林通道(Bollinger Bands),只是
在具体计算方式上有些不一样。
唐奇安通道指标是Richard Donchian发明的,由3条不同颜色的曲线组成,该指标用周期
(一般都是20,有的平台系统设置时可以改变的,有的则设置的不可以)内的最高价和最
低价来显示市场价格的波动性,当其通道窄时表示市场波动较小,反之通道宽则表示市场波
动比较大。当价格冲破该通道的上轨道时,就是可能的买入信号;反之,冲破下轨时就是可
能的卖出信号。
唐奇安通道
唐奇安通道的各项指标的计算方法为:
头寸计算
海龟策略根据账户资金情况结合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 * ATR
移动出场
海龟策略用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=HLHL[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=HLAverage0 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;
}
“宽窄”移动出场
黄色部分是在短周期区间内的状态,红色部分是突破了长
周期区间后的加速。
绩效结果
绩效结果
股指期货的波峰波谷交易策略
第一节 通道交易理论与波峰波谷
第二节 基于波峰波谷的交易策略
第三节 过滤假信号提升交易绩效
第一节 通道交易理论与波峰波谷
利用价格管道进行交易(简称管道交易)是一种简单而有效的交易方法,既适合
于新入市的投资者,也适合于各类不同程度的投资者。价格通道交易具有简单、
灵活、便以制定计划等特点。
在K线或竹线价格图中,商品价格客观地展现出各种各样的价格型态,例如三角形、旗
形、矩型、锲形、头肩形、W形、弧形、管道形、V形…等等,价格管道型态是其中最
常见的一种。
价格管道是商品价格在图形中的客观表征。价格管道要素
包括上管道线(图中的AB线段),下管道线(图中的CD
线段)和价格行进的图形轨迹等三个要素。价格行进轨迹
是市场行为和图表技术的集成,而上、下管道线是以实际
价格转折点为基础的技术处理产物。
价格通道交易方法:
1、顺势交易方法
适用于上升管道交易和下降管道交易。基本的交易理念是只跟随市场价格的趋势方向开新仓,
而当价格运行遇到管道线的阻挡时平仓了结交易。如图一中,当通过D1、D2、D3画出价格上升管道
后:
价格回到M1点时做买进开仓操作;
价格上升到上管道线的S2点时做卖出平仓操作;
当价格又回到下管道线的M2点时又做买入开仓操作;
价格上升到上管道线的S3点时做卖出平仓操作;
如此利用上升管道反复顺势交易。
在下降管道中的操作方法与在上升管道的操作相同,不同的只是交易方向相反。
这种顺势交易方法的特点是比较稳健,成功的概率较高,冒的风险较小,但交易机会相对减少,在同
一市场周期内获取的投资收益可能也较少,适合较稳健的投资者。
价格通道交易方法:
2.双向交易方法:
适用于各类价格管道,尤其适合于水平价格管道的交易。基本的交
易理念是不丢掉可能的交易机会,力争高效利用价格管道交易资讯
,不理会市场趋势。
例如图一中,当通过D1、D2、D3画出上升管道后,当价格上升
到上管道线S1点就做卖出开新仓操作,价格回落到下管道线M1点
时,在平仓了结卖出交易的同时买进开新仓,当价格又上升到上管
道线S2点时在平仓了结买进交易的同时做卖出开新仓操作,如此
利用价格管道进行双向反复交易。
这种双向交易方法表现很积极,如果配合好止损计划,就获得更多
的交易机会,同时可能获得更高的收益,但同时也存在更多的风险
,适合比较积极的承受风险能力强的投资者。这种交易方法在水平
管道中有很高的应用价值。TY:=C;
A1:=REF(TY,10)=HHV(TY,2*10+1);
B1:=FILTER(A1,10);
C1:=BACKSET(B1,10+1);
HD:=FILTER(C1,10);
A2:=REF(TY,10)=LLV(TY,2*10+1);
B2:=FILTER(A2,10);
C2:=BACKSET(B2,10+1);
LD:=FILTER(C2,10);
AZ1:=REF(C,BARSLAST(HD));
B:=REF(C,BARSLAST(LD));
T1:=BARSLAST(HD);//WWW.CXH99.COM
T2:=BARSLAST(HD)>BARSLAST(LD) AND NOT(LD);
波峰
:IF(T1,AZ1,AZ1),POINTDOT,COLOR0000FF,LINETHI
CK7;
STICKLINE(T1,AZ1,AZ1,9,0),COLOR0000FF,LINETHI
CK7;
波谷
:IF(T2,B,B),COLOR80FF00,POINTDOT,LINETHICK7;
STICKLINE(T2,B,B,9,0),COLOR80FF00,LINETHICK7;
第二节 基于波峰波谷的交易策略第三节 过滤假信号提升交易绩效条件一:出现波谷的时候做多,出现波峰的
时候做空,设置开关KG
条件二:KG=1并且价格突破HH或者LL
满足俩个条件后开仓对比 版本一 版本二
对比 版本一 版本二
本文信息仅用于投资者教育公益性目的,不构成对投资者的任何投资建议,投资者不应
当以该等信息取代其独立判断或仅根据该等信息做出决策。本文信息力求准确可靠,但对这
些信息的准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任
何责任。 课件内容及相关元素部分来源于网络,如涉及侵权,请联系删除。
感 谢
内容来自网友分享,若违规或者侵犯您的权益,请联系我们
所有跟帖: ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )
楼主前期社区热帖:
>>>>查看更多楼主社区动态...