Ichimoku 趋势是如何计算的?(公式、输入和验证)
直接答案
Ichimoku 趋势(通常被称为 Ichimoku “云”系统)是通过结合多个基于固定回溯周期内滚动最高高点和最低低点计算出的线条来构建的。这些线条随后在时间上向前或向后移动,以形成趋势结构的“云”视图。其核心计算是确定性的:一旦您选择了标准周期并提供了所需的价格序列,就可以精确地复现这些数值。
机制或定义
Ichimoku 由五个命名组件构成,它们都源于同一个基本思想:取近期价格范围的中点。在此背景下:
- 高点(High) 是某个时间窗口内的最高价格。
- 低点(Low) 是某个时间窗口内的最低价格。
- 范围中点 是高点和低点的平均值:(高点 + 低点) / 2。
- 滚动窗口 指的是每个新K线都会使用最近N个观测值更新回溯窗口。
标准的 Ichimoku 设置使用以下周期长度(通常标记为):
- Tenkan-sen 回溯周期(较短窗口)
- Kijun-sen 回溯周期(中等窗口)
- Senkou Span A 和 Senkou Span B 组件(云的边界)
- Chikou Span(来自过去收盘价的位移线)
由于具体周期可能因设置而异,因此最好先选择周期,再根据这些周期计算每条线。如果您使用常见的默认周期,就可以复现广泛共享的图表;如果您更改设置,则必须在所有组件中一致地使用新的窗口长度。
公式(滚动高点/滚动低点模型)
设每个K线的时间索引为 t。对于任意窗口长度 N,定义:
- HighestHigh(N, t) = 在时间 t 结束的区间内(通常为包括 t 的最近 N 根K线)的最高高点
- LowestLow(N, t) = 在时间 t 结束的区间内(通常为包括 t 的最近 N 根K线)的最低低点
然后主要线条通过中点计算得出:
- Tenkan-sen(转换线)
- Tenkan(t) = (HighestHigh(TenkanPeriod, t) + LowestLow(TenkanPeriod, t)) / 2
- Kijun-sen(基准线)
- Kijun(t) = (HighestHigh(KijunPeriod, t) + LowestLow(KijunPeriod, t)) / 2
- Senkou Span A(领先跨度1)
- SpanA(t) = (Tenkan(t) + Kijun(t)) / 2
- Senkou Span B(领先跨度2)
- SpanB(t) = (HighestHigh(SpanBPeriod, t) + LowestLow(SpanBPeriod, t)) / 2
- Chikou Span(滞后跨度)
- Chikou(t) = Close(t − ChikouShift)
转换为“云”视图
其中两个计算出的组件会以时间位移方式显示:
- Senkou 跨度 会向前移动一个固定的 前移量(通常称为“向前投影”)。
- Chikou 跨度 会向后移动一个固定的 后移/滞后量。
从数学上看,位移改变的是数值在图表上的位置,而不是其底层值的计算方式。如果您希望独立验证,请记录所选的位移量并精确应用。
证据或示例
具有明确假设的可复现实例
假设您拥有包含 High、Low 和 Close 字段的时间序列K线。选择以下假设:
- 选择 TenkanPeriod = N1 和 KijunPeriod = N2。
- 选择 SpanBPeriod = N3。
- 选择 前移量 = S 用于 Senkou 跨度。
- 选择 Chikou 位移量 = S(许多实现将这些位移绑定在一起,但您应将其视为一个参数)。
选择任意时间点 t,确保您有足够的历史数据来形成所有滚动窗口(您至少需要从 t 开始的 max(N1, N2, N3) 根K线,再加上根据图表逻辑中的位移显示规则所需的额外K线)。
现在计算:
- HighestHigh(N1, t) 和 LowestLow(N1, t)
- Tenkan(t) 作为它们的中点
- HighestHigh(N2, t) 和 LowestLow(N2, t)
- Kijun(t) 作为它们的中点
- SpanA(t) 作为 (Tenkan(t) + Kijun(t)) / 2
- HighestHigh(N3, t) 和 LowestLow(N3, t)
- SpanB(t) 作为它们的中点
- Chikou(t) = Close(t − S)
最后在图表上放置:
- SpanA(t) 和 SpanB(t) 在时间 t + S 处绘制(未来位移)
- Chikou(t) 在时间 t 处绘制(但数据来源于时间 t − S 的过去收盘价)
如果另一个人使用相同的价格输入和相同的参数值,他们应该能计算出相同的原始线条值(前提是K线对齐规则和窗口包含性一致)。
哪些数据要求重要
要一致地计算 Ichimoku 趋势组件,您必须明确:
- K线时间框架(例如,1分钟 vs 1小时),因为滚动窗口是按K线操作的。
- 价格数据源字段(High 和 Low 是计算范围中点所必需的;Close 是 Chikou 所必需的)。
- “最近N根K线”的确切解释(端点是否包含)。不同平台在窗口处理上可能有差异。
- 用于绘图的位移量。
局限性和风险
1) 参数和实现差异
上述公式是确定性的,但 设置(回溯长度和位移)可能不同。更改 N1、N2、N3 或 S 会改变结果线条。此外,不同实现可能在以下方面存在差异:
- 如何处理初始K线(预热期)
- 滚动窗口是否包含当前K线的高/低点
- 如何将位移值对齐到图表索引
实质性限制:即使两个图表都声称是“Ichimoku 趋势”,如果它们的参数或窗口对齐方式不同,图表外观也可能不同。
2) 平滑和位移带来的滞后
即使计算正确,Ichimoku 线条仍可能是 滞后的,因为它们总结的是过去的高点和低点,然后为了可视化而将线条向前/向后移动。这意味着云的边界反映的是过去时期的信息,而非即时状况。
3) 对市场微观结构和数据质量的敏感性
该系统依赖于高/低极值。这使其对以下因素敏感:
- 数据错误(缺失K线、异常值)
- 品种定义和交易时段处理(取决于您的数据源)
- 其他市场的公司行为或产品变更(在现货外汇中较少见,但数据定义仍然重要)
失效模式:如果高/低序列存在噪声或不一致,计算出的中点和云边界将继承这些噪声。
4) 误将线条视为独立信号
由于 Ichimoku 主要是一种基于范围的趋势组件结构化视图,一个实际风险是将任何单一线条或交叉视为孤立的决策规则,而不考虑这些值是如何计算和位移的更广泛背景。
验证或下一步问题
要独立验证 Ichimoku 趋势的计算:
- 记下您选择的 TenkanPeriod、KijunPeriod、SpanBPeriod 和位移量。
- 确认您的输入序列包含相同时间框架的 High、Low 和 Close。
- 使用滚动最高高点和最低低点的中点重新计算 Tenkan 和 Kijun。
- 根据这些值重新计算 SpanA 和 SpanB。
- 应用绘图时使用的相同 前移和后移 位移量。