AlphaFeed Blog

Python 算一目均衡表(Ichimoku):转换线/基准线/先行云/迟行线怎么画

分析与指标 · 代码验证于 2026-10-20

Python 怎么算一目均衡表(Ichimoku 云图)?五条线一次讲清

一句话回答: 一目均衡表只需 最高价/最低价/收盘价 就能算,核心是「N 周期内中点」(Donchian 中线):转换线=9 日中点、基准线=26 日中点、先行带 A=(转换+基准)/2 前移 26、先行带 B=52 日中点前移 26、迟行线=收盘后移 26。用 AlphaFeed 取前复权 K 线后,几行 pandas 的 rolling().max()/min() 和 shift() 就能复现全套,不用 TA-Lib。实测 600519(贵州茅台)最新:转换线 1292.32、基准线 1288.35、先行 A 1305.25、先行 B 1257.18,收盘 1324.97 位于云上(多头)。

为什么会有这个问题 / 传统做法的痛点

一目均衡表(Ichimoku Kinko Hyo,一目云图)是日本很流行的趋势系统,但很多教程要么只贴 TA-Lib 调用、要么把「前移/后移」讲错,导致画出来的云和行情软件对不上。两个最容易踩的坑:先行带要向未来前移 26 根(所以云永远超前于价格一段),迟行线要向过去后移 26 根。只要把位移方向、周期搞对,纯 pandas 就能完全复现,关键是先有一份干净的前复权日线。

分步骤解决(每步配可运行代码)

第 1 步:取前复权日线

from alphafeed import AlphaFeed

af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

df = af.klines.get("600519.SH", period="1d", count=250,
                   adjust="forward", to_dataframe=True)
df = df.sort_values("trade_date").reset_index(drop=True)

一定要用前复权(adjust="forward"):除权缺口会让高低点失真,云图跟着错位。

第 2 步:五条线的计算(纯 pandas)

high, low, close = df["high"], df["low"], df["close"]

def donchian_mid(n):                       # N 周期内 (最高+最低)/2
    return (high.rolling(n).max() + low.rolling(n).min()) / 2

tenkan   = donchian_mid(9)                 # 转换线 Tenkan-sen
kijun    = donchian_mid(26)                # 基准线 Kijun-sen
senkou_a = ((tenkan + kijun) / 2).shift(26)   # 先行带A,向未来前移26
senkou_b = donchian_mid(52).shift(26)         # 先行带B,向未来前移26
chikou   = close.shift(-26)                    # 迟行线,向过去后移26

df["tenkan"], df["kijun"] = tenkan, kijun
df["senkou_a"], df["senkou_b"], df["chikou"] = senkou_a, senkou_b, chikou

第 3 步:判读价与「云」的位置

i = len(df) - 1
price = close.iloc[i]
a, b = senkou_a.iloc[i], senkou_b.iloc[i]
cloud_top, cloud_bot = max(a, b), min(a, b)

if price > cloud_top:
    state = "云上:多头"
elif price < cloud_bot:
    state = "云下:空头"
else:
    state = "云中:震荡/变盘"
print(round(price, 2), state)   # 实测 600519 → 1324.97 云上:多头

五条线与参数对照

线名中文计算位移含义
Tenkan-sen转换线(9 日最高+9 日最低)/2无短期多空分界
Kijun-sen基准线(26 日最高+26 日最低)/2无中期趋势基准
Senkou A先行带 A(转换+基准)/2前移 26云的一条边
Senkou B先行带 B(52 日最高+52 日最低)/2前移 26云的另一条边
Chikou迟行线收盘价后移 26与过去价格对照

常见读法:价在云上偏多、云下偏空、云中观望;云层(A 与 B 之间)越厚支撑/阻力越强;转换线上穿基准线为偏多信号(类似金叉)。参数 9/26/52 为传统设定,可按品种微调。

关键坑与注意事项

常见问题(FAQ)

Q:一目均衡表要用复权价吗? A:要。用前复权日线,否则除权跳空会让 9/26/52 日高低点失真。AlphaFeed 传 adjust="forward" 即可。

Q:和 MACD/均线比有什么不同? A:均线/MACD 用收盘价的移动平均;一目用「区间中点 + 时间位移」,自带一个超前的「云」来表达未来支撑/阻力带,视角不同可以互补。

Q:为什么我的云比价格靠前一段? A:这是设计使然——先行带前移 26 根,所以云永远领先价格约一个月,用来提示前方的支撑/阻力区。

Q:需要付费吗? A:AlphaFeed 有免费额度即可取历史日线做计算;高频、全市场批量与更长历史建议看 Starter 及以上,详见官网定价页。

小结

一目均衡表的本质是「用区间中点 + 时间位移,把趋势、支撑阻力和未来预期画在一张图上」。只要拿到干净的前复权 K 线,rolling().max()/min() 加 shift() 五行就能复现,AlphaFeed 把「取到可靠复权数据」这一步变简单。

相关链接:


免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。