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)),你可以计算:
- 使用 最高价 和 最低价 在K线 (t − T1 + 1 … t) 上计算 HighestHigh(T1) 和 LowestLow(T1)。
- Tenkan(t) = (HighestHigh(T1) + LowestLow(T1)) / 2。
- 在 (t − T2 + 1 … t) 上计算 HighestHigh(T2) 和 LowestLow(T2)。
- Kijun(t) = (HighestHigh(T2) + LowestLow(T2)) / 2。
- 在 (t − T3 + 1 … t) 上计算 HighestHigh(T3) 和 LowestLow(T3)。
- SenkouB_unshifted(t) = (HighestHigh(T3) + LowestLow(T3)) / 2。
- SenkouA_unshifted(t) = (Tenkan(t) + Kijun(t)) / 2。
- 应用位移:
- SenkouA(t + D) = SenkouA_unshifted(t)
- SenkouB(t + D) = SenkouB_unshifted(t)
- Chikou(t − D) = Close(t)。
然后你可以通过将对应时间点的绘制结果与图表实现(使用相同参数值和K线数据定义)进行比较来验证。
相关限制与失效模式
即使公式正确,如果验证不完整,Ichimoku 的计算仍可能失败或误导。主要限制包括:
-
历史K线不足 滚动高点/低点需要完整的回溯窗口。在数据集早期,Tenkan/Kijun/SenkouB 可能未定义,或因平台不同而使用较少点数计算,这会改变输出,导致跨平台比较不公平。
-
时间对齐与位移混淆 Senkou 跨度向前位移,Chikou 向后位移。如果你在未考虑位移的情况下将 Ichimoku 线与其他序列(如收盘价或K线)比较,可能会意外地比较不同时点的数值。
-
不同实现间的参数差异 两个图表可能显示“Ichimoku”,但使用不同的窗口长度或不同的位移量。由于该指标直接由参数驱动,即使两者都“标准”,输出也可能不同。
-
数据频率与 OHLC 来源差异 使用不同时间框架(例如 1 小时 vs 1 天K线)会改变滚动极值和平均值。此外,供应商可能在 OHLC 汇总上略有不同(尤其是在交易时段边界附近),导致不同的高/低值。
-
对尖峰和缺口的敏感性 由于 Tenkan、Kijun 和 SenkouB 依赖于最高高点和最低低点,单根极端K线可能显著移动中点。这是使用滚动极值的结构性特性。
验证与下一步检查
要独立验证计算,你可以进行三项实用检查,而无需依赖任何“信号”解释:
- 确认你对 TenkanPeriod、KijunPeriod、SenkouBPeriod 和 Displacement 使用了 相同的参数。
- 使用明确的滚动窗口公式重新计算一个历史时间点,然后检查你计算出的 Tenkan/Kijun/Senkou 是否与图表在同一时间点显示的值一致。
- 验证 位移:确保 SenkouA 和 SenkouB 在时间 t + D 处绘制,Chikou 在时间 t − D 处绘制。
如果你想深入理解,下一步有用的操作是了解更改设置如何影响进入滚动极值的K线,以及位移如何改变视觉对齐。相关内容可参考:
- /forex-strategies/indicator-based-forex-strategies/ichimoku-strategies/how-do-settings-change-ichimoku-strategies/