如何在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
相关产品推荐
相关产品推荐

