补充经典程序化交易策略.docx
《补充经典程序化交易策略.docx》由会员分享,可在线阅读,更多相关《补充经典程序化交易策略.docx(55页珍藏版)》请在冰点文库上搜索。
补充经典程序化交易策略
经典程序化交易策略
日内策略】DualThrust
策略:
DualThrust
类型:
日内
DualThrust与R-Breaker一样,曾长期排名 FutureTrust杂志最赚钱的策略。
该策略在形式上和开盘区间突破策略类似。
不同点主要体现在两方面:
DualThrust在Range(代码中的浮动区间)的设置上,引入前N日的四个价位,使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪;DualThrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期数,也可以通过参数K1和K2来确定。
当K1时,多头相对容易被触发,当K1>K2时,空头相对容易被触发。
因此,投资者在使用该策略时,一方面可以参考历史数据测试的最优参数,另一方面,则可以根据自己对后势的判断,或从其他大周期的技术指标入手,阶段性地动态调整K1和K2的值。
代码(金字塔语言):
TB,WH3,大智慧,matlab,EVIEW(R2)
//策略:
DualThrust
//类型:
日内
//中间变量
input:
n(1,1,100,1),K1(0.7,0.1,1,0.1),k2(0.7,0.1,1,0.1),nmin(10,1,100,1),ss(1,1,100,1);
CYC:
=barslast(date<>ref(date,1))+1;
昨高:
=callstock(stklabel,vthigh,6,-1);
昨低:
=callstock(stklabel,vtlow,6,-1);
昨收:
=callstock(stklabel,vtclose,6,-1);
开盘价:
=valuewhen(cyc=1,open);
HH:
=hhv(昨高,n);//N日high的最高价
HC:
=hhv(昨收,n);//N日close的最高价
LC:
=LLV(昨收,n);//N日close的最低价
LL:
=LLV(昨低,n);//N日low的最低价
浮动区间:
=max(HH-LL,HC-LL);//range
上轨:
开盘价+k1*浮动区间;
下轨:
开盘价-K2*浮动区间;
t1:
=time>opentime
(1)andtime
t2:
=time>=closetime(0)-nmin*100;
手数:
=ss;
//交易条件
开多条件:
=c>上轨andholding=0;
开空条件:
=c<下轨andholding=0;
//交易系统
开多:
buy(开多条件andt1andcyc>1,手数,market);
开空:
buyshort(开空条件andt1andcyc>1,手数,market);
收盘平多:
sell(t2,手数,market);
收盘平空:
sellshort(t2,手数,market);
这个策略已有很多个版本,这个版本——引入了前N日的四个价位,以及K1、K2参数。
默认参数设置与现有策略一致,为前一日,K1=k2=0.7.
【经典策略】海龟交易系统
海龟交易系统相对而言是一个比较早的交易系统了,也是世界著名的机械交易系统,对于想学习程序化系统交易的投资者来说是一个很好的入门学习材料。
一套完整的机械的交易系统都有明确并且唯一的交易信号,例如两条均线就构成了一个交易系统,只不过它更好的说是属于技术指标的范畴。
而完整的交易系统所持头寸(仓位)调整和风险控制是交易系统的核心,而海龟交易系统就是这样一套交易系统。
海龟交易系统简介:
交易信号:
海龟的交易信号其实很简单,当价格创20或50天新高就买入,当价格创10天或20天新低就卖出,时间上具体的参数使用者也可以自己调整。
头寸管理和风险控制策略:
海龟交易系统由总资金风险百分比和N波动的系数策略来决定交易头寸的多少,用N确定什么时候加仓、加多少,同时用2N来确定头寸的保护性损止。
N每7天调整一次(五个交易日)。
这就是海龟交易系统的交易策略,属于一套完整的交易系统。
下面是海龟交易系统测试版的编程源码。
以下代码为金字塔语言:
Buy(BB)是买入的股票的数量(含加码部分总共最多4次),Sell()是卖出全部的股票数量。
总资金以100万为例。
海龟交易系统修正版:
该版本主要改进之处是在N的算法上直接用语句实现,因为SMA函数首次的N即PDN取值是不海龟交易系统所说的20日简单均线,所以会造成误差,而改进后更符合原意。
我们在这里说的N、PDN等等,对假如没看过海龟法则的投资者而言可能无法理解,所以在了解源码之前可以先看看海龟法则。
以下是修正版的程序:
//turtle
J:
=1;
I:
=1;
P:
=1;
TR:
=MAX(H,C)-MIN(L,C);
IFBARPOS>=20THEMBEGIN
IFBARPOS=20THENN:
=MA(TR,20);
IFP=5ORBARPOS=20THENBEGIN
N:
=(19*N+TR)/20;
P:
=1;
END
P:
=P+1;
IFH=HHV(H,20)&&J=1THENBEGIN
HOW:
=CASH*0.01/N;
BPK(HOW);
J:
=0;
END
L:
=LLV(L,10)&&J=0THENBEGIN
SP;
J:
=1;
I:
=1;
END
IFC-ENTERPRICE>=(N/2)&&i<4&&J=0THENBEGIN
HOW:
=CASH*0.01/N;
BK(HOW);
I:
=I+1
END
IFENTERPRICE-C>=(2*N)THENSP;
END
原版海龟交易法则
[2009-11-0123:
19:
17]
标签:
无 阅读对象:
所有人
导言
海龟实验
理查德.丹尼斯想弄清楚伟大的交易员是天生造就的还是后天培养的。
一个老生常谈:
天性还是培养?
1983年年中,著名的商品投机家理查德.丹尼斯与他的老友比尔.埃克哈特进行了一场辩论,这场辩论是关于伟大的交易员是天生造就还是后天培养的。
理查德相信,他可以教会人们成为伟大的交易员。
比尔则认为遗传和天性才是决定因素。
为了解决这一问题,理查德建议招募并培训一些交易员,给他们提供真实的帐户进行交易,看看两个人中谁是正确的。
他们在《巴伦氏》、《华尔街期刊》和《纽约时报》上刊登了大幅广告,招聘交易学员。
广告中称,在一个短暂的培训会后,新手将被提供一个帐户进行交易。
因为里克(理查德的昵称)或许是当时世界上最著名的交易员,所以,有1000多位申请人前来投奔他。
他会见了其中的80位。
这一群人精选出10个人,后来这个名单变成13个人,所增加的3个人里克以前就认识。
1983年12月底,我们(译注:
作者当时是参加培训的学员之一)被邀请到芝加哥进行两周的培训,到1984年1月初,我们开始用小帐户进行交易。
到了2月初,在我们证明了自己的能力之后,丹尼斯给我们中的大多数人提供了50万至200万美元的资金帐户。
"学员们被称为'海龟'(丹尼斯先生说这项计划开始时他刚刚从亚洲回来,他解释了自己向别人说过的话,'我们正在成长为交易员,就象在新加坡他们正在成长为海龟一样')。
"----斯坦利.W.安格瑞斯特,《华尔街期刊》,1989年9月5日
海龟成为交易史上最著名的实验,因为在随后的四年中我们取得了年均复利80%的收益。
是的,里克证明了交易可以被传授。
他证明了用一套简单的法则,他可以使仅有很少或根本没有交易经验的人成为优秀的交易员。
继续往下读。
从下一章开始,接下来就是丹尼斯传授给新手们的那一套完整的法则。
第一章
完整的交易系统
海龟交易系统是一个完整的交易系统,它包括了交易的各个方面,实际上没有给交易员留下一点主观想象决策的余地。
大多数成功的交易员都使用机械交易系统。
这并非偶然。
一个良好的机械交易系统可以自动运行整个交易程序。
对于交易员在交易中必须制定的每项决策,系统都会给出答案。
该系统使交易员更容易进行一致性的交易,因为有一套明确说明应该做什么的法则。
交易的机械化就是不留给交易员自己进行判断。
如果你知道自己的系统能够长期赚钱,你就比较容易接受信号,并且在亏损期间按照系统信号进行交易。
如果你在交易中依赖自己的判断,你可能会发现恰恰应该勇敢时你却胆怯,而恰恰应该小心翼翼时你却勇气十足。
如果你有一个机械交易系统在发挥作用而且你一致地跟随它,那么,尽管可能有来自于一长串亏损或者巨额赢利的内心的挣扎,你的交易都将是一致的。
自信、一致性以及由彻底检测过的机械交易系统所保证的纪律,是大多数能够赢利的交易员成功的关键。
海龟交易系统是一个完整的交易系统。
其法则覆盖了交易的各个方面,并且不给交易员留下一点主观想象决策的余地。
它具备一个完整的交易系统的所有成分。
一个完整系统的成分
一个完整的交易系统包含了成功的交易所需的每项决策:
·市场----买卖什么
·头寸规模----买卖多少
·入市----何时买卖
·止损----何时退出亏损的头寸
·离市----何时退出赢利的头寸
·策略----如何买卖
市场----买卖什么
第一项决策是买卖什么,或者本质上在何种市场进行交易。
如果你只在很少的几个市场中进行交易,你就大大减少了赶上趋势的机会。
同时,你不想在交易量太少或者趋势不明郎的市场中进行交易。
头寸规模----买卖多少
有关买卖多少的决策绝对是基本的,然而,通常又是被大多数交易员曲解或错误对待的。
买卖多少既影响多样化,又影响资金管理。
多样化就是努力在诸多投资工具上分散风险,并且通过增加抓住成功交易的机会而增加赢利的机会。
正确的多样化要求在多种不同的投资工具上进行类似的(如果不是同样的话)下注。
资金管理实际上是关于通过不下注过多以致于在良好的趋势到来之前就用完自己的资金来控制风险的。
买卖多少是交易中最重要的一个方面。
大多数交易新手在单项交易中冒太大的风险,即使他们拥有其他方面有效的交易风格,这也大大增加了他们破产的机会。
入市----何时买卖
何时买卖的决策通常称为入市决策。
自动运行的系统产生入市信号,这些信号说明了进入市场买卖的明确的价位和市场条件。
止损----何时退出亏损的头寸
长期来看,不会止住亏损的交易员不会取得成功。
关于止亏,最重要的是在你建立头寸之前预先设定退出的点位。
离市----何时退出赢利的头寸
许多当作完整的交易系统出售的"交易系统"并没有明确说明赢利头寸的离市。
但是,何时退出赢利头寸的问题对于系统的收益性是至关重要的。
任何不说明赢利头寸的离市的交易系统都不是一个完整的交易系统。
策略----如何买卖
信号一旦产生,关于执行的机械化方面的策略考虑就变得重要起来。
这对于规模较大的帐户尤其是个实际问题,因为其头寸的进退可能会导致显著的反向价格波动或市场影响。
摘要
对于一致性赚钱的交易,使用机械系统就是最佳的方式。
如果你知道自己的系统能够长期赚钱,你就比较容易接受信号,并且在亏损期间按照系统信号进行交易。
如果你在交易中依赖自己的判断,你可能会发现恰恰应该勇敢时你却胆怯,而恰恰应该胆怯时你却勇敢。
如果你拥有一个能够赢利的机械交易系统,而且你虔诚地跟随这个系统,那么,你的交易将会取得赢利,而且系统会帮助你安然摆脱难免会来自于一长串亏损或者巨额赢利的内心的挣扎。
海龟所用的交易系统是一个完整的交易系统。
这是我们取得成功的一个主要因素。
我们的系统使我们更容易地进行一致性的、成功的交易,因为它没有给交易员的判断力留下重要的决策任务。
第二章
市场:
海龟交易什么
海龟交易的是在美国芝加哥和纽约交易所交易的具有流动性的期货。
流动性海龟们用于确定能够参与交易的期货品种的主要标准就是构成市场基础的流动性。
海龟是期货交易员,在当时更普遍地称为是商品交易员。
我们在美国人气最旺的商品交易所交易期货合约。
因为我们交易的规模高达数百万美元,所以我们不能在那些每天只能交易几百张合约的市场交易,因为那会意味着我们发出的指令会造成市场的大幅波动,结果是我们不承受巨大的损失就难以进出头寸。
海龟只在流动性最好的市场进行交易。
一般,海龟在除谷物和肉类以外美国所有具有流动性的市场进行交易。
因为理查德.丹尼斯自己的帐户已经达到了交易头寸限额,所以,他无法允许我们在不超过交易头寸限额的情况下为他交易谷物。
我们不交易肉类是因为肉类交易厅中存在着场内交易员腐败的问题。
在海龟解散几年之后,联邦调查局(FBI)在芝加哥肉类交易厅开展了一场大规模的针刺行动(stingoperation),指控多名交易员涉嫌价格操纵及其他形式的腐败行为。
以下是海龟参与交易的期货市场的清单:
芝加哥期货交易所(CBOT)
·30年期美国长期国债(TreasuryBond)
·10年期美国中期国库券(TreasuryNote)
纽约咖啡可可与原糖交易所(NYCSC)
·咖啡
·可可
·原糖
·棉花
芝加哥商品交易所(CME)
·瑞士法郎
·德国马克
·英镑
·法国法郎
·日圆
·加拿大元
·标准普尔500股票指数
·欧洲美元
·90天美国短期国库券(TreasuryBill)
纽约商品期货交易所(COMEX)
·黄金
·白银
·铜
纽约商业期货交易所(NYMEX)
·原油
·燃油
·无铅汽油
海龟被给予可自行决断不参与清单中任何一种商品交易的自由。
不过,如果某个交易员决定不参与某个特定市场的交易,那么,他根本就不参与该市场的交易。
我们得到建议,不要不一致地参与市场交易。
第三章
头寸规模
海龟将一个基于波动性的常数百分比用作头寸规模风险的测算标准。
头寸规模是所有交易系统最重要的部分之一,但也是最不为人理解的部分。
海龟所用的头寸规模测算标准在当时非常先进,因为通过调整以市场的美元波动性为基础的头寸规模,该测算标准使头寸的美元波动性标准化。
这意味着在以美元表示的数量相同的特定交易日,特定的头寸往往会上下波动(与其他市场的头寸相比),不考虑特定市场根本的波动性。
这是实际情况,因为在每张合约上下波动剧烈的市场中的头寸与波动性较低的市场中的头寸相比,会抵消较少的合约数。
这种波动性的标准化是非常重要的,因为这意味不同的市场中不同的交易对于特定的美元损失或特定的美元收益往往具有相同的机会。
这就提高了在多个市场间进行多样化交易的效果。
即使某个特定市场的波动性较低,但是,任何明显的趋势都会带来相当大的赢利,因为海龟会更多地持有这种低波动性商品的合约。
波动性----N的含意
海龟用一个理查德.丹尼斯和比尔.埃克哈特称之为N的概念来表示某个特定市场根本的波动性。
N就是TR(TrueRange,实际范围)的20日指数移动平均,现在更普遍地称之为ATR。
从概念上来看,N表示单个交易日某个特定市场所造成的价格波动的平均范围,它说明了开盘价的缺口。
N同样用构成合约基础的点(points)进行度量。
每日实际范围的计算:
TR(实际范围)=max(H-L,H-PDC,PDC-L)
式中:
H-当日最高价
L-当日最低价
PDC-前个交易日的收盘价
用下面的公式计算N:
N=(19×PDN+TR)/20
式中:
PDN-前个交易日的N值
TR-当日的实际范围
因为这个公式要用到前个交易日的N值,所以,你必须从实际范围的20日简单平均开始计算初始值。
价值量波动性的调整
确定头寸规模的第一步,是确定用根本的市场价格波动性(用其N值定义)表示的价值量波动性。
这听上去比实际情况更复杂。
价值量波动性用下面简单的公式确定:
价值量波动性=N×每点价值量
波动性调整后的头寸单位
海龟按照我们所称的单位(Units)建立头寸。
单位按大小排列,使1N代表帐户净值的1%。
因此,特定市场或特定商品的单位可用下面的公式计算:
单位=帐户的1%/市场价值量波动性
或
单位=帐户的1%/(N×每点价值量)
示例
燃油(HO03H):
我们来看2003年3月份燃油的价格、实际范围及N值:
日期最高价最低价收盘价实际范围N
200211020.72200.71240.71240.00960.0134
200211040.71700.70730.70730.00970.0132
200211050.70990.67230.67230.01760.0134
200211060.69300.68000.68380.01300.0134
200211070.69600.67360.67360.02240.0139
200211080.68200.67060.67060.01140.0137
200211110.68200.67100.67100.01140.0136
200211120.67950.67200.67440.00850.0134
200211130.67600.65500.66160.02100.0138
200211140.66500.65850.66270.00650.0134
200211150.67010.66200.67010.00810.0131
200211180.69650.67500.69650.02640.0138
200211190.70650.69440.69440.01210.0137
200211200.71150.69440.70870.01710.0139
200211210.71680.71000.71240.00810.0136
200211220.72650.71200.72650.01450.0136
200211250.72650.70980.70980.01670.0138
200211260.71840.71100.71840.00860.0135
200211270.72800.72000.72280.00960.0133
200212020.73750.72270.73590.01480.0134
200212030.74470.73100.73890.01370.0134
200212040.74200.71400.71620.02800.0141
200212050.73400.72070.72840.01780.0143
2002年12月6日的单位大小(从12月4日起用N值0.0141)如下:
燃油
N=0.0141
帐户规模=1,000,000美元
每点价值量=42,000(以美元报价的42,000加仑合约)
单位大小=(0.01×1,000,000)/(0.0141×42,000)=16.88
因为我们不可能只交易部分的合约,所以,这一结果取整数为16张合约。
你可能会问:
"需要多久计算一次N值和单位大小?
"每周一,我们为海龟准备一份单位大小表,上面列出了我们所交易的各种期货合约的N值和单位大小。
头寸规模的重要性
多样化就是努力在诸多投资工具上分散风险,并且通过增加抓住成功交易的机会而增加赢利的机会。
适当的多样化要求我们在多种不同的投资工具上进行类似的(如果不是同样的话)下注。
海龟系统用市场波动性来度量每个市场有关的风险。
然后,我们用这一风险量度标准以表示风险(或波动性)的一个常数的增量来建立头寸。
这提高了多样化的收益,并且增加了赢利交易弥补亏损交易的可能性。
注意:
这种多样化在资金不足时很难实现。
考虑上面的例子,假定我们所用的是一个10万美元的帐户。
单位大小可能就是1张合约,因为1.688取整为1。
对于较小的帐户,调整的间距太大,这样会大大削弱多样化的效果。
作为风险量度标准的单位
因为海龟把单位用作头寸规模的量度基础,还因为那些单位已经过波动性风险调整,所以,单位既是头寸风险的量度标准,又是头寸整个投资组合的量度标准。
海龟被给予限制我们可以在任何特定的时间在四个不同的级别上持仓的单位数目的风险管理法则。
本质上,这些法则控制着交易员可能带来的全部风险,这些限制在亏损延长期间以及价格异常波动期间使损失最小化。
价格异常波动的一个例子是1987年10月股票市场崩盘的第二天。
头一天晚上,美联储将利率调低了几个百分点,用以提振股市及国民的信心。
海龟在利率期货上满仓做多:
欧洲美元、短期国库券及债券。
第二天损失惨重。
在某些情况中,20%-40%的帐户净值在一天之中就蒸发了。
但是,如果没有最大头寸限制,这些损失会相对更大。
最大头寸限制为:
级别类型最大单位
1单一市场4个单位
2高度相关市场6个单位
3低度相关市场10个单位
4单向交易-多头或空头12个单位
单一市场----每个市场最大为4个单位。
高度相关市场----对于高度相关的市场,在一个特定方向上最大可以有6个单位(即,6个多头单位或6个空头单位)。
高度相关市场包括:
燃油和原油;黄金和白银;瑞士法郎和德国马克;短期国