量化交易从入门到精通:TOP交易员交易策略与实战手记
上QQ阅读APP看书,第一时间看更新

第一节 趋势&形态

周泽炜说

交易的本质是“价格”,指标只是用来描述价格变化的一种手段,是价格变化的“衍生品”。一个成熟的交易者应该学会使用自己的方式描述价格的变化。正如古代道家所讲的,太极生两仪,两仪生四象,四象生八卦。在交易中“价格”是本源,有了价格方有涨跌,有涨跌就有了趋势,有趋势后产生了形态,再然后才有了指标。

研究交易应该从本质出发,越接近交易本质的元素越纯粹,越没有加工的元素越真实。

而从指标出发其实是一种舍近求远的方式。市场上大多数的人,由于没有经历系统的学习,所以在分析和理解行情上往往一知半解,喜欢研究一些看似高端的技法或指标,然后就越走越远,甚至到最后发现自己做了很多年交易却还在原点,然后有了“技术无用论”。在交易前你要先搞懂一个命题“什么是技术”,如果你从头到尾连“技术”是什么都不了解,何谈技术无用?

技术是主观交易者的“信仰”,坚持信仰方得始终。如果你说技术无用,那你依据什么去进行交易呢,感觉?还是抛硬币?一个没有信仰的人是可怕的人,一个没有信仰的交易者是个失败的交易者。

K线语言

K线图是表示单位时间段内价格变化情况的技术分析图,所谓K线图,就是将各种股票每日、每周、每月的开盘价、收盘价、最高价、最低价等涨跌变化状况,用图形的方式表现出来。K线又称阴阳线、棒线、红黑线或蜡烛线,行情经过一段时间的盘档后,在图上即形成一种特殊区域或形态,不同的形态显示不同意义。我们可以从这些形态的变化中摸索出一些有规律的东西出来。K线图形态可分为反转形态、整理形态及缺口和趋向线等。K线图具有直观、立体感强、携带信息量大的特点,预测后市走向较准确,是现今应用较为广泛的技术分析手段。

读懂市场结构是读懂裸K图的基础,搞懂了市场结构,才能更好地把握市场的节奏,它是众多交易方法的返璞归真,一个回归市场本质的过程,但很多人都没有重视它。

市场结构是指将图表上的峰值高点和峰值低点排列连接起来,具体来说,就是将价格运行过程中的价格极值点都连接起来,形成一个上下波动的曲线。当曲线连接成功之后,就可以帮助你判断市场走势。

市场结构可以帮助你识别大多数交易者无法识别的东西,价格一般会出现以下几种市场结构:

① 正处上涨趋势中;

② 正处下跌趋势中;

③ 在两个水平位之间震荡(区间震荡);

④ 即将出现新趋势;

⑤ 正在筑底或筑顶。

将图表上的极值点连接成一条波动的曲线,可以帮助你建立技术分析的基础框架。

什么是大阳线、大阴线?

大阳线表示最高价与收盘价相同(或略高于收盘价),最低价与开盘价一样(或略低于开盘价),上下没有影线或影线很短。从一开盘,买方就积极进攻,中间也可能出现买方与卖方的斗争,但买方发挥最大力量,始终占优势,使价格一路上扬,直至收盘。大阳线的基本K线形态是开盘价近于整根K线的最低价,随后价格一路上扬至最高价处收盘,表示市场买方踊跃,涨势未尽。

大阴线又称作长阴线,特征是价格几乎以最高价开盘,最低价收盘,它表示多方在空方打击下节节败退,毫无招架之功。

大阴线、大阳线出现在行情不同阶段代表的不同意义

实战案例(国际黄金 2017 年 11 月 23 日~ 12 月 27 日):

高位大阴线——大阴大阳是一种对未来走势的信号,并与其出现的位置有一定关联。通常来讲,高位的大阴线信号作用较为强烈也较可靠。高位大阴线往往是行情的顶部即将或已经形成的信号,大阴线代表该交易时段的价格下跌没有受到多头的抵抗,收盘价越接近低位,实体的长度越长,信号越强烈,常被我们认为是空单进场最好的时机之一。

中部大阴线——在下跌过程中,价格是否有效突破支撑位置,这也是判断行情未来走势的重要依据之一。而行情中部大阴线就是跌破行情重要支撑位置的必要手段。在阴线跌破支撑后,支撑位就会转变为一个新的压力位。

末端大阴线——行情下跌末期出现的大阴线,往往被我们认为是价格触底反弹的一种信号。末端大阴线通常是行情底部即将形成或反转行情开始的信号。末端大阴线也是行情最后冲击持多单投资者集体止损位置的一种手段,试图摧毁持多单投资者的心理底线,也是较为常见的诱空方式。

量化交易策略“TOP7”:K线组合型量化策略

TOP7 策略是根据对于K线语言的应用编写的一套程序化策略。当第5 根阴线收盘于前 4 根上升趋势K线实体下方,则进场追空,止损为 5根K线最高点;当第 5 根阳线收盘于前 4 根下跌趋势K线实体上方,则进场追多,止损为 5 根K线最低点。

策略源码(MC语言:easy language)

input:KC(0.0032),KS(4),pls(0.0021),ply(0.0039),TT(12);

variables:var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),var6(0),var7(0);

var0=maxlist(open[KS],close[KS]);

var1=minlist(open[KS],close[KS]);

var2=maxlist(open[1],close[1]);

var3=minlist(open[1],close[1]);

condition1=var3>var0;

condition2=close<open;

condition3=close<var1;

condition4=open>var2;

condition5=open-close<KC*close;

condition6=var1>var2;

condition7=close>open;

condition8=open<var3;

condition9=close>var0;

condition10=close-open<KC*close;

if condition1 and condition2 then begin

if condition3 and condition4 and condition5 then begin

sellshort next bar at market;

var5=High;

var6=currentbar;

end;

end;

if condition6 and condition7 then begin

if condition8 and condition9 and condition10 then begin

buy next bar at market;

var7=Low;

var6=currentbar;

end;

end;

value1=(1-pls)*entryprice;

value2=(1+ply)*entryprice;

value3=(1+pls)*entryprice;

value4=(1-ply)*entryprice;

if currentbar>var6 then begin

sell ("Lzs") next bar at value1 stop;

sell ("Lzy") next bar at value2 limit;

buytocover ("Szs") next bar at value3 stop;

buytocover ("Szy") next bar at value4 limit;

end;

if currentbar>=var6+TT then begin

sell next bar at entryprice limit;

buytocover next bar at entryprice limit;

end;

测评数据如下:

策略应用软件:MultiCharts中国版

测试范围:沪深 300 指数中 300 只个股

历史回测周期:2002 ~ 2018 年日线数据

应用主要品种:中国A股

策略应用软件:MultiCharts中国版

测试范围:外汇、黄金

历史回测周期:2014 ~ 2018 年 1 小时数据

应用主要品种:欧元、英镑、加元、日元、纽元、瑞士法郎、黄金(由于各外汇平台报价的细微差异性可能破坏测试结果,因此我们最终决定使用国际期货报价进行测试)

策略应用软件:MultiCharts中国版

测试范围:国内期货

历史回测周期:2012 ~ 2018 年 1 小时数据

应用主要品种:铁矿石、螺纹钢、橡胶、甲醇、PTA、焦炭、豆粕。

量化交易策略“TOP35”:K线动能量化策略

TOP35 量化策略是根据K线的动能原理设计的一套逻辑简单普适性较高的策略。我们设计了以下指标描述K线的动能原理。

指标源码(MC语:easy language)

inputs:dx(72);

variables:var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),var6(0),var7(0) ,var8(0),oParCl(0),oParOp(0),oPostion(0),oTransition(0),mp(0),var11(0),v ar12(0);

var1=high-low;

应变量 1=K线最高价-K线最低价

var2=Average(var1,dx);

应变量 2=应变量 1 的DX加权平均(计算DX个周期K线的平均波幅)

ifclose>openandhigh-close<close-lowthenbegin

var3=close-low;

end;

如果K线是阳线同时满足K线最高价-收盘价<收盘价-最低价

上涨动能应变量 3=收盘价-最低价

ifclose<openandclose-low>high-closethenbegin

var3=close-low;

end;

如果K线是阴线同时满足K线收盘价-最低价>最高价-收盘价

上涨动能应变量 3=收盘价-最低价

ifclose<openandclose-low<high-closethenbegin

var3=high-close;

end;

如果K线是阴线同时满足K线收盘价-最低价<最高价-收盘价

下跌动能应变量 3=最高价-收盘价

ifclose>openandhigh-close>close-lowthenbegin

var3=high-close;

end;

如果K线是阳线同时满足K线最高价-收盘价>收盘价-最低价

