住房城乡建设局网站首页,wordpress二維碼,网页设计与网站建设入门到精通,如可建设淘宝链接网站Python实现KDJ指标计算#xff1a;股票技术分析的利器系列#xff08;3#xff09; 介绍算法解释 代码rolling函数介绍计算LLV#xff08;最低价最小值#xff09;和HHV#xff08;最高价最大值#xff09;计算RSV计算SMA#xff08;简单移动平均#xff09; 完整代码… Python实现KDJ指标计算股票技术分析的利器系列3 介绍算法解释 代码rolling函数介绍计算LLV最低价最小值和HHV最高价最大值计算RSV计算SMA简单移动平均 完整代码计算结果 介绍
先看看官方介绍 KDJ(随机指标 用法 1.D指标80 时回档机率大D指标20时反弹机率大 2.K在20左右向上交叉D时视为买进信号 3.K在80左右向下交叉D时视为卖出信号 4.J100 时股价易反转下跌J0 时股价易反转上涨 5.KDJ 波动于50左右的任何信号其作用不大。 算法解释
RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;RSVRaw Stochastic Value原始随机值。RSV是根据最近N个交易日内的收盘价计算其相对于最高价和最低价的位置比例。公式为RSV (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100。其中LLV代表最低价的最小值HHV代表最高价的最大值。 LLVLowest Value最低价的最小值。LLV函数用于计算最近N个交易日内的最低价的最小值。 HHVHighest Value最高价的最大值。HHV函数用于计算最近N个交易日内的最高价的最大值。 SMASimple Moving Average简单移动平均线。SMA是一种用于平滑数据的常见方法通过计算一段时间内数据的平均值来观察价格的长期趋势。
KDJ指标中的K、D、J分别代表
K代表快速随机值是RSV的平滑移动平均线常用于观察价格的短期波动情况。D代表慢速随机值是K的平滑移动平均线用于观察价格的中期趋势。J代表J值是根据K和D计算得出的一个值常用于观察价格的长期趋势和判断超买超卖情况。
在KDJ指标中通常会设定两个参数M1和M2分别用于计算K和D的移动平均值。
代码
rolling函数介绍
rolling 函数通常与其他函数如 mean、sum、std 等一起使用以计算滚动统计量例如滚动均值、滚动总和等。
以下是 rolling 函数的基本语法
DataFrame.rolling(window, min_periodsNone, centerFalse, win_typeNone, onNone, axis0, closedNone)window: 用于计算统计量的窗口大小。min_periods: 每个窗口最少需要的非空观测值数量。center: 确定窗口是否居中默认为 False。win_type: 窗口类型例如 None、boxcar、triang 等默认为 None。on: 在数据帧中执行滚动操作的列默认为 None表示对整个数据帧执行操作。axis: 执行滚动操作的轴默认为 0表示按列执行操作。closed: 确定窗口的哪一端是闭合的默认为 None。
计算LLV最低价最小值和HHV最高价最大值
# 定义函数计算LLV最低价最小值和HHV最高价最大值
def calculate_llv_high_low(high, low, n):return low.rolling(windown).min(), high.rolling(windown).max()计算RSV
# 定义函数计算RSV
def calculate_rsv(close, llv_low, hhv_high):return (close - llv_low) / (hhv_high - llv_low) * 100计算SMA简单移动平均
# 定义函数计算SMA简单移动平均
def calculate_sma(data, window):return data.rolling(windowwindow).mean()完整代码
import pandas as pd# 定义函数计算LLV最低价最小值和HHV最高价最大值
def calculate_llv_high_low(high, low, n):return low.rolling(windown).min(), high.rolling(windown).max()# 定义函数计算RSV
def calculate_rsv(close, llv_low, hhv_high):return (close - llv_low) / (hhv_high - llv_low) * 100# 定义函数计算SMA简单移动平均
def calculate_sma(data, window):return data.rolling(windowwindow).mean()# 示例数据
data {CLOSE: 填每日收盘的数据,HIGH: 填每日最高的数据,LOW: 填每日最低的数据
}
df pd.DataFrame(data)# 设置参数
N 9
M1 3
M2 3# 计算LLV和HHV
df[LLV_LOW], df[HHV_HIGH] calculate_llv_high_low(df[HIGH], df[LOW], N)# 计算RSV
df[RSV] calculate_rsv(df[CLOSE], df[LLV_LOW], df[HHV_HIGH])# 计算K
df[K] calculate_sma(df[RSV], M1)# 计算D
df[D] calculate_sma(df[K], M2)# 计算J
df[J] 3 * df[K] - 2 * df[D]print(df)
计算结果