![Rank: 1](static/image/common/star_level1.gif)
等级: 新手上路
- 注册:
- 2024-1-12
- 曾用名:
|
我在python里用两种方法编辑KDJ指标。 发现发现和金字塔自带的KDJ指标的出来的结果都不相同。
1,
fastk, slowd = talib.STOCH(high_prices, low_prices, close_prices, fastk_period=9, slowk_period=3, slowd_period=3)
J = 3 * fastk - 2 * slowd
2,
# 定义参数
N = 9 # 用于计算LLV和HHV的时间窗口大小
P1 = 3 # 用于计算K(RSV的SMA)的时间周期
P2 = 3 # 用于计算D(K的SMA)的时间周期
# 确保数据长度足够
if len(AT_15m_high) < N + P1 + P2 - 1:
raise ValueError
# 计算LLV和HHV
RSV_values = []
for i in range(len(AT_15m_close) - N):
HHV_15m = np.maximum.reduce(AT_15m_high[i:i+N])
LLV_15m = np.minimum.reduce(AT_15m_low[i:i+N])
close_15m = AT_15m_close[i+N-1]
if HHV_15m == LLV_15m:
RSV = 0
else:
RSV = ((close_15m - LLV_15m) / (HHV_15m - LLV_15m)) * 100
RSV_values.append(RSV)
# 将RSV值转换为NumPy数组
RSV_array = np.array(RSV_values)
#确保RSV数组长度足够计算K
if len(RSV_array) < P1:
raise ValueError("RSV数据点不足,无法计算K")
# 计算K(RSV的SMA)
K = talib.MA(RSV_array, timeperiod=P1, matype=0)
# 确保K数组长度足够计算D
if len(K) < P2:
raise ValueError("K数据点不足,无法计算D")
# 计算D(K的SMA)
D = talib.MA(K, timeperiod=P2, matype=0) # 使用talib库的MA函数计算SMA
# 计算J
J = 3 * K[-1] - 2 * D[-1] # 由于我们只有一个K和D值,所以直接取它们的最后一个元素来计算J
这两个写法都和金字塔自带的KDJ指标得到的K,D,J数值有很大的误差。请问这是怎么回事? 或者你那有现成的KDJ指标能让我炒一下吗?
|
|