0%

virtualcoin | KDJ 指标

参考资料

大部分资料都是讲一下 KDJ 的含义,很少有资料能把 KDJ 怎么计算说清楚,经过我的资料查询,现在我已经将 KDJ 的计算都弄懂了。

KDJ 公式

$$ RSV_n = \frac{C - L_n}{H_n - L_n} * 100 $$

其中,n 代表一个时间周期,比如 9 分钟,10 天,20 小时等,这个数值是自己设置。假设这里的 n 代表的是 9 分钟

  • $ C $
    • 第 9 分钟的收盘价
  • $ L_n $
    • 9 分钟内的最低价
  • $ H_n $
    • 9 分钟内的最高价

RSV 总在 1 - 100 之间波动。

$$ K = \frac{2}{3} * K_l + \frac{1}{3} * RSV $$

这是 K 值的计算方法,其中 $ K_l $ 代表的是上一个周期的 K 值,这里有几个注意点

  • 为什么是 2/3 和 1/3
    • 这个后面讲解
  • $ K_l $
    • 上一个周期的 K 值,如果上一个周期没有 K 的话,可以用 50 代替

$$ D = \frac{2}{3} * D_l + \frac{1}{3} * K $$

这是 D 值的计算方法

  • $ D_l $
    • 上一个周期的 D 值,如果上一个周期没有 D 的话,可以用 50 代替
  • K
    • 上面计算的 K

$$ J = 3 * K - 2 * D $$

具体细节讲解

通常 KDJ 的参数都是 9,3,3

  • 9
    • 代表 9 天的周期
  • 3
    • M1
  • 3
    • M2

上面说的雨里雾里,直接说一下,怎么计算吧。

如果,你用 tb-lib 进行 KDJ 的编写的话,大概能写出下面的代码

1
2
3
4
5
6
7
8
9
10

dw['slowk'], dw['slowd'] = talib.STOCH(
df['high'].values,
df['low'].values,
df['close'].values,
fastk_period=9,
slowk_period=3,
slowk_matype=0,
slowd_period=3,
slowd_matype=0)

那么,内部实际上是怎么的情况呢。

slowk_priodslowd_priod 又是怎么运用呢?结合,参考资料,给出下面的新的公式。

$$ RSV_n = \frac{C - L_n}{H_n - L_n} * 100 $$

$$ K = SMA(RSV,M1,1) $$

$$ D = SMA(K,M2,1) $$

而,SMA 参考

SMA 的计算如下

$$ Y=SMA(X,N,M) $$

$$ Y = \frac{M * Y + (N - M) * Y’} {N} $$

其中

  • Y’ 代表上一周期的 Y 值
  • N 必须大于 M

至此,上面的各种参数所代表的公式计算已经说清楚了,下面我们再来看看真实数据的表现。

真实数据展示

这里选用的参数是 9,3,3

在图中的地针中,参数如下

  • K = 43.75
  • D = 50.38

9 日的数据如下

  • 地针的收盘价是
    • 19.94
  • 9 日内最高价是
    • 23.03
  • 9 日内最低价是
    • 19.25

上一个周期的

  • K
    • 56.51
  • D
    • 53.69

所以,计算如下

$$ RSV = \frac{19.94 - 19.25}{23.03 - 19.25} * 100 = 18.253968 $$

$$ K = \frac{2}{3} * 56.51 + \frac{1}{3} * 18.253968 = 43.7579 $$

D 就不计算了。

另外,我查了一下币安和火币,关于 KDJ 的算法,发现上述算法和他们展示的不一致,这个没深究,等后面填坑吧。

这里有一个特殊情况,就是,假设你只有第一日和第二日的数据,如何算 9,3,3KDJ 值呢?

这里看一组数据。

这是 2018-12-12日 招商银行 600036KDJ 值数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
date	    close	high	low	    rsv	        max	    min	    k	        d	        j
2018-01-16 30.88 31.26 30.55 46.478873 31.26 30.55 50.000000 50.000000 50.000000
2018-01-17 30.69 32.07 30.51 11.538462 32.07 30.51 37.179487 45.726496 20.085470
2018-01-18 31.30 31.72 31.09 50.641026 32.07 30.51 41.666667 44.373219 36.253561
2018-01-19 31.44 32.30 31.19 51.955307 32.30 30.51 45.096214 44.614217 46.060206
2018-01-22 32.04 32.58 31.14 73.913043 32.58 30.51 54.701824 47.976753 68.151965
2018-01-23 32.98 33.09 32.15 95.736434 33.09 30.51 68.380027 54.777844 95.584393
2018-01-24 32.78 34.24 32.40 60.857909 34.24 30.51 65.872654 58.476114 80.665734
2018-01-25 32.36 32.95 31.86 49.597855 34.24 30.51 60.447721 59.133317 63.076531
2018-01-26 32.41 33.22 32.14 50.938338 34.24 30.51 57.277927 58.514853 54.804074
2018-01-29 31.94 33.01 31.78 38.337802 34.24 30.51 50.964552 55.998086 40.897483
2018-01-30 31.54 32.11 31.39 14.285714 34.24 31.09 38.738273 50.244815 15.725188
2018-01-31 32.87 32.92 31.20 55.806452 34.24 31.14 44.427666 48.305765 36.671466
2018-02-01 33.36 33.82 32.78 71.612903 34.24 31.14 53.489411 50.033647 60.400940

我们计算 2018-01-17KDJ 值,相关参数如下「只能取 16,17 两天」

  • close
    • 30.69
  • high
    • 32.07
  • low
    • 30.51

最后算出的值就是表格中所展示的。

KDJ 的具体含义

这个暂时不写了,留待以后吧。

请我喝杯咖啡吧~