K线技术指标实现详解—MACD

K线技术指标实现详解—MACD

概念介绍

MACD称为指数平滑移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(通常为EMA12)减去慢的指数移动平均线(通常为EMA26)得到快线DIF;再用DIF的9日指数平滑移动得到慢线DEA;再用2×(快线DIF-加权移动均线DEA)得到MACD柱。MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。当MACD从负数转向正数,是买的信号。当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。

EMA简介
EMA(Exponential Moving Average),指数平均数指标。也叫EXPMA指标,它也是一种趋向类指标,指数平均数指标是以指数式递减加权的移动平均。
1.计算公式:
EMAtoday=α * Pricetoday + ( 1 - α ) * EMAyesterday;
2.可变参数说明:
α为平滑指数,一般取作2/(N+1)。在计算MACD指标时,EMA计算中的N一般选取12和26天,因此α相应为2/13和2/27;在计算DEA时,EMA中的N一般选取为9天,即α为2/10。
3.初始化说明:
EMA1是没有定义的,通常情况下取EMA1为Price1,即数据的第一项填充为EMA的第一项。

K线技术指标实现详解—MACD_第1张图片

计算及实现

计算公式

1.计算公式:
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD:(DIF-DEA)*2;
2.可变参数说明:
上式中,SHORT、LONG、MID是可变参数,三个参数都是EMA公式中α的取值(EMA计算公式在前文有介绍)。通常情况下,业内公认的三个取值为:12,26,9。
3.初始化说明:
通常DIF,DEA,MACD的初始值用0补足。不过这个0并不是刻意补上去的,而是根据EMA初始化规则,自然而然算出来的DIF,DEA,MACD初始值都为0。
4.计算举例:
以SHORT、LONG、MID参数取值为12,26,9为例,MACD的计算公式化简为:
EMA(12)=前一日EMA(12)X 11/13+今日收盘价X2/13;
EMA(26)=前一日EMA(26)X 25/27+今日收盘价X2/27;
DIF=EMA(12)-EMA(26);
DEA=(前一日DEA X 8/10+今日DIF X 2/10);
MACD=(DIF-DEA)*2;

代码实现

以下我们以一组股市K线数据为输入,来计算这组K线数据的MACD数据(编程使用JavaScript语言实现):

var input,macd;
var calcEMA,calcDIF,calcDEA,calcMACD;
/*
 * K线数据
 * 开盘价,收盘价,最低价,最高价
 */
input=[
    {open:3.89,close:3.89,low:3.86,high:3.93},
    {open:3.88,close:3.85,low:3.81,high:3.89},
    {open:3.85,close:3.91,low:3.82,high:3.95},
    {open:3.89,close:4.02,low:3.89,high:4.07},
    {open:4.04,close:4.05,low:4.00,high:4.08},
    {open:4.05,close:4.00,low:3.98,high:4.08},
    {open:4.00,close:4.00,low:3.97,high:4.04},
    {open:3.99,close:3.90,low:3.88,high:4.00},
    {open:3.89,close:3.90,low:3.88,high:3.92},
    {open:3.89,close:3.98,low:3.88,high:3.98},
    {open:3.99,close:3.98,low:3.95,high:4.03},
    {open:3.98,close:4.06,low:3.96,high:4.08},
    {open:4.08,close:4.08,low:4.02,high:4.08}
];

/*
 * 计算EMA指数平滑移动平均线,用于MACD
 * @param {number} n 时间窗口
 * @param {array} data 输入数据
 * @param {string} field 计算字段配置
 */
calcEMA=function(n,data,field){
    var i,l,ema,a;
    a=2/(n+1);
    if(field){
        //二维数组
        ema=[data[0][field]];
        for(i=1,l=data.length;i

输出结果如下:
K线技术指标实现详解—MACD_第2张图片
需要额外说明的是,因为MACD(EMA、DIF、DEA)的初始值和后续数据的取值方式不同(初始值是直接定义的),因此MACD需要经过一定数据量的计算才能渐渐趋于有效。又因为累计计算的这一特性,MACD的初始值取值为什么往往对后续结果影响不大(比如初始值设为0或者50,两种数据算到一定数据量之后就趋近相等),类似的KDJ指标也具有类似的特性。

技术指标使用建议

注意!
每个技术指标都有很多种使用方法,不同行情下适用情况也不尽相同。笔者在此处只给出自己的一些使用心得,经验不多,见解也不是很深,仅供参考。

1.MACD技术指标的使用非常简单,并且综合来看,MACD指标是中长线投资者受用度、精准度都相对来说最高的技术指标,因此MACD可以说是入市投资必知的一项技术指标。对于MACD指标,当出现MACD金叉(DIF上穿DEA;或MACD柱状图由负转正)时,并且DIF线为正并向上移动,提示买入;反之,MACD死叉(DIF下窜DEA;或MACD柱状图由正转负)提示卖出。这项使用技巧对所有周期的K线图均适用。

熬夜不易,请作者喝杯酒!

你可能感兴趣的:(前端,互联网金融,K线技术实战)