下跌动能应变量 3=最高价-收盘价

plot2(var3);

plot4(var2);

ifclose>openandhigh-close<close-lowthenSetPlotColor(2,red);

ifclose<openandclose-low>high-closethenSetPlotColor(2,red);

ifclose<openandclose-low<high-closethenSetPlotColor(2,green);

ifclose>openandhigh-close>close-lowthenSetPlotColor(2,green);

上图指标中,白色横线为DX周期K线的平均波幅。我们认为当K线高于平均波幅时代表K线动能超过正常标准,因此将此定义为触发趋势行情的一种信号。可通过结合其他信号设计交易策略。

策略核心逻辑:

通过飞跃线判断开仓范围、K线动能指标发出信号结合价格突破重要高低点(即大阳线或大阴线突破重要支撑阻力)进场顺势开单,以自适应均线做离场。

飞跃线源码(MC语言:easy language)

inputs:ma(49);

variables:var5(0),var6(0),var7(0),var8(0);

var5=highest(high[1],ma);

应变量var5=ma个周期内前一根K线的最高点;

var6=Lowest(low[1],ma);

应变量var6=ma个周期内前一根K线的最低点;

var7=(var5+var6)/2;

var8=Average(var7,ma);

应变量var8=应变量var7 在ma周期的算数平均(让var7 变得平滑)

测评数据如下:

策略应用软件:MultiCharts中国版

测试范围:铁矿石、螺纹钢、橡胶、甲醇、PTA、焦炭、豆粕、白糖、棕榈油。

历史回测周期:2012 ~ 2018 年 15 分钟数据

应用主要品种:国内期货

策略应用软件:MultiCharts中国版

测试范围:沪深 300 指数中 300 只个股

历史回测周期:2012 ~ 2019 年日线数据

应用主要品种:中国A股

量化交易策略“TOP37”:动能反转量化策略

总有人问,为什么绞尽脑汁设计的量化策略,却总是经不起实盘的考验?思路如此严密,考虑如此周全,却为何还是事与愿违?

周泽炜说

写策略就像是谈恋爱,一个好的策略逻辑往往都特别简单。就像爱情,很多时候没什么道理可讲,也许就是一个回眸,一个微笑。

我们对K线动能进行了新一次的发掘,开发了TOP37“动能反转策略”。从策略名称我们可以大致得出这个策略是根据反转K线动能进行的开发。

我们认为行情中的大阴线大阳线大多伴随较大成交量而产生,而巨大成交量背后往往隐含机构或主力大量的资金的推动,即机构主力的交易成本。那么我们主观认为,大阳线大阴线的涨跌起点为行情重要多空分界位置,不知可否呢?

我们首先计算出长期K线的平均真实波幅ATR,描述当单根K线价格出现大于平均波幅N倍涨跌,锁定大阴线最高价、大阳线最低价为多空分界位置。当价格有效反向击穿此多空位置顺势进场交易。根据SAR指标设计出场。

策略源码(MC语言:easy language)

inputs:bs(3),ma(138);

variables:var0(0),var1(0),var2(0),var3(0),var4(0),var5(0),

oParCl(0), oParOp(0), oPostion(0), oTransition(0), var7( 0 );

var0=Average(high[1]-low[1],48);

var3=Average((close+high+low)/3,ma);

condition1=high-close>bs*var0 ;

condition2=close-low>bs*var0 ;

if condition1 then begin var1=high;

end;

if condition2 then begin var2=low;

end;

if open>var3 and close cross above var1 then buy("1") next bar at market;

if open<var3 and close cross under var2 then sellshort("2") next bar at var2 stop;

Value1 = ParabolicSAR(0.02, 0.2, oParCl, oParOp, var7, oTransition);

if marketposition=1 and var7=-1 and var7[1]=1 then sell next bar at market;

if marketposition=-1 and var7=1 and var7[1]=-1 then buytocover next bar at market;

测评数据如下:

策略应用软件:MultiCharts中国版

测试范围:铁矿石、螺纹钢、橡胶、甲醇、PTA、焦炭、豆粕、白糖、棕榈油。

历史回测周期:2012 ~ 2019 年 15 分钟数据

应用主要品种:国内期货

手续费设计:万 2 手续费(覆盖 2 个滑点)

测试范围:沪深 300 指数中 300 只个股

历史回测周期:2012 ~ 2019 年日线数据

应用主要品种:中国A股

手续费设计:千一