Vibe-Trading 一目均衡表五线计算详解:从指标公式到信号引擎实战
2026/9/10 16:11:27 网站建设 项目流程

Vibe-Trading 一目均衡表五线计算详解:从指标公式到信号引擎实战

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

一目均衡表(Ichimoku Kinko Hyo)是日本技术分析学派中自成体系的完整趋势评估框架,它以五条线(转换线、基准线、先行带A、先行带B、迟行线)和由先行带围合而成的"云带"(Kumo)为核心,把价格趋势、动量与时间周期统一到同一张图表中。本指南以 Vibe-Trading 仓库中的 五线计算参考文档 为骨架,结合同目录下的 信号系统参考文档 与 示例信号引擎源码,完整讲解五条线的数学定义、云带的判读方法,以及 Vibe-Trading 中基于 TK 交叉与三重过滤的纯 pandas 信号引擎实现。读完本文,你将掌握五线的逐行计算公式、各参数周期含义、云带多空判读,并能直接运行仓库自带的 OKX 行情信号示例。

一目均衡表的五线体系

Vibe-Trading 将一目均衡表定位为一套"standalone Japanese technical-analysis framework"(独立日本技术分析框架),五条线各司其职,共同构成对趋势的完整评估。五条线的核心定义如下表:

线名日文计算公式含义
转换线Tenkan-sen(9周期最高 + 9周期最低) / 2短期趋势
基准线Kijun-sen(26周期最高 + 26周期最低) / 2中期趋势
先行带ASenkou Span A(转换线 + 基准线) / 2,前移26周期云带上沿
先行带BSenkou Span B(52周期最高 + 52周期最低) / 2,前移26周期云带下沿
迟行线Chikou Span收盘价,后移26周期绘制趋势确认

转换线(Tenkan-sen):短期的价格中点

转换线是五线中最灵敏的一条,其公式为:

tenkan = (highest_high(9) + lowest_low(9)) / 2

其中highest_high(9)为最近 9 根K线的最高价最大值,lowest_low(9)为最近 9 根K线的最低价最小值。它反映的是短期(约2周交易日)的价格中点,本质上是周期为 9 的 Donchian 通道中线。

在仓库源码 example_signal_engine.py 中,这一计算被抽象为通用的_donchian_mid辅助方法,用 pandas 一行实现:

def _donchian_mid(self, high: pd.Series, low: pd.Series, period: int) -> pd.Series: return (high.rolling(period).max() + low.rolling(period).min()) / 2

可以看到,转换线计算只需传入tenkan_period=9即可复用同一函数,这也保证了后续所有 Donchian 中线类指标实现的一致性与可测试性。

基准线(Kijun-sen):中期的均衡点

基准线公式:

kijun = (highest_high(26) + lowest_low(26)) / 2

它取最近 26 根K线的价格中点,反映中期(约1个月)价格中点。文档特别强调:基准线也是价格的**"均衡点"**——在实际盘面中,价格回踩基准线常被视为重要的支撑/阻力参考。从 swarm 面板配置 的 Ichimoku 分析师指令中也可以看到,"Price re-tests of Kijun as S/R"(价格回测基准线视为支撑/阻力)是五要素判读中的重要一环。

先行带A(Senkou Span A):云带上沿

先行带A是转换线与基准线的简单平均,再前移26周期绘制:

span_a = (tenkan + kijun) / 2 # 前移26周期

由于它由快慢两线均值构成,本身融合了短期与中期信息;前移 26 周期意味着它被画在"未来",用于提前呈现当前价格区间对应的支撑/阻力前景。

先行带B(Senkou Span B):云带下沿

先行带B是更长周期(52)的 Donchian 中线,同样前移 26 周期:

span_b = (highest_high(52) + lowest_low(52)) / 2 # 前移26周期

52 周期大约对应一个季度(约3个月的交易日),因此先行带B反映的是更长期的价格均衡区间,通常比先行带A更平滑、更滞后。

迟行线(Chikou Span):趋势确认线

迟行线最为直观——它就是把当前收盘价后移26周期绘制:

chikou = close # 后移26周期绘制

迟行线的用途是确认趋势:当迟行线位于当前价格上方时,表明过去 26 周期前价格持续走强,为多头确认;位于下方则为空头确认。在 example_signal_engine.py 中,源码注释给出了其 pandas 实现方式(close.shift(-self.displacement)),并注明"不参与信号计算"——迟行线在 Vibe-Trading 的信号引擎中只作为确认要素存在,不直接进入买卖触发逻辑。

云带(Kumo):先行带之间的多空战场

先行带A与先行带B之间的区域称为云带(Kumo)。云的形状直接决定了趋势判读的方向性:

  • A > B:看涨云(通常绘制为绿色),价格位于云上方时趋势看多;
  • A < B:看跌云(通常绘制为红色),价格位于云下方时趋势看空;
  • 云带厚度反映支撑/阻力强度——云越厚,代表该区域的均衡区间越宽,被突破的难度越大。

