引言
平均方向性指数(Average Directional Index,简称ADX)是一种用于衡量市场趋势强度的技术分析工具。ADX指标由J. Welles Wilder Jr. 在1978年提出,广泛应用于股票、期货等金融市场。本文将深入解析ADX指标的计算公式,并提供源码示例,帮助投资者更好地理解和使用这一指标。
ADX指标公式原理
ADX指标的计算基于三个辅助指标:正方向移动平均(+DI)、负方向移动平均(-DI)和方向性强度(DI)。以下是这三个辅助指标的计算公式:
正方向移动平均(+DI)
+DI = 100 * [(HD - LD) / (HD + LD)] / N
其中:
- HD表示一段时间内最高价与当前价之差的最大值。
- LD表示一段时间内最低价与当前价之差的最大值。
- N表示计算周期。
负方向移动平均(-DI)
-DI = 100 * [(HD - LD) / (HD + LD)] / N
其中:
- HD和LD的定义与+DI相同。
方向性强度(DI)
DI = 100 * |(+DI - -DI) / (+DI + -DI)| / N
其中:
- N的定义与+DI和-DI相同。
平均方向性指数(ADX)
ADX = 100 * |DI| / N
其中:
- N表示计算周期。
ADX指标源码示例
以下是一个使用Python编写的ADX指标计算源码示例:
def calculate_adx(high_prices, low_prices, close_prices, period):
"""
计算ADX指标。
:param high_prices: 高价列表
:param low_prices: 低价列表
:param close_prices: 收盘价列表
:param period: 计算周期
:return: ADX指标值
"""
# 计算正方向移动平均(+DI)
plus_di = []
for i in range(len(high_prices) - period + 1):
hd = max(high_prices[i:i + period], key=max) - high_prices[i]
ld = max(low_prices[i:i + period], key=max) - low_prices[i]
plus_di.append(100 * (hd - ld) / (hd + ld) / period)
# 计算负方向移动平均(-DI)
minus_di = []
for i in range(len(high_prices) - period + 1):
hd = max(high_prices[i:i + period], key=max) - high_prices[i]
ld = max(low_prices[i:i + period], key=max) - low_prices[i]
minus_di.append(100 * (hd - ld) / (hd + ld) / period)
# 计算方向性强度(DI)
di = []
for i in range(len(high_prices) - period + 1):
di.append(100 * abs(plus_di[i] - minus_di[i]) / (plus_di[i] + minus_di[i]) / period)
# 计算平均方向性指数(ADX)
adx = 100 * abs(di[-1]) / period
return adx
# 示例数据
high_prices = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
low_prices = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
close_prices = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
period = 14
# 计算ADX指标
adx_value = calculate_adx(high_prices, low_prices, close_prices, period)
print("ADX指标值:", adx_value)
总结
通过本文,我们深入了解了ADX指标的计算公式和原理,并提供了Python源码示例。掌握ADX指标可以帮助投资者更好地把握市场趋势,从而做出更明智的投资决策。在实际应用中,投资者可以根据自身需求调整计算周期和参数,以适应不同的市场环境。
