代码拉取完成,页面将自动刷新
package indicator
import (
"gitee.com/quant1x/pandas"
. "gitee.com/quant1x/pandas/formula"
)
// KDJ 指标
//
// RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
// RSV赋值:(收盘价-N日内最低价的最低值)/(N日内最高价的最高值-N日内最低价的最低值)*100
// K:EMA(RSV,M1,1);
// 输出K:RSV的M1日[1日权重]移动平均
// D:EMA(K,M2,1);
// 输出D:K的M2日[1日权重]移动平均
// J:3*K-2*D;
// 输出J:3*K-2*D
func KDJ(df pandas.DataFrame, N, M1, M2 int) pandas.DataFrame {
//CLOSE, HIGH, LOW stat.Series
var (
CLOSE = df.ColAsNDArray("close")
HIGH = df.ColAsNDArray("high")
LOW = df.ColAsNDArray("low")
)
// 计算N周期的最高价序列
x01 := HHV(HIGH, N)
// 计算N周期的最低价序列
x02 := LLV(LOW, N)
// CLOSE-LLV(LOW,N)
x11 := CLOSE.Sub(x02)
// (HHV(HIGH,N)-LLV(LOW,N))*100
x12 := x01.Sub(x02)
//(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100
RSV := x11.Div(x12).Mul(100)
//K:EMA(RSV,M1,1);
K := EMA(RSV, M1*2-1)
//D:EMA(K,M2,1)
D := EMA(K, M2*2-1)
// 3*K-2*D;
J := K.Mul(3).Sub(D.Mul(2))
return pandas.NewDataFrame(K, D, J)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。