5. 计算K、D指标值
5.1 K值、D值指标概述
K值由前一日的K值和当期RSV值经过一定权重调整后相加得到,一般来说,K值的计算为:
此外,在计算第一期K和D值时,如果没有指定,则K值和D值都默认取值为50。在K值和D值的求解过程中,平滑权重2/3和1/3是较为常用的权重,这两个权重也可以根据股价走势的特点进行适当修改。
(通过递归和迭代,我们可以发现K值是由未成熟随机指标RSV通过指数移动平均而得到的。D值是K值的指数移动平均数。)
5.2 计算代码
# 计算K值
KValue = pd.Series(0.0, index=RSV.index)
KValue[0] = 50
for i in range(1,len(RSV)):
KValue[i] = 2/3*KValue[i-1] + RSV[i]/3
KValue.name = 'KValue'
# 接着计算D值
DValue = pd.Series(0.0, index=RSV.index)
DValue[0] = 50
for i in range(1, len(RSV)):
DValue[i] = 2/3*DValue[i-1] + KValue[i]/3
DValue.name = 'DValue'
KValue = KValue[1:]
DValue = DValue[1:]
然后,绘制曲线图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.subplot(211)
plt.title('2020年平安银行收盘价')
plt.plot(close['2020'])
plt.subplot(212)
plt.title('2020年平安银行RSV与KD线')
plt.plot(RSV['2020'])
plt.plot(KValue['2020'],linestyle='dashed')
plt.plot(DValue['2020'],linestyle='-.')
图像效果如下:
如图可以看出RSV曲线波动最大,K线在RSV基础上进行适当平滑,而D线波动幅度最小。收盘曲线上涨时,RSV曲线、KD线也呈上涨趋势;当收盘价在高位段上涨时,RSV曲线,K值,D值取值也较高,并在较高位处波动。
6.计算J值
J指标是KD指标的辅助指标,进一步反映了K指标与D指标的乖离程度。第t日J值的计算公式为:
# 计算J值
JValue = 3*KValue - 2*DValue
JValue.name='JValue'
7.绘制KDJ线
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.subplot(211)
plt.title('2020年平安银行收盘价')
plt.plot(close['2020'],label='Close')
plt.legend(loc='upper left')
plt.subplot(212)
plt.title('2020年平安银行RSV与KDJ线')
plt.plot(RSV['2020'],label='RSV')
plt.plot(KValue['2020'],linestyle='dashed',label='KValue')
plt.plot(DValue['2020'],linestyle='-.',label='DValue')
plt.plot(JValue['2020'],linestyle='--',label='JValue')
plt.legend(loc='upper left')
图像效果如下:
8. KDJ交易策略
总结随机指标KDJ的思想,首先计算最高价,最低价和收盘价之间的比例关系,再运用平滑和乖离的思想,来捕捉动量及超买、超卖等现象,在实务上对快捷直观地研判行情很有助益。
- 在KDJ指标的取值上K和D值的取值范围为0-100。
依据K值和D值可以划分出超买区和超卖区,一般而言,K值或者D值在80以上为超买区,在20以下为超卖区。 - 对于J值,J值大于100,可以视为超买区,J值小于0,即视为超卖区。
- K线由下向上穿过D线时,即出现“黄金交叉”现象,隐含股票上涨的动量较大,释放出买入信号;K线由上向下穿过D线时,出现“死亡交叉”现象,股票有下跌趋势,释放出卖出信号。