从源码实现看,example_signal_engine.py 对云的处理值得注意:由于先行带 A、B 分别前移了 26 周期,源码用pd.concat对两条先行带逐行取最大/最小值来构造云的上沿与下沿:

cloud_top = pd.concat([span_a, span_b], axis=1).max(axis=1) cloud_bottom = pd.concat([span_a, span_b], axis=1).min(axis=1) above_cloud = close > cloud_top below_cloud = close < cloud_bottom bullish_cloud = span_a > span_b bearish_cloud = span_a < span_b

其中above_cloud/below_cloud判断价格与云的相对位置bullish_cloud/bearish_cloud判断云自身的方向——这两组布尔序列正是三重过滤中后两道过滤器的基础。

从五线到交易信号:TK 交叉与三重过滤

五线本身是"结构描述",而 Vibe-Trading 的一目均衡表技能(见 SKILL.md)把它落地为一套完整的信号生成体系。信号只在 TK 交叉事件发生时触发,并叠加三重过滤。

TK 交叉(核心信号)

转换线(T)与基准线(K)的交叉是信号触发的唯一扳机:

金叉(看涨)——转换线从下方穿越基准线,按交叉发生位置分档:

  • 强金叉:交叉发生在云带上方;
  • 中金叉:交叉发生在云带内部;
  • 弱金叉:交叉发生在云带下方。

死叉(看跌)——转换线从上方穿越基准线,同理按位置分档:

  • 强死叉:交叉发生在云带下方;
  • 中死叉:交叉发生在云带内部;
  • 弱死叉:交叉发生在云带上方。

交叉本身只能说明短期动能相对中期的转变,其"强弱"取决于所处云位,因此在信号引擎里交叉还必须与下面两道过滤配合。

三重过滤

为提升信号质量,引擎对每一个 TK 交叉事件施加三重过滤(参见 信号系统参考文档):

  1. TK 交叉:作为触发条件(第一道闸门);
  2. 价格与云的关系:价格在云上方偏多,在云下方偏空(方向确认);
  3. 云的方向:先行带A > B 为看涨云,A < B 为看跌云(趋势确认)。

三个条件必须全部一致才会产生信号,否则一律观望。对应到 SKILL.md 中的信号约定:

  • 强买入(Strong buy):看涨 TK 交叉 + 价格位于云上方 + 看涨云(A > B);
  • 强卖出(Strong sell):看跌 TK 交叉 + 价格位于云下方 + 看跌云(A < B);
  • 其余所有情况:观望(stand aside)。

信号值采用统一约定:1= 做多,-1= 做空,0= 观望。

源码中的信号生成逻辑

example_signal_engine.py 的SignalEngine.generate方法把上述规则翻译成了纯 pandas 向量化实现:

# --- TK 交叉检测 --- tk_cross_up = (tenkan > kijun) & (tenkan.shift(1) <= kijun.shift(1)) tk_cross_down = (tenkan < kijun) & (tenkan.shift(1) >= kijun.shift(1)) # --- 三重过滤信号 --- buy = tk_cross_up & above_cloud & bullish_cloud sell = tk_cross_down & below_cloud & bearish_cloud signal = buy.astype(int) - sell.astype(int)

tk_cross_up通过"当前周期 tenkan > kijun 且上一周期 tenkan <= kijun"精确捕捉金叉发生的那一根K线(死叉同理),随后用布尔与运算一次性完成三重过滤,buy.astype(int) - sell.astype(int)把信号压缩为 1 / -1 / 0。整套实现不依赖任何外部技术分析库,仅需 pandas 即可运行,依赖清单(见 SKILL.md)为:

pip install pandas numpy requests

其中requests仅用于示例中从 OKX 拉取行情。

预热要求:为什么需要 78 根K线

一目均衡表的各条线周期不同、位移不同,因此信号引擎存在硬性的预热(warm-up)要求:至少需要78 根K线才能产生有效信号。这个数字的来源在 信号系统参考文档 中解释得很清楚:52 周期计算(先行带B的最长回看窗口)+ 26 周期位移

源码 example_signal_engine.py 将其落实为运行时校验:

warmup = self.senkou_b_period + self.displacement for symbol, df in data_map.items(): signal = pd.Series(0, index=df.index, dtype=int) if len(df) < warmup: result[symbol] = signal continue

数据不足 78 根K线的标的会直接返回全 0 信号(即全程观望),而不是产生残缺或误导性的结果。这意味着在实际使用中,日线、小时线等任何周期的数据回看窗口都应至少覆盖 78 根,才能让云带完整前移并得到可靠的交叉判定。

参数与默认值

