第4章 程序化交易的K线和均线模型
在金融市场中,K 线和均线分析是最基本的分析方法,也是所有投资者入市之初就必须掌握的内容。
本章主要内容包括:
· K线的组成和意义
· 大阳线程序代码编写技巧
· 穿头破脚程序代码编写技巧
· 吊颈线程序代码编写技巧
· 低开大阳线程序代码编写技巧
· 曙光初现程序代码编写技巧
· 好友反攻程序代码编写技巧
· 跳空缺口程序代码编写技巧
· 均线模型的编写技巧
4.1 K线模型的编写技巧
K 线是用来记录交易市场的行情价格的,因其形状如同两端有蕊芯的蜡烛,故而在西方国家称为蜡烛图(在我国习惯称为阴阳线)。
K 线起源于日本德川幕府时代(1710 年以后),当时日本大阪的堂岛大米会所开始经营世界上最早的期货合约,K线就是为记录大米每天涨跌的价格而发明的。
K 线实际上为考察市场心理提供了一种可视化的分析方法,它简洁而直观,虽不具备严格的逻辑推理性,但是却有相当可信的统计意义。它真实、完整地记录了市场价格的变化,反映了价格的变化轨迹。
4.1.1 K线的组成
K线是一条柱状的线条,由实体和影线组成。在实体上方的影线称为上影线,在实体下方的影线称为下影线。实体分阳线和阴线,当收盘价高于开盘价时,实体部分一般是红色或白色,称为阳线;当收盘价低于开盘价时,实体部分一般是绿色或黑色,称为阴线。
K 线的绘制也很简单,它由四个基本数据组成,分别是开盘价、最高价、最低价和收盘价。在日 K 线图中,“开盘价”就是某一个交易日开始进行交易时的第一笔成交价格;“最高价”就是某一个交易日成功交易的最高价格;“最低价”就是某一个交易日成功交易的最低价格;“收盘价”就是某一个交易日结束交易时的最后一笔成交价格。这四个基本数据的关系如图4.1所示。
图4.1 K线的基本数据
K 线具有直观、立体感强、携带信息量大的特点,它吸收了我国古代阴阳学说,蕴涵着丰富的东方哲学思想,能充分显示价格趋势的强弱和买卖双方力量平衡的变化,从而较准确地预测后市。
利用K线图,投资者可以对变化多端的市场行情有一目了然的直接感受。K线图最大的优点是简单易懂,并且运用起来十分灵活;它忽略了价格在变化过程中的各种纷繁复杂的因素,而将其基本特征显示在投资者面前。
4.1.2 K线的意义
K 线是一种无字天书,是一种阴阳交错的历史走势图,实际上包含着因果关系。从日 K 线图上看,上一个交易日是当前交易日的“因”,当前交易日是上一个交易日的“果”;而当前交易日又是下一个交易日的“因”,而下一个交易日是当前交易日的“果”。正是这种因果关系的存在,分析师才能根据 K 线的阴阳变化找出市场规律,并以此预测价格走势。
K线的规律是:一些典型的K线或K线组合出现在某一个位置时,价格将会按照某种趋势运行,当这些典型的K线或K线组合再次出现在类似位置时,就会重复历史的情况。例如,K 线底部出现早晨之星时,价格往往会由此止跌回升,掌握这个规律后,当次再遇到K线底部出现早晨之星时,就可以判断价格反转在即,认真分析行情后可以考虑择机建仓。
K 线的规律是投资者在长期实战操作中摸索出来的,作为刚入门的投资者,需要在学习别人经验的基础上通过实战来提高自己观察和分析K线的能力,只有这样才能掌握K线的规律,灵活应用K线。
4.1.3 大阳线程序代码编写技巧
大阳线可以出现在任何情况下,阳线实体较长,可略带上、下影线,如图4.2所示。
图4.2 大阳线
下面使用代码编写大阳线。首先编写阳线实体较长且没有上、下影线的大阳线,这样的大阳线的特征是:
· 开盘价为最低价,即X:=LOW=OPEN;
· 收盘价为最高价,即Y:=CLOSE=HIGH。
在这里假设大阳线上涨幅度大于5%,即Z:=CLOSE/OPEN>1.05。
所以,没有上、下影线的大阳线的程序代码如下:
如果大阳线带有上影线,但上影线较短,这时大阳线的程序代码如下:
如果大阳线带有下影线,但下影线较短,这时大阳线的程序代码如下:
4.1.4 穿头破脚程序代码编写技巧
穿头破脚形态就是第2根K线将第1根K线从头到脚“穿”在里面。穿头破脚有两种形态,一种在底部出现,另一种在顶部出现。底部穿头破脚形态的特征是:在下跌趋势中,第2根阳线的长度“吞吃”掉第1根阴线的全部,注意上下影线不算。顶部穿头破脚形态的特征是:在上涨行情中,第2根阴线的长度“吞吃”掉第1根阳线的全部,注意上下影线不算。穿头破脚图形如图4.3所示。
图4.3 穿头破脚图形
从技术上来说,底部穿头破脚是价格止跌回升的信号,顶部穿头破脚是价格见顶回落的信号。
如果只是一般意义上满足以上条件的K 线组合,则信号的含义并不强,所以可以通过强化一些条件或补充一些条件来加强信号的内涵。
例如,规定当前K线的开收至少有4%的差值,如果是底部穿头破脚的类型,那么该K线应该收阳,同时当前K线的最高价和最低价要包住前一根K线。
先定义前一个交易日的开盘价和收盘价,具体代码如下:
再定义当前交易日的K线,具体代码如下:
于是底部穿头破脚程序代码如下:
编写顶部穿头破脚代码只需简单修改一下即可,具体代码如下:
4.1.5 吊颈线程序代码编写技巧
吊颈线,又称绞弄线,其特征是:在上涨行情的末端,阳线或阴线的实体很小,下影线大于或等于实体的两倍,一般没有上影线,即使有,也短得可以忽略不计。吊颈线图形如图4.4所示。
一般来说,在价格大幅上涨后出现的吊颈线是明显的见顶信号。投资者见到此K线,应高度警惕,不管后市如何,可先做减磅,之后一旦发现价格掉头向下,应及时抛空出局。
图4.4 吊颈线图形
提醒:吊颈线图形与锤头线图形是相同的,区别是:吊颈线必须是在上升势趋中出现,而锤头线必须是在下降趋势中出现。
吊颈线可以分为两种,分别是阳线实体的吊颈线和阴线实体的吊颈线。下面先来看一下阴线实体的吊颈线(不带上影线)的量化。
开盘价即为当日的最高价,即X1:=OPEN=HIGH。
阴线实体的长度短,量化后我们选择与整个K线进行对比,定义其长度小于整个K线的1/4,代码如下:
另外,要对 K 线的绝对长度做出规定,定义整个 K 线的长度大于最高价的5%,其意义在于明确K线的含义,避免出现极小的、弱市中的信号,即Z1:=Y2/HIGH>0.05。
阴线实体的吊颈线(不带上影线)的程序代码如下:
阳线实体的吊颈线(不带上影线)程序代码只需简单修改一下阴线实体的吊颈线程序代码即可,具体代码如下:
带上影线的阴线实体的吊颈线程序代码如下:
带上影线的阳线实体的吊颈线程序代码如下:
4.1.6 低开大阳线程序代码编写技巧
低开大阳线出现在拉升初期或整理末期的概率较高,当天的开盘K线明显低于前一天的K线,但是整个K线呈现为一根长阳。
低开大阳线的量化:当日低开,小于上一个周期的最低价,并且开盘时的跌幅达到了2%以上,代码如下:
低开大阳线收盘长阳,收盘价高出开盘价至少 5%以上,即 Y1:=CLOSE/OPEN>1.05。
低开大阳线的程序代码如下:
4.1.7 曙光初现程序代码编写技巧
出现曙光初现图形时,市场开始处于下降趋势中,第一天是一根大阴线,支持下降趋势,但第二天是一根中阳线或大阳线,并且阳线实体深入到阴线实体二分之一以上的位置,这是市场趋势反转的信号,可以进场做多了,如图4.5所示。
先定义前一个交易日的开盘价和收盘价,即大阴线的开盘价和收盘价,具体代码如下:
前一个交易日的开盘价为最高价,即X3:=LOW=X1。
图4.5 曙光初现图形
前一个交易日的收盘价为最低价,即X4:=X2=HIGH。
在这里假设大阴线下跌幅度大于5%,即X5:=X2/X1>1.05。
再定义当前交易日的开盘价和收盘价,即大阳线的开盘价和收盘价,具体代码如下:
然后定义大阴线与大阳线的量化关系,当日低开,小于前一个交易日的最低价,并且开盘时的跌幅达到了2%以上,代码如下:
收盘长阳,收盘价大于前一个交易日开盘价与收盘价之和的一半,即 Z3:=CLOSE/(X1+X2)>0.5。
这样,曙光初现图形的程序代码如下:
4.1.8 好友反攻程序代码编写技巧
出现好友反攻图形时,市场开始处于下降趋势中,第一天是一根大阴线,支持下降趋势,但第二天是一根中阳线或大阳线,并且收在前一根大阴线的收盘价附近或相同的位置上,这是市场趋势反转的信号,如图4.6所示。
好友反攻量化程序代码的编写与曙光初现量化程序代码的编写差不多。其中,前一个交易日大阴线的代码一样,当前大阳线的代码也一样,不同的就是大阴线与大阳线的关系代码。
图4.6 好友反攻图形
前一个交易日大阴线的代码如下:
当前交易日大阳线的代码如下:
再定义大阴线与大阳线的量化关系,当日低开,小于前一个交易日最低价,并且开盘时的跌幅达到了2%以上,代码如下:
收盘长阳,收盘价与前一个交易日收盘价相同或在前一个交易日收盘价附近,即Z3:=(CLOSE=X1)||(CLOSE/X1<1.001)||(CLOSE/X1>0.999)。
这样,好友反攻图形的程序代码如下:
4.1.9 跳空缺口程序代码编写技巧
跳空缺口图形就是两条K线的高低价出现不衔接的情况,是日后支撑点和压力点的参考价位。当一个跳空缺口出现时,可以假设一个沿着原来跳空方向上的趋势的加速已经开始了。
跳空缺口图形由两条K线组成,两条K线间存在明显的间隔;跳空缺口分为向上和向下两种情况,先来看一下日K线图中的向上跳空缺口。
定义前一个交易日的K线最高值,即X1:=REF(HIGH,1)。
当前交易日的 K 线的最低值大于前一个交易日的 K 线的最高值,即 X2:=LOW>X1。
跳空缺口越大,信号越强烈,所以加入辅助条件:跳空缺口的长度至少要求有两个点位,即Y1:=LOW/X1>1.02。
向上跳空缺口的程序代码如下:
向下跳空缺口的程序代码与向上跳空缺口的程序代码相似,具体代码如下:
4.2 均线模型的编写技巧
均线是反映价格运行趋势的重要指标,其运行趋势一旦形成,将在一段时间内继续保持,趋势运行所形成的高点或低点又分别具有阻挡或支撑作用,因此均线指标所在的点位往往是十分重要的支撑位或阻力位,这就为我们提供了买进或卖出的有利时机,均线系统的价值也正在于此。
4.2.1 均线的定义
均线是移动平均线的简称,是指一定交易时间内的算术平均线。下面以 30日均线为例进行说明,将30日内的收盘价逐日相加,然后除以30,就得出30日的平均值,再将这些平均值按先后次序连接成一条线,这条线就叫30日移动平均线,其他平均线算法类似。均线图形如图4.7所示。
图4.7 默认显示的是5日、10日、20日、30日均线
4.2.2 短期均线
在各类短期均线中,比较常用的有5日、10日、20日和30日均线,下面分别讲解。
(1)5日均线
5日均线是默认的均线,即1周交易日的平均价格(因为1周只有5个交易日)。在日常生活中,人们常常用周作为时间单位,因此5日均线是短线判断的依据,只要价格不跌破5日均线,就说明价格处于极强势状态。
(2)10日均线
10日均线,又称半月线,是连续两周交易的平均价格,是考察价格在半个月内走势变化的重要参考线。相对于10日均线而言,5日均线起伏较大,特别是在震荡时期,买卖的信号很难把握,所以很多人做短线时常以10日均线作为进出的依据。只要价格不跌破10日均线,就说明价格处于强势状态。
(3)20日均线
20日均线,又称月线,标志着价格在过去一个月中的平均交易价格达到了怎样的水平,在这一个月中,市场交易者处于获利状态还是被套状态。20日均线是价格从短期走势向中期走势演变的中继线。
(4)30日均线
30日均线具有特殊的重要性,它是价格短期均线和中期均线的分界线,日常使用频率非常高,常被用来与其他均线组合使用。30日均线是短线主力的护盘线,这意味着价格突破 30 日均线,是市场短线主力进场的表现,只要价格不跌破 30日均线,就表明短线主力仍在其中。
提醒:有些短线主力会使用25日均线或34日均线作为短期的护盘线。
4.2.3 中期均线
在各类中期均线中,比较常用的有45日、60日和90日均线,下面分别讲解。
(1)45日均线
一个月的交易时间是22天,那么45天均线基本上是两个月的均线,该均线是一条承接短期均线和中期均线的中继线,对于研判价格的中期行情,常常起到先知先觉的作用。
(2)60日均线
60日均线是3个月的市场平均交易价格K线,也被称为季度线。这是一条比较常用、标准的中期均线,对于判断价格的中期走势有着重要的作用。
(3)90日均线
90日均线是中期均线和长期均线的分界线,其特点是走势平滑、有规律,是判断中期运行趋势的重要依据。90日均线常被主力相中,作为其中期护盘线。这意味着价格突破90日均线,是市场中线主力进场的表现,只要价格不跌破90日均线,就表明中线主力仍在其中。
提醒:有些中线主力会使用75日均线或100日均线作为中期的护盘线。
4.2.4 长期均线
在各类长期均线中,比较常用的有120日和250日均线,下面分别讲解。
(1)120日均线
120 日均线,又称半年线,其使用频率在长期均线组合中较高,利用该均线可以观察价格的长期走势。一般来说,在下降趋势中,它是年线的最后一道护身符;而在上升趋势中,它又是年线的前一个挡箭牌。半年线被价格突破的市场震撼力比较大,意味着将进入长期上升趋势或长期下降趋势。
(2)250日均线
250 日均线,又称年线,反映运行一年后的市场平均交易价格,是市场长期走势的生命线,也是“牛熊分界线”,是判断牛市是否形成或熊市是否来临的主要依据。250 日均线常被主力相中,作为其长期护盘线。这意味着价格突破 250 日均线,是市场长线主力进场的表现,只要价格不跌破250日均线,表明长线主力仍在其中。
提醒:有些长线主力会使用255日均线作为长期的护盘线。
4.2.5 均线的特性
均线可以反映真实的价格变动趋势,即通常所说的上升趋势、下降趋势。借助各种均线的排列关系,可以预测价格的中长期趋势,同时灵活应用K线技术,就可以实现低买高卖,从而获得较高的收益。
在使用均线时,要注意平均价格与实际价格在时间上有所超前或滞后,很难利用均线把握价格的最高点和最低点。另外,价格在盘整时期,均线买卖信号会频繁出现。
在使用均线分析白银市场行情时,要注意以下5个特性。
(1)平稳特性
由于均线采用“平均”的方法来显示,所以它不会像日K线图那样高高低低地震荡,而是起落平稳。
(2)趋势特性
均线反映了价格的变动趋势,所以具有趋势特性。
(3)助涨特性
在多头或空头市场中,均线向一个方向移动,要持续一段时间后才能改变方向,所以在上涨趋势中,均线可以看成多方的防线,具有助涨特性。
(4)助跌特性
与助涨特性相反,在下跌趋势中,均线可以看成空方的防线,具有助跌特性。
(5)安定特性
通常,越长期的均线,越能表现出安定特性,即价格涨势必须真正明确后,均线才会往上走;价格下落之初,均线还是向上走的,只有价格下落显著时,均线才会向下走。
4.2.6 均线的黄金交叉代码编写技巧
黄金交叉图形出现在上涨初期,由两根均线组成,一根时间短的均线由下向上穿过一根时间长的均线,并且时间长的均线是向上移动的。
下面来量化黄金交叉图形。先看5日均线与10日均线的黄金交叉,即5日均线上穿10日均线,并且10日均线向上移动。为了表示10日均线向上移动,量化为7天内10日均线都是向上移动的。
定义5日均线,即X1:=MA(CLOSE,5)。
定义10日均线,即X2:=MA(CLOSE,10)。
5日均线上穿10日均线,即X3:=CROSS(X1,X2)。
再定义上一个周期的10日均线,即Y1:=REF(X2,1)。
当前周期的10日均线大于上一个周期的10日均线,即Y2:=X2>Y1。
连续7天10日均线都是向上移动的,即Y3:=COUNT(Y2,7)=7。
这样,5日均线与10日均线黄金交叉的程序代码如下:
若5日均线与30日均线黄金交叉,即5日均线上穿30日均线,并且30日均线向上移动,则代码如下:
同理,10日均线与30日均线黄金交叉,即10日均线上穿30日均线,并且30日均线向上移动,其程序代码也很简单,把5日均线换成10日均线即可,即X1:=MA(CLOSE,10)。
4.2.7 均线多头排列代码编写技巧
均线多头排列出现在涨势中,由3根均线组成,最上面的一根是短期均线,中间的一根是中期均线,最下面的一根是长期均线,并且3根均线呈向上圆弧状。
下面来量化均线多头排列,5日均线在10日均线上方,10日均线在30日均线上方,并且要持续7天。
先定义5日均线、10日均线和30日均线,具体代码如下:
5日均线在10日均线上方,10日均线在30日均线上方,代码是:
状态要持续7天,代码是:
均线多头排列的程序代码如下:
4.2.8 价格重新站上5日均线代码编写技巧
价格重新站上5日均线是一个新的做多条件,在这里为了使这个条件更充分,再加上价格始终在30日均线上方运行。
先定义5日均线和30日均线,具体代码如下:
价格始终在30日均线上方,量化为连续7天价格都在30日均线上方,代码如下:
价格站上5日均线,代码如下:
整个程序代码如下:
4.2.9 均线死亡交叉代码编写技巧
死亡交叉图形出现在下跌初期,由两根均线组成,一根时间短的均线由上向下穿过一根时间长的均线,并且时间长的均线是向下移动的。
下面来量化死亡交叉图形,10日均线与30日均线死亡交叉,即10日均线下穿30日均线,并且30日均线向下移动。为了表示30日均线向下移动,量化为7天内30日均线都是向下移动的。
定义10日均线:即X1:=MA(CLOSE,10)。
定义30日均线,即X2:=MA(CLOSE,30)。
10日均线下穿30日均线,即X3:=CROSSDOWN(X1,X2)。
再定义上一个周期的30日均线,即Y1:=REF(X2,1)。
当前周期的30日均线小于上一个周期的30日均线,即Y2:=X2<Y1。
连续7天30日均线都是向下移动的,即Y3:=COUNT(Y2,7)=7。
这样,10日均线与30日均线的死亡交叉代码如下:
4.2.10 均线空头排列代码编写技巧
空头排列出现在下跌趋势中,由3根均线组成,最上面的一根是长期均线,中间的一根是中期均线,最下面的一根是短期均线,并且3根均线呈向下圆弧状。
下面来量化均线空头排列,5日均线在10日均线下方,10日均线在30日均线下方,并且要持续7天。
先定义5日均线、10日均线和30日均线,具体代码如下:
5日均线在10日均线下方,10日均线在30日均线下方,代码是:
状态要持续7天,代码是:
均线空头排列的程序代码如下: