常用技术指标之一文读懂KDJ指标

什么是KDJ指标?

KDJ中文名又叫随机指标,英文名叫Stochastic oscillator,由乔治·莱恩(George Lane)于20世纪50年代首创,最早用于期货市场。KDJ指标能比较迅速、直观地研判行情,主要用于分析中短期趋势,是期货和股票市场上常用的技术分析工具。它主要是利用价格波动的真实波幅来反映价格走势的强弱和超买超卖现象,在价格尚未上升或下降之前发出买卖信号。

下图是特斯拉最近的K线和KDJ指标图。

从图中可以看出来, KDJ有三根线,分别是K线, D线, J线。K线、D线的取值范围是0~100, J线取值范围可以超过100和低于0。 相比速度而言,J > K > D。相比安全性而言,J < K < D。

KDJ公式说明

KDJ根据统计学原理,通过一个特定的周期N内出现过的最高价、最低价及最新收盘价及这三者之间的比例关系来计算未成熟随机值RSV,然后根据移动平均线(SMA/EMA)的方法来计算K值、D值与J值,并绘成曲线图来研判股票走势。它在设计过程中主要是研究最高价、最低价和收盘价之间的关系,同时也融合了动量观念、强弱指标和移动平均线的一些优点,因此,能够比较迅速、快捷、直观地研判行情。

KDJ指标具体计算方法如下:

  • RSV = (收盘价-N周期最低价)/(N周期最高价-N周期最低价)*100

  • K值 = SMA(RSV, M), RSV的M周期移动平均值

  • D值 = SMA(K, L),K值的L周期移动平均值

  • J值 = 3K-2D

说明:

扫描二维码关注公众号,回复: 16611743 查看本文章
  • RSV是英文Raw StochasticValue的缩写,中文意思是未成熟随机值, 决定了价格收盘水平与一段时期内K线波动区间的关系。例如,如果RSV高于80,则表明当前收盘价接近区间的最高点。另一方面,如果该RSV低于20,则意味着该指数的收盘价接近区间的最低点

  • SMA是简单移动平均线, 也有使用EMA指数移动平均的

  • K曲线通过平滑RSV值得到的,它的技术特征与RSV数值相似,都是揭示了N天之内价格上的强弱程度

  • D曲线是平滑K值得到的,也可以理解为对RSV数值的再次平滑。相对K曲线,D曲线对微小价格的波动过滤的效果更好,曲线自身波动也更加平缓

  • J曲线表示2倍K值与D值的差值,再加上当日K值。它可以更容易看清K曲线、D曲线二者之间的差距。由于J曲线与RSV数值无关, 为了追求更简洁的技术指标,有时候不使用J曲线也可以

  • D曲线与K曲线构成了一个“双均线”组合,所有与均线有关的分析法则,都可以运用到KDJ指标上。投资者可以通过两条曲线在低位和高位的交叉情况,对股价是否存在超买与超卖现象做出明确的判断;D曲线对K曲线有了初步的支撑、阻力作用,为观察股价的变化提供了一个参考依据;但K、D两条曲线的缺陷是被限制在了0~100的空间之内

  • J曲线的运动方向代表了K曲线和D曲线的趋势状态。J曲线运行速度(斜率)较K曲线和D曲线更快,能帮助投资者提前预判即将到来的股价超买与超卖的现象; J曲线能够突破0轴和100轴线的束缚,进而达到极值,可以揭示K曲线和D曲线已经开始钝化

KDJ指标时间周期取值

一般来说,国内N、M、L通常取值为9、3、3。国外N最常用的周期是5和14。投资者对KDJ指标理解透了之后,这几个参数完全可以按照自己的认识来按相应的市场和标的进行对应调整

KDJ公式计算

talib中计算 KDJ值对应的函数是talib.STOCH()函数,其返回值有两个,一个是K值,另外一个是D值,J值需要自己用公式算。如果N设为9, 那KDJ指标需要至少9天的数据才能正常使用。

  1. talib中使用KDJ指标