SignalEngine构造函数暴露了全部四个核心参数,默认值与一目均衡表的经典周期设定完全一致:

参数默认值作用
tenkan_period9转换线回看周期
kijun_period26基准线回看周期
senkou_b_period52先行带B回看周期
displacement26先行带前移 / 迟行线后移周期

在 example_signal_engine.py 中,这四个参数在__init__中被逐一保存为实例属性,generate方法内部通过self.tenkan_period等引用它们。参数化设计意味着你可以针对不同市场调整周期(例如短线交易者缩短 tenkan 周期以提高灵敏度),但需要注意:预热窗口warmup = senkou_b_period + displacement会随参数同步变化,调整senkou_b_perioddisplacement时必须同步增加数据回看长度。

实战运行:用 OKX 行情生成 BTC / ETH / SOL 信号

仓库在 example_signal_engine.py 中提供了可直接运行的完整示例:从 OKX 公开 API 拉取日线K线,送入SignalEngine生成信号并统计。

数据获取部分通过 OKXGET /api/v5/market/candles接口实现,拉取instId(如BTC-USDT)、bar(默认1D)、limit(默认 300 根)三个参数,随后把 API 返回的时间戳毫秒值转换为 pandas datetime 索引,并把open/high/low/close转为浮点类型,构造标准的 OHLCV DataFrame。

示例入口(example_signal_engine.py)的流程为:

  1. 依次获取BTC-USDTETH-USDTSOL-USDT三个标的各 300 根日线;
  2. 用默认参数构造SignalEngine()
  3. 调用engine.generate(data_map)得到每个标的的信号序列;
  4. 统计每个标的的做多/做空信号数量,并打印最近一次信号发生的日期。

将脚本置于agent/src/skills/ichimoku/目录下直接运行(python example_signal_engine.py),即可看到类似"=== 一目均衡表信号引擎 ==="的三标的信号统计输出。也可以在其他行情源上复用同一套逻辑——generate的输入约定非常明确:Dict[str, pd.DataFrame]映射,DataFrame 需包含open/high/low/close四列且 index 为 datetime,任何满足该约定的 OHLCV 数据(如 Vibe-Trading 的行情加载体系所提供的数据)都可直接接入。

在 Vibe-Trading 中的定位与扩展

一目均衡表技能在 Vibe-Trading 中不是孤立的指标工具,而是技术分析能力矩阵的一员。从 agent/SKILL.md 的能力清单可以看到,技术分析方向涵盖 candlestick(K线)、Elliott wave(波浪)、Ichimoku、SMC、harmonic(谐波)、chanlun(缠论)等多个学派。

更值得注意的是 swarm 面板配置 中的用法:面板内设有一位专门的Ichimoku Analyst智能体角色,其指令明确要求使用load_skill("ichimoku")加载本技能,并按五要素完成完整判读:

  • 云带(Kumo):Senkou Span A = (Tenkan+Kijun)/2 前移 +26;Senkou Span B = (52周期高低点)/2 前移 +26;云带内 A 穿越 B(Kumo twist)视为潜在的市场制度切换信号;
  • 转换线 / 基准线:Tenkan = (9高+9低)/2 为短期趋势,Kijun = (26高+26低)/2 为中期趋势,价格回踩 Kijun 视为支撑/阻力;
  • 迟行线(Chikou):高于 26 根前的价格为多头确认,低于则为空头确认,同时观察 Chikou 与云的交叉;
  • 五要素共振:价格 / Tenkan / Kijun / Chikou / 云的排列一致性;
  • Ichimoku 评分:以 −5 到 +5 的数值化打分呈现方向与置信度。

此外,该面板让 Ichimoku、经典技术指标、谐波、波浪、SMC 等分析并行运行,再由信号聚合器对共识与共振进行加权计分。这与本文所讲的五线计算一脉相承:五线是"计算层",TK 交叉与三重过滤是"信号层",而 swarm 面板则把它们提升为"多智能体协作判读层"。

结语

一目均衡表的五线计算并不复杂——三条 Donchian 中线(9/26/52)、一条均值(先行带A)、一条收盘价位移线(迟行线),加上统一的前移/后移 26 周期位移,就构成了整套框架的数学基础。但真正的价值在于围绕这五条线的系统性判读:TK 交叉找时机,云带位置定方向,云带方向定趋势,迟行线做确认。Vibe-Trading 的 示例信号引擎 用不到百行纯 pandas 代码就把这套逻辑完整落地,并且通过 78 根K线的预热校验与参数化设计,保证了信号在不同市场、不同周期上的可用性。无论是想快速理解五线公式、直接复用信号引擎,还是在 swarm 中扮演 Ichimoku 分析师,本仓库中的 五线计算文档、信号系统文档、SKILL.md 与示例源码都是最直接的参考起点。

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询