参考资料
大部分资料都是讲一下 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 |
|
那么,内部实际上是怎么的情况呢。
slowk_priod
和 slowd_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,3
的 KDJ
值呢?
这里看一组数据。
这是 2018-12-12日
招商银行 600036
的 KDJ
值数据
1 | date close high low rsv max min k d j |
我们计算 2018-01-17
的 KDJ
值,相关参数如下「只能取 16,17
两天」
- close
- 30.69
- high
- 32.07
- low
- 30.51
最后算出的值就是表格中所展示的。
KDJ 的具体含义
这个暂时不写了,留待以后吧。