Ichimoku 策略的计算方式

Ichimoku 策略所需的计算参数及数据限制。

Ichimoku 策略是如何计算的

什么是 Ichimoku 策略的计算?

Ichimoku 策略指的是从市场价格数据系统性地计算 Ichimoku Kinko Hyo 指标各组成部分的过程。该指标生成若干条线以及位移后的“云”边界,所有这些均源自滚动统计——主要是回溯窗口内的最高高点和最低低点,以及移动平均平滑。

在考虑其使用方式之前,重要的是将稳定的机制(公式和所需输入)与可变条件(所选参数设置、数据频率和输入 OHLC 序列的质量)区分开来。如果你知道确切的公式,就可以独立计算各条线,并在不同实现之间比较结果。

核心输入与假设

要计算 Ichimoku 的组成部分,你需要一个按时间排序的 OHLC 价格数据序列,通常为每根K线(蜡烛图或时间间隔)的开盘价、最高价、最低价和收盘价。大多数 Ichimoku 实现基于最高价、最低价和收盘价进行计算。

你还需要以下参数(窗口长度),有时这些参数是可配置的:

  • Tenkan-sen 周期(常称为 转换线 长度)
  • Kijun-sen 周期(常称为 基准线 长度)
  • Senkou 跨度 B 周期(常称为 领先跨度 B 长度)
  • 位移/偏移量(前向云边界绘制的位置,以及滞后线向后移动的距离)
  • 可选:任一组件是否使用特定的平均方法(对于标准 Ichimoku,通常为滚动极值的中点)

用于验证的一个关键假设是:你使用相同的参数和位移规则,并以相同的方式定义“前几根K线”来计算滚动高点/低点(例如,当前K线是否包含在回溯窗口中)。

计算机制(公式级别)

Ichimoku 的标准结构可以理解为五个相关组成部分。命名可能略有不同,但数学逻辑是一致的。

1) Tenkan-sen(转换线)

Tenkan-sen 是 最高高点最低低点Tenkan 周期 内的中点。

如果我们定义:

  • HighestHigh(T) = 最近 T 根K线(包括当前K线,除非你的实现另有说明)中 最高价 的最大值
  • LowestLow(T) = 最近 T 根K线中 最低价 的最小值

那么:

  • Tenkan = (HighestHigh(TenkanPeriod) + LowestLow(TenkanPeriod)) / 2

2) Kijun-sen(基准线)

Kijun-sen 的计算方式相同,但使用 Kijun 周期

  • Kijun = (HighestHigh(KijunPeriod) + LowestLow(KijunPeriod)) / 2

3) Senkou Span A(领先跨度 A)

Senkou Span A 由上述中点得出,然后向前位移指定的量。

常见公式为:

  • SenkouA_unshifted = (Tenkan + Kijun) / 2
  • SenkouA = SenkouA_unshifted 向前位移 Displacement

换句话说,你在时间 t 计算该值,然后在时间 t + Displacement 处绘制。

4) Senkou Span B(领先跨度 B)

Senkou Span B 使用 Senkou 跨度 B 周期 内滚动极值的中点,然后向前位移相同的量:

  • SenkouB_unshifted = (HighestHigh(SenkouBPeriod) + LowestLow(SenkouBPeriod)) / 2
  • SenkouB = SenkouB_unshifted 向前位移 Displacement

5) Chikou Span(滞后跨度)

Chikou Span 是 收盘价 向后位移指定的量:

  • Chikou = 收盘价向后位移 Displacement

因此,你取时间 t 的收盘价,并在时间 t − Displacement 处绘制。

实证或示例:通过明确步骤进行自我验证

由于本解释中不涉及实时数据,最可靠的“证据”是你可以在任何历史 OHLC 数据集上运行的程序,以复现这些线。

假设你有按时间索引的 OHLC K线,t = 1, 2, 3, …,并选择以下参数:

  • TenkanPeriod = T1
  • KijunPeriod = T2
  • SenkouBPeriod = T3
  • Displacement = D

对于某个时间点 t(需有足够的历史数据,即 t ≥ max(T1, T2, T3)),你可以计算:

  1. 使用 最高价最低价 在K线 (t − T1 + 1 … t) 上计算 HighestHigh(T1) 和 LowestLow(T1)。
  2. Tenkan(t) = (HighestHigh(T1) + LowestLow(T1)) / 2。
  3. 在 (t − T2 + 1 … t) 上计算 HighestHigh(T2) 和 LowestLow(T2)。
  4. Kijun(t) = (HighestHigh(T2) + LowestLow(T2)) / 2。
  5. 在 (t − T3 + 1 … t) 上计算 HighestHigh(T3) 和 LowestLow(T3)。
  6. SenkouB_unshifted(t) = (HighestHigh(T3) + LowestLow(T3)) / 2。
  7. SenkouA_unshifted(t) = (Tenkan(t) + Kijun(t)) / 2。
  8. 应用位移:
    • SenkouA(t + D) = SenkouA_unshifted(t)
    • SenkouB(t + D) = SenkouB_unshifted(t)
  9. Chikou(t − D) = Close(t)。

然后你可以通过将对应时间点的绘制结果与图表实现(使用相同参数值和K线数据定义)进行比较来验证。

相关限制与失效模式

即使公式正确,如果验证不完整,Ichimoku 的计算仍可能失败或误导。主要限制包括:

  1. 历史K线不足 滚动高点/低点需要完整的回溯窗口。在数据集早期,Tenkan/Kijun/SenkouB 可能未定义,或因平台不同而使用较少点数计算,这会改变输出,导致跨平台比较不公平。

  2. 时间对齐与位移混淆 Senkou 跨度向前位移,Chikou 向后位移。如果你在未考虑位移的情况下将 Ichimoku 线与其他序列(如收盘价或K线)比较,可能会意外地比较不同时点的数值。

  3. 不同实现间的参数差异 两个图表可能显示“Ichimoku”,但使用不同的窗口长度或不同的位移量。由于该指标直接由参数驱动,即使两者都“标准”,输出也可能不同。

  4. 数据频率与 OHLC 来源差异 使用不同时间框架(例如 1 小时 vs 1 天K线)会改变滚动极值和平均值。此外,供应商可能在 OHLC 汇总上略有不同(尤其是在交易时段边界附近),导致不同的高/低值。

  5. 对尖峰和缺口的敏感性 由于 Tenkan、Kijun 和 SenkouB 依赖于最高高点和最低低点,单根极端K线可能显著移动中点。这是使用滚动极值的结构性特性。

验证与下一步检查

要独立验证计算,你可以进行三项实用检查,而无需依赖任何“信号”解释:

  1. 确认你对 TenkanPeriod、KijunPeriod、SenkouBPeriod 和 Displacement 使用了 相同的参数
  2. 使用明确的滚动窗口公式重新计算一个历史时间点,然后检查你计算出的 Tenkan/Kijun/Senkou 是否与图表在同一时间点显示的值一致。
  3. 验证 位移:确保 SenkouA 和 SenkouB 在时间 t + D 处绘制,Chikou 在时间 t − D 处绘制。

如果你想深入理解,下一步有用的操作是了解更改设置如何影响进入滚动极值的K线,以及位移如何改变视觉对齐。相关内容可参考:

  • /forex-strategies/indicator-based-forex-strategies/ichimoku-strategies/how-do-settings-change-ichimoku-strategies/
外汇和差价合约交易具有重大风险。FoxiForex的信息仅用于教育,不构成个人财务建议。赞助内容会被清楚标注。