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

解决pandas_ta计算的Ichimoku指标在mplfinance ETH图表中偏移问题

解决mplfinance中Ichimoku指标偏移的问题

核心问题分析

  • 数据拼接错误:你使用pd.concat([df, ich])时未指定axis=1,默认按行拼接数据,导致原K线数据和Ichimoku指标数据被堆叠而非横向合并,直接引发索引错位。
  • 迟行线(chikou_span)的延迟特性:该指标默认滞后26个周期,若直接绘图会出现在当前K线右侧,需要手动调整索引对齐到对应的历史K线位置。

修正后的完整代码

import pandas as pd
import pandas_ta as ta
import mplfinance as mpl

# 读取数据
df = pd.read_csv('.../ETH-USD.csv', index_col=0, parse_dates=True)

# 计算Ichimoku指标并重命名列
new_names = {
    'ISA_9': 'tenkan_sen', 
    'ISB_26': 'kijun_sen', 
    'ITS_9': 'senkou_span_a', 
    'IKS_26': 'senkou_span_b', 
    'ICS_26': 'chikou_span'
}
# 获取Ichimoku的主指标数据([0]对应指标DataFrame,[1]是Senkou Span的扩展数据)
ich_df = ta.ichimoku(df['High'], df['Low'], df['Close'], senkou=True)[0].rename(columns=new_names)

# 关键:按列合并原数据和指标数据(axis=1)
df = pd.concat([df, ich_df], axis=1)

# 处理迟行线:将索引左移26个周期,对齐到对应的历史K线位置
df['chikou_span_shifted'] = df['chikou_span'].shift(-26)

# 准备绘图的附加指标列表
apds = [
    mpl.make_addplot(df['tenkan_sen'], color='blue'),
    mpl.make_addplot(df['kijun_sen'], color='red'),
    # 使用调整后的迟行线绘图
    mpl.make_addplot(df['chikou_span_shifted'], color='green')
]

# 绘制蜡烛图
mpl.plot(df, type='candle', style='yahoo', addplot=apds, figsize=(12,5))

额外说明

  • 若需要绘制云带(senkou_span_a和senkou_span_b),可利用mplfinance的fill_between功能,将两个指标传入make_addplot并设置对应参数实现填充。
  • mplfinance会自动跳过NaN值绘图,无需额外处理空值,只要确保数据索引正确对齐即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:37:33