Adx 趋势是如何计算的
直接答案
“ADX 趋势”并非一个固定的单一品牌公式;大多数人指的是平均趋向指数(ADX)及其由方向性移动(DI)分量构成的计算方式。在常见形式中,该计算从价格变化开始,推导出方向性移动值(+DM 和 −DM),用真实波幅(TR)对其进行归一化,对结果进行平滑处理,然后将平滑后的方向性指标转换为 ADX 值(趋势强度)。
机制与定义(计算的基本构成)
以下是一个标准、自包含的 ADX 风格工作流程。目标是从 OHLC 价格数据中计算出一个表示趋势强度的数值。该计算需要一段价格时间序列(至少包含:High 和 Low;Close 用于计算变化和 TR 的变体)。
1) 输入与符号
假设你有按时间 t 索引的K线/蜡烛图,至少包含:
- High[t]
- Low[t]
- Close[t]
选择一个回溯周期长度 n(通常称为“周期”)。这个选择会影响平滑强度和灵敏度。
2) 方向性移动:+DM 和 −DM
对于每个时间步 t(从拥有前一根K线 t−1 后开始),根据高低点的变化计算方向性移动:
- UpMove = High[t] − High[t−1]
- DownMove = Low[t−1] − Low[t]
一个常见的规则集定义如下:
- +DM = 如果 UpMove > DownMove 且 UpMove > 0,则为 UpMove,否则为 0
- −DM = 如果 DownMove > UpMove 且 DownMove > 0,则为 DownMove,否则为 0
解释:每根K线中只有主导方向“胜出”,该方向的负向移动被舍弃。
3) 真实波幅:TR
真实波幅衡量价格的波动幅度,考虑了收盘价之间的缺口。一个常见的定义是:
- TR = max( High[t] − Low[t], abs(High[t] − Close[t−1]), abs(Low[t] − Close[t−1]) )
解释:TR 是方向性移动的归一化分母。
4) 对各分量进行平滑
方向性移动和 TR 通常在 n 根K线上进行平滑处理,然后再转化为比率。一种广泛使用的方法是 Wilder 风格的递归平滑,定义如下:
- SmoothedX[t] = SmoothedX[t−1] − (SmoothedX[t−1] / n) + X[t]
其中 X[t] 是 +DM[t]、−DM[t] 或 TR[t] 中的一个,取决于你正在平滑的序列。
重要细节:你必须为第一个计算窗口定义初始的 SmoothedX 值(通常是前 n 个观测值的总和,具体取决于平台的实现方式)。
5) 转换为方向性指标(+DI 和 −DI)
平滑后计算:
- +DI[t] = 100 × (Smoothed(+DM)[t] / Smoothed(TR)[t])
- −DI[t] = 100 × (Smoothed(−DM)[t] / Smoothed(TR)[t])
方向性指标将移动转化为可比较、归一化的“方向强度”。
6) 创建 DX 和 ADX
计算方向性指数(DX):
- DX[t] = 100 × abs(+DI[t] − −DI[t]) / (+DI[t] + −DI[t])
然后使用另一个 n 根K线的平滑步骤计算 ADX:
- ADX[t] = DX 在选定周期 n 上的平滑平均值
在许多实现中,初始 ADX 是前几个可用 DX 值的平均值,随后使用 Wilder 风格平滑或等效方法。
“ADX 趋势”所衡量内容的总结
最终得到的 ADX 数值旨在表示“趋势强度”而非方向。方向性指标(+DI 和 −DI)是独立的,表示方向;ADX 则总结了方向主导的强度。
证据或示例(可验证的小型工作流程)
由于计算依赖于精确的规则和初始条件,使用一个小而一致的数据集来验证方法是有帮助的。
本示例的假设(以便你可复现):
- 使用上述标准的 +DM/−DM 规则。
- 使用基于 High、Low 和 Close[t−1] 的标准 TR 定义。
- 使用周期 n = 14。
- 使用 Wilder 风格平滑。
独立验证的实用方法:
- 创建一个电子表格,包含 UpMove、DownMove、+DM、−DM、TR 的列。
- 对于第一个平滑窗口,按所选方法计算初始 Smoothed(+DM)、Smoothed(−DM) 和 Smoothed(TR)(通常为前 n 个值的总和)。
- 逐根K线向前应用 Wilder 平滑。
- 从平滑值计算 +DI 和 −DI。
- 从 +DI 和 −DI 的差值与和值计算 DX。
- 对 DX 进行平滑得到 ADX。
如果你的电子表格输出与某个工具的 ADX 线匹配(在舍入误差范围内),你就可以确信你使用的是相同的底层规则和初始化方式。
可选交叉验证:检查在高点上升而低点下降(或反之)的K线上,+DM 和 −DM 是否表现合理。如果某一方持续占主导,方向性指标应能反映这一点。
局限性、风险与失效模式
1) 实现差异
类似 ADX 的指标可能因以下因素而不同:
- 初始平滑值的初始化方式。
- TR 的确切定义(一些平台对缺口或数据异常的处理略有不同)。
- 平滑是否为 Wilder 风格,或使用其他平均方法。
- 某平台是否将变体标记为“ADX 趋势”。
即使微小差异也可能导致明显偏离。
2) 对周期 n 的敏感性
较长的 n 通常平滑更强,产生移动较慢的 ADX。较短的 n 可能对短期波动快速反应,可能产生不稳定的读数。这不是“更好”或“更差”的问题;它改变了数值所代表的含义。
3) 除零或接近零的分母
DX 使用 (+DI + −DI) 作为分母。如果两个方向性指标都接近零(例如,在非常平坦或低波动性的数据中),DX 可能不稳定或未定义,具体取决于软件如何处理零值。正确处理需要明确的规则。
4) 数据质量与缺失K线
如果 OHLC 数据存在缺失区间、过时值或不一致的K线构建,+DM、−DM 和 TR 可能基于错误的相邻假设(t−1 关系)计算。这可能导致误导性的 ADX 值。
5) 市场行为并非恒定
即使数学正确,ADX 的统计意义也取决于市场状态。历史计算不能保证未来相似性;ADX 是观察到的价格变动的转换,而非对未来走势的确定性预测。
验证或后续问题
要独立验证你看到的任何“ADX 趋势”计算:
- 确认使用的是哪种确切的 ADX 变体(周期 n、平滑方法、TR 定义、初始种子)。
- 从原始 OHLC 数据重新计算至少几个数据点。
- 检查中间序列(+DM、−DM、TR、平滑值、+DI/−DI)是否与你的工具输出匹配。
如果你愿意,告诉我你使用的平台或公式惯例(例如,确切周期和是否为 Wilder 风格平滑)。然后上述计算步骤可以精确映射到该惯例,而无需假设当前数据或提供商行为。