You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Numpy/Pandas中将随机震荡指标从(14,1,3)平滑调整为(14,3,3)

随机震荡指标(14,1,3)改(14,3,3)的代码修改方案

修改逻辑

你原有代码实现的是(14,1,3)参数的指标,三个参数分别对应:%K统计周期 / %K平滑周期 / %D平滑周期,要改成(14,3,3)只需要调整%K的平滑逻辑即可,具体逻辑如下:

  • 14周期的高低价极值统计逻辑保持不变
  • 新增对原始计算得到的未平滑%K做3周期SMA平滑的步骤,得到最终的%K值
  • %D的计算逻辑保持不变,仅需将数据源替换为平滑后的%K即可

具体修改点

  • 新增%K平滑周期的变量定义
  • 原始%K计算完成后,新增3周期SMA平滑逻辑

修改后完整代码

df.sort_index(ascending=False,inplace=True) # 我的股票数据是按时间倒序排列的

k_period = 14
k_smooth_period = 3 # 新增的%K平滑周期
d_period = 3

LOW,HIGH,CLOSE = "LOW", "HIGH", "CLOSE" # 列名定义

# 计算过去14个周期的最高价最大值
df['n_high'] = df[HIGH].rolling(k_period).max()

# 计算过去14个周期的最低价最小值
df['n_low'] = df[LOW].rolling(k_period).min()

# 计算未平滑的原始%K
df['%K'] = (df[CLOSE] - df['n_low']) * 100 / (df['n_high'] - df['n_low'])
# 新增:对原始%K做3周期SMA平滑,得到最终的%K
df['%K'] = df['%K'].rolling(k_smooth_period).mean()

# 用平滑后的%K计算3周期SMA得到%D
df['%D'] = df['%K'].rolling(d_period).mean()

内容的提问来源于stack exchange,提问作者Deshwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:27:03