一文看懂KDJ指标及Python实现

4,874 阅读3分钟

KDJ指标又叫随机指标,是一种非常实用的技术分析指标,被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具。

随机指标KDJ是根据统计学原理,在一个特定的周期(常为9日、9周等),以最高价、最低价及收盘价为基本数据进行计算,得出未成熟随机值RSV,然后根据平滑移动平均线的方法来计算K值、D值与J值,并绘成曲线图来研判股票价格走势。

它主要是利用价格波动的真实波幅来反映价格走势的强弱和超买超卖现象,在价格尚未上升或下降之前发出买卖信号的一种技术工具。融合了动量观念、强弱指标和移动平均线的一些优点,因此,能够比较迅速、快捷、直观地研判行情。由于KDJ线本质上是一个随机波动的观念,故其对于掌握中短期行情走势比较准确。

计算方法(在一个固定时间段内):

RSV=100*(收盘价-最低价)/(最高价-最低价)

K值=2/3×前一日K值+1/3×当日RSV

D值=2/3×前一日D值+1/3×当日K值

J值=3当日K值-2当日D值

RSV很好理解,以考试为例,收盘价相当于你考的成绩,假设班级最高成绩是100分,最低成绩是50分,你考了90分,那么你的RSV就是80,RSV取值范围是(0,100),你RSV值是80,说明你在同学之中成绩比较高,换成股票,说明当日股票价格跟过去一段时间价格相比处于高位。

由于RSV对于方向变化过于敏感,所以使用K对RSV进行均值平滑,D对K又进行进一步均值平滑。

在实战中,K线是快速确认线,数值在90以上为超买,数值在10以下为超卖;D线是慢速主干线,数值在80以上为超买,数值在20以下为超卖;J线为方向敏感线,当J值大于90,特别是连续5天以上,股价至少会形成短期头部,反之J值小于10时,特别是连续数天以上,股价至少会形成短期底部。

当K值由较小逐渐大于D值,在图形上显示K线从下方上穿D线,所以在图形上K线向上突破D线时,俗称金叉,即为买进的讯号。当K值由较大逐渐小于D值,在图形上显示K线从上方下穿D线,显示趋势是向下的,所以在图形上K线向下突破D线时,俗称死叉,即为卖出的讯号。

那么问题来了,怎么用Python画出某一只股票对KDJ呢?以双汇发展为例:

for j in range(8-1,ndate):
    i = date[j]
    prhigh[i] = high.iloc[j+1-8:j+1].max() 
    prlow[i] = low.iloc[j+1-8:j+1].min()
    RSV[i] = 100*(close[i]-prlow[i])/(prhigh[i]-prlow[i])
...
for i in range(1,len(RSV1)):
    KValue[i] = 2/3*KValue[i-1]+RSV1[i]/3
...
for i in range(1,len(RSV1)):
    DValue[i] = 2/3*DValue[i-1]+KValue[i]/3
...
JValue = 3*KValue - 2*DValue

从双汇发展的KDJ线可以看出,波段买入卖出点判断比较准确。

想要获得Python源代码,可关注本公众号(MarsClass ),后台留言即可。