KDJ 随机指标
KDJ 指标又叫随机摆动指标(Stochastics Oscillator),是由乔治·蓝恩博士所创,是一种实用的技术分析指标。它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具之一。
KDJ 指标由 k 线数值与 D 线数值和 J 线数值,共计三条曲线组合而成。并且三条曲线的数值只在 0—100 之间变动。其中波动最快速的是指标线 J,其次是指标线 K,波动最缓慢的是指标线 D。
KDJ 根据统计学原理,通过一个特定的周期(常为 9 日、9 周等)内出现过的最高价、最低价及最后一个计算周期的收盘价及这三者之间的比例关系,来计算最后一个计算周期的未成熟随机值 RSV,然后根据平滑移动平均线的方法来计算 K 值、D 值与 J 值,并绘成曲线图来研判股票走势。
KDJ 计算主要有 4 步:
(1) 计算 RSV:RSV=(C-Ln)/(Hn-Ln)×100
C 为当天的收盘价;Ln 为之前 n 日内的最低价;Hn 为之前 n 日内的最高价。
(2)计算 K:K 值 =2/3×前一日 K 值 +1/3×当日 RSV
(3)计算 D:D 值 =2/3×前一日 D 值 +1/3×当日 K 值
(4)计算 J:J 值 =3* 当日 K 值 -2* 当日 D 值
若无前一日 K 值与 D 值,则可分别用 50 来代替。
指标参数:
y1 |
K输出列 |
y2 |
D输出列 |
y3 |
J输出列 |
n |
数字,时间周期,如 9 |
函数代码:
A |
B |
|
1 |
func KDJ(A,$y1,$y2,$y3,n) |
=A.derive@o(:kdj_hn,:kdj_ln,kdj_rsv) |
2 |
=A.run(max( 最高 [1-n:0]):kdj_hn,min(最低 [1-n:0]):kdj_ln,(收盘 -kdj_ln)/(kdj_hn-kdj_ln)*100:kdj_rsv) |
|
3 |
=A.run(if(#>1,2/3*${y1}[-1]+1/3*kdj_rsv,50):${y1},if(#>1,2/3*${y2}[-1]+1/3*${y1},50):${y2},3*${y1}-2*${y2}:${y3}) |
|
4 |
=A.alter(;kdj_hn,kdj_ln,kdj_rsv) |
将函数保存在 indicator.splx 中。
举例:调用函数计算浦发银行 2024 年的 KDJ 指标,n 取 9。
A |
B |
|
… |
… |
|
5 |
=call@f("indicator.splx") |
登记脚本中的函数 |
6 |
… |
计算出源数据 |
7 |
=A6.derive(:K,:D,:J) |
增加要返回的指标字段 |
8 |
=KDJ(A7,K,D,J,9) |
调用函数计算指标 |
运行效果: