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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuhk231/article/details/80810252

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

概念介绍

简单移动平均线(Moving Average),简称MA,原本的意思是移动平均,由于通常将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5。他是K线图中最基本的技术指标,直接绘制在K线图上。和K线图比起来,他能反映更加稳定的数量(包括股价、成交量和成交额)的变化趋势。常用的MA参数有短线:MA5,MA10;中长线:MA20,MA60。
这里写图片描述

MA,EMA,SMA
请注意MA,EMA,SMA的区别。MA是简单移动平均线,EMA是指数平滑移动平均线,SMA是移动平均线。EMA是指数级别的MA,可以用来反映趋势的趋势,具体应用在MACD技术指标的实现过程中。SMA简单理解就是增加了权重的MA,他具体应用在KDJ技术指标的实现过程中。这三者的具体算法都不一样。

计算及实现

计算公式

1.计算公式:
N日移动平均线=N日收市价之和/N;
2.可变参数说明:
对于均线计算,可变的参数为N,N的取值就代表了计算均线的名称,例如N=5时,我们称之为MA5均线;
3.计算举例:
MA(5)=(Close(1)+ Close(2)+ Close(3)+ Close(4)+ Close(5))/5,即

代码实现

MA均线的计算非常简单,以下我们以一组股市K线数据为输入,用一个通用的方法calcMA来计算这组K线数据的MA5,MA10和MA20(编程使用JavaScript语言实现):

var input,ma5,ma10,ma20;
var calcMA;
/*
 * 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}
];


/*
 * 计算MA均线
 * @param {number} dayCount MA时间窗口
 * @param {array} data 输入数据
 * @param {string} field 计算字段配置
 */
calcMA=function(dayCount,data,field) {
    var ma,i,l,j,sum;
    ma=[];
    for(i=0,l=data.length;i<l;i++){
        if(i<dayCount-1){
            ma.push('-');
            continue;
        }
        sum=0;
        for(j=0;j<dayCount;j++){
            sum+=data[i-j][field];
        }
        ma.push(sum/dayCount);
    }
    return ma;
};

ma5=calcMA(5,input,"close");
ma10=calcMA(10,input,"close");
ma20=calcMA(20,input,"close");
console.log("ma5:",ma5);
console.log("ma10:",ma10);
console.log("ma20:",ma20);

输出结果如下:
这里写图片描述
可以看到,MA在计算中会在头部产生“无效值”,例如对于MA5,前4项就是无效值,因为MA5计算的是近5日的平均值,这也就是大家在K线图上经常看到的均线头部预留的缺省值。可以看到,当输入数据长度不足20时,整个MA20都是无效值。

技术指标使用建议

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

1.关于MA最重要的一点不是他的优点,而是他的滞后性缺点。当MA均线技术指标指示买点、卖点信息时,往往意味着股价真实的涨、跌情况已经发生了一段时间,此时再决定是否做投资决策比较考验投资者的经验。
2.当股价站于短线之上(即指K线图位于MA5,MA10均线的上方),提示买入;反之,股价处于均线下方,提示卖出。
3.MA5、MA10上穿MA20(即MA金叉),提示买入;反之,MA死叉,提示卖出。

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

展开阅读全文

没有更多推荐了,返回首页