点上方蓝字关注,开启量化学习之旅~
一次认识一个市场技术指标
每次只需花费五分钟左右即可了解金融衍生品市场中一个常用的技术指标,包括这个技术指标的作用、计算方法、实际应用以及代码实现,以便以后再次遇到这个指标不会再陌生。
指标介绍
(螺纹rb2001)
KDJ称为随机指标(KDJ Index)。它是由George Lane(乔治 莱恩)首创,KDJ指标最早用于期货市场的分析,现在常用于股市的中短期趋势分析以及超买超卖判断,是期货和股票市场中最常用的技术指标之一。它在计算的时候,主要是研究最高价、最低价以及收盘价之间的关系,同时也结合了动量观念、强弱指标以及移动平均的特点,所以可以更加全面地判断当前行情。
KDJ指标由三根线组成(如上图所示),其中移动速度最快的是J线,其次是K线,最慢的是D线。具体的计算原理可以参考后面的计算方式。
KDJ指标在应用时,主要是从K、D、J值三者的大小或者是三条曲线之间的关系进行行情的判断。
一般情况下,如果K、D、J值都大于50时,则为多头市场,后期看涨;反之,K、D、J值都小于50时,为空头市场,后期看跌。但是当KDJ值大于或者小于一定范围时,容易出现钝化的现象,也就是变化不明显,所以也需要结合其他指标进行分析。
或者从三条曲线的关系上,当多头情况下,J线大于K线,K线大于D线并出现交叉(金叉)时,意味着上涨趋势,此时的信号类似双均线策略原理,是一种买入信号;相反,空头情况下,则意味着下跌趋势,是一种卖出信号。
计算方式
KDJ指标在计算时,需要先计算N周期的RSV值(未成熟随机指标),然后再计算K、D、J值:
其中,Close(N)、Low(N)、High(N)分别代表了第N日的收盘价,N日内的最低价和最高价,得到的RSV就是当前的未成熟随机值RSV(t)。接着,计算K值和D值以及J值:
如果前一日的K、D值没有,可以用50来代替。
通常情况下,N的取值一般是9,K值和D值计算时的权重是2/3和1/3,这个也可以进行调整。
代码实现
python代码实现:
import numpy as np
import pandas as pd
def cal_KDJ(close, low, high, N=9, M1=3, M2=3):
datalen=len(close)
kdj_list=[]
for i in range(datalen):
if i-N<0:
kdj_list.append(None)
else:
# 计算RSV
c = close[i]
l = min(low[i-N:i])
h = max(high[i-N:i])
rsv = ((c - l) / (h - l))*100
if i - N == 0:
k_ = 50
d_ = 50
k = (2/M1)*k_ + (1/M1)*rsv
d = (2/M2)*d_ + (1/M2)*k
j = 3*k - 2*d
kdj_list.append((k,d,j))
k_ = k
d_ = d
return kdj_list
if __name__ == '__main__':
df = pd.read_csv('./000001.csv')
KDJ = cal_KDJ(df['Close'], df['Low'], df['High'])
print(KDJ)
「 往期文章 」
了解更多人工智能与
量化金融知识
<-请扫码关注
让我知道你在看