KDJ指标又叫随机指标,是一种相当新颖、实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。
随机指标KDJ一般是用于股票分析的统计体系,根据统计学原理,通过一个特定的周期(常为9日、9周等)内出现过的最高价、最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值RSV(Raw Stochastic Value),然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。
1.计算公式:
RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3K-2*D;
RSV简介
RSV(Raw Stochastic Value), 未成熟随机值指标。
1.计算公式:
RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))100;
公式中金融公式说明:
(1)LLV(X,N):N日内X最小值;
(2)HHV(X,N):N日内X最大值。
2.可变参数说明:
N为RSV计算的时间窗口,通常KDJ计算中N取值为9。
3.初始化说明:
RSV需要计算N日内最高价、最低价,因此在此我建议RSV从第9项开始计算,空出前8个值(类似于MA5空出前4个的原理)。但是市面上不同金融产品有不同的初始化方法:
(1)东方财富:RSV初始值为100,并且从第一项就开始计算,不足N日的就不足;
(2)腾讯财经:RSV初始值为0,并且RSV空出前8项。
SMA简介
SMA,移动平均指标,在计算K和D值时使用的金融公式。是简单移动平均线(MA)的基础上增加权重的计算形式。
1.计算公式:
SMA(X,N,M)=(XM+SMA’*(N-M))/N
公式中SMA’表示前一个SMA值。
2.可变参数说明:
SMA(X,N,M)表示X在权重M控制下的N日平均移动。X为输入数据,例如金融公式中通常计算收盘价;N代表N日平均,和MA(n)中的n意义相同;M代表权重。通常情况下,在计算KDJ时,N设为3,M设为1.
3.初始化说明:
SMA1是没有定义的,并且对于这个初始值没有一种公认的初始化方法,也许在不同指标应用中会有不同的初始值存在。在此列出几种市面上使用的初始值:
1.同花顺、东方财富:初始值设为100,并且空出前两项;
2.投资赢家:初始值设为100,并且空出前一项;
3.百度百科:在计算KDJ时初始值设为50(因为KDJ值为50是一个KDJ指标上的平衡点);
4.腾讯财经:在计算KDJ时初始值设为0,并且KDJ值会空出前8项(因为计算RSV需要计算近9日数据,这8项正好是为了计算RSV而空出的);
以下我们以一组股市K线数据为输入,来计算这组K线数据的KDJ技术指标(编程使用JavaScript语言实现):
var input,kdj;
var calcLLV,calcHHV,calcSMA,calcRSV,calcKDJ;
/*
* 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},
//2017/06/21
{open:4.08,close:4.08,low:4.02,high:4.08}
];
/*
* 计算最小值
* @param {number} pos 最新值索引
* @param {number} n 取最小值范围周期
* @param {array} data 输入数据
* @param {string} field 计算字段配置
*/
calcLLV=function(pos,n,data,field){
var i,l,min;
n--;
min=data[pos][field];
l=pos-n;
l<0 ? l=0:1;
for(i=pos;i>=l;i--){
if(min>data[i][field]){
min=data[i][field];
}
}
return min;
};
/*
* 计算最大值
* @param {number} pos 最新值索引
* @param {number} n 取最大值范围周期
* @param {array} data 输入数据
* @param {string} field 计算字段配置
*/
calcHHV=function(pos,n,data,field){
var i,l,max;
n--;
max=data[pos][field];
l=pos-n;
l<0 ? l=0:1;
for(i=pos;i>=l;i--){
if(max
输出结果如下:
注意KDJ和MACD共有的收敛性质,由于初始化策略的不同,在起初计算KDJ时不同初始化值会算出差异较大的KDJ,但是经过一定数量的数据计算后,KDJ渐渐趋于平稳。这种收敛性质和MACD是完全相同的。因此在金融项目中不需太过纠结KDJ的初始化数据。
注意!
每个技术指标都有很多种使用方法,不同行情下适用情况也不尽相同。笔者在此处只给出自己的一些使用心得,经验不多,见解也不是很深,仅供参考。
1.KDJ的使用较为复杂。KDJ非常灵敏,变化迅速,因此买卖点出错概率高,不适合新手直接实战使用。
2.日K图形中,J<0之后反向向上,往往意味着股价一波持续较长时间的上涨。J曲线的走势几乎可以预示股价的走势,并且往往会比K线图快1~2天(预示股价未来)。
3.KD金叉并且J曲线向上,为买入信号;其他所有情况都要具体分析。
4.再次申明,KDJ使用难度较高,请不要随意的相信KDJ提示的买卖信息。
熬夜不易,请作者喝杯酒!