# talib
import talib as ta
import numpy as np
inputs = {
    'open': np.random.random(100),
    'high': np.random.random(100),
    'low': np.random.random(100),
    'close': np.random.random(100),
    'volume': np.random.random(100)
}
slowk, slowd = ta.STOCH(inputs['high'], inputs['low'], inputs['close'], fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
slowj = 3 * slowk - 2 * slowd
  1. backtrader中使用KDJ指标

backtrader提供了StochasticFast, Stochastic和StochasticFull 共3个类,均只提供了K曲线、D曲线,没有提供J曲线。 其中:

  • StochasticFast类里面的K线对应上述公式的RSV, D线对应上述公式的K线, 也叫快速随机指标

  • Stochastic类里面的K线、D线与上述公式一致,也叫慢速随机指标

  • StochasticFull类的K、D线与StochasticFast类保持一致,同时增加了一条percDSlow线 与上述公式的D线保持一致

下面示例代码增加了J曲线。

class KDJ(bt.Indicator):
    lines = ('K', 'D', 'J')

    params = (
        ('period', 9),
        ('period_dfast', 3),
        ('period_dslow', 3),
    )

    plotlines = dict(
        J=dict(_name='%J')
    )

    def __init__(self):
        self.kd = bt.indicators.StochasticFull(
            self.data,
            period=self.p.period,
            period_dfast=self.p.period_dfast,
            period_dslow=self.p.period_dslow,
        )

        self.l.K = self.kd.percD
        self.l.D = self.kd.percDSlow
        self.l.J = self.K * 3 - self.D * 2

KDJ指标应用

KDJ指标80线和20线作为指标是否已经超买或者超卖的分界线,中轴50线是正常多空的分界线。

K、D两条曲线在低位形成的黄金交叉和在高位形成的死亡交叉,其实对应着正常的均线交叉,只是因为位置关系更能体现低位超卖和高位超买现象。

  • 金叉: 当K线从D线的下方向上穿越D线,同时J线从K、D线的下方向上穿越K、D线,形成KDJ金叉,是股价转强的信号。若之前K值小于10,D值小于20,J值小于0,三线在超卖区形成金叉时,股价成功反弹的可能性较高

  • 死叉:当K线从D线上方向下穿越D线,同时J线从K、D线的上方向下穿越K、D线,形成KDJ死叉时,是股价转弱的信号。若之前K值大于90,D值大于80,J值大于100,三线在超买区形成死叉时,股价短期下跌的概率较高

  • 顶背离: 当股价连续上涨并持续创新高但KDJ并没有同时跟随创出新高时,就会形成KDJ顶背离,预示股价短期上涨乏力。股价短期内极容易滞涨回落,为短期出局信号

  • 底背离: 当股价连续下跌并持续创新低,而KDJ并没有同时跟随创出新低时,形成KDJ底背离,预示股价短期下跌动能减弱。股价短期内极容易止跌反弹,是短线抢反弹择机买进的信号

  • 钝化就是指股价在行情中大涨或暴跌,使指标数据出现粘连,让指标失去指导作用,因为KDJ是一个非常敏感的指标,所以它特别容易出现钝化。一般钝化分两种:高位钝化和低位钝化。

  • 高位钝化,在股价走势极强的单边上涨行情中,K值与D值均在80以上的超买区,J值大于100。股价仍在急速上涨创新高,此时形成KDJ高位钝化。遇到高位钝化时不要慌,虽然指标失灵,但也意味着个股的强势性。此时就可以参考其他指标进行操作。

  • 把高位钝化反过来就是低位钝化了。一般K值与D值同时在20以下的超卖区,J值在0以下。遇到低位钝化一般意味着股价可能要跌一段时间了。此时适合参考其他指标来判断KDJ何时回归正常,回归后的KDJ金叉是抄底的最好时机。

  • 在股价的实际走势中KDJ买卖信号频繁,且错误虚假信号较多。因为,我们可以看到每次出现顶背离和底背离的时候,KDJ都会出现金叉和死叉。但KDJ每次出现金叉、死叉的时候却不意味着股价也出现了顶背离和底背离,所以,我们要做的就是判断其金叉和死叉的准确性。

结论& 交流

关注公众号,获取更多内容。同时还能获取邀请加入投资交流群、量化投资研讨群, 与众多投资爱好者、量化从业者、技术大牛一起交流、切磋,快速提升自己的投资水平。

微信公众号:诸葛说talk

写文章不易,觉得本文对你有帮助的话,帮忙点个在看吧。

参考

猜你喜欢

转载自blog.csdn.net/richardzhutalk/article/details/125114337