楼主: Laura921
539 0

[其他] 【因子探索】 ADX [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-9-11
最后登录
2018-9-11

楼主
Laura921 发表于 2025-11-24 15:07:28 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

1. ADX 指标的基本概念

ADX,全称为 Average Directional Movement Index(平均趋向指数),是由著名技术分析专家 威尔斯·威尔德 所提出。该指标主要用于评估市场趋势的强弱程度,而非判断价格走势的方向性

这一点非常关键:

  • 高 ADX 值:表明市场正处于明显的趋势状态,可能是强劲上涨,也可能是持续下跌。
  • 低 ADX 值:说明市场缺乏明确方向,处于盘整或震荡行情中。

2. ADX 的组成部分

ADX 指标系统通常由三个核心部分构成:

  • +DI(正向趋向指标):反映当前上升动能的强度
  • -DI(负向趋向指标):衡量当前下降趋势的力度
  • ADX(平均趋向指数):基于 +DI 与 -DI 的差值计算,并经过平滑处理,用以体现整体趋势的稳定性和强度
ta.ADX

3. TA-Lib 中的函数实现方式

在技术分析库 TA-Lib 中,ADX 的主要调用函数如下:

# 返回三个数组:ADX, PLUS_DI, MINUS_DI
adx, plus_di, minus_di = ta.ADX(high, low, close, timeperiod=14)

其参数包括:

  • high
    :周期内的最高价序列
  • low
    :周期内的最低价序列
  • close
    :周期内的收盘价序列
  • timeperiod
    :计算周期,默认值为 14,这也是最广泛使用的设置。

此外,TA-Lib 还提供了一些相关扩展函数:

  • ta.ADXR(high, low, close, timeperiod=14)
    :用于计算 ADXR,即当前 ADX 与 n 期前 ADX 的均值,起到进一步平滑趋势信号的作用。
  • ta.PLUS_DI
    ta.MINUS_DI
    ta.PLUS_DM
    ta.MINUS_DM
    等函数可分别提取 +DI、-DI 及其他子指标,便于独立调用和组合分析。

4. 如何正确解读 ADX?

a. 趋势强度的判断(核心功能)

这是 ADX 最根本的应用场景:

  • ADX < 20:表示市场趋势微弱,处于横盘震荡或无趋势阶段。此时趋势跟踪策略(如均线交叉)容易出现频繁止损。
  • ADX > 25:意味着市场已形成有效趋势,适合启动趋势追踪交易策略。
  • ADX > 40:显示市场处于极强的单边行情中,但也可能预示趋势接近尾声,需警惕反转风险。
  • ADX 从高位回落:暗示现有趋势正在衰减,市场或将进入整理或反转阶段。

b. 判断趋势方向(结合 +DI 与 -DI)

尽管 ADX 本身不指示方向,但配合 +DI 和 -DI 可辅助识别买卖时机:

  • 潜在买入信号:当 +DI 从下方上穿 -DI,且 ADX 同步上升(确认趋势增强),可视为多头机会。
  • 潜在卖出信号:当 -DI 从下方向上穿越 +DI,同时 ADX 上扬,可能构成空头入场点。

注意:+DI 与 -DI 的交叉信号较为频繁,在 ADX 值偏低(如低于 20)时,这些交叉多为噪音,容易产生误导,因震荡市中价格反复波动。

5. 实战应用案例(Python 实现)

import pandas as pd
import numpy as np
import talib as ta
import matplotlib.pyplot as plt

# 假设我们有一个包含‘High', 'Low', 'Close'的DataFrame ‘df'
# 例如:df = pd.read_csv('your_data.csv', index_col='Date', parse_dates=True)

# 计算 ADX 指标,周期为14
df['ADX'] = ta.ADX(df['High'], df['Low'], df['Close'], timeperiod=14)
df['PLUS_DI'] = ta.PLUS_DI(df['High'], df['Low'], df['Close'], timeperiod=14)
df['MINUS_DI'] = ta.MINUS_DI(df['High'], df['Low'], df['Close'], timeperiod=14)

# 简单策略:当趋势强劲(ADX > 25)且 +DI 上穿 -DI 时,产生买入信号
df['Signal'] = np.where((df['ADX'] > 25) & (df['PLUS_DI'] > df['MINUS_DI']), 1, 0)

# 绘制图表
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), sharex=True)

# 价格图表
ax1.plot(df.index, df['Close'], label='Close Price', linewidth=1)
ax1.set_title('Price Chart')
ax1.legend()

# 指标图表
ax2.plot(df.index, df['ADX'], label='ADX', color='black', linewidth=2)
ax2.plot(df.index, df['PLUS_DI'], label='+DI', color='green', linewidth=1)
ax2.plot(df.index, df['MINUS_DI'], label='-DI', color='red', linewidth=1)
ax2.axhline(y=20, linestyle='--', color='gray', alpha=0.7)
ax2.axhline(y=25, linestyle='--', color='blue', alpha=0.7)
ax2.set_title('ADX Indicator')
ax2.legend()

plt.show()

6. 使用注意事项与局限性

  • 滞后性:ADX 是基于历史价格数据构建的,属于典型的滞后型指标,无法提前预测趋势起点。
  • 不指示方向:必须联合 +DI/-DI 或其他方向性工具(如移动平均线)才能确定进出场方向。
  • 震荡市表现不佳:在 ADX 数值较低的无趋势环境中,其信号可靠性显著下降。
  • 参数优化空间:虽然默认采用 14 周期是行业惯例,但可根据不同交易品种和时间框架进行调整。例如短线交易者可能选用 7 周期,而长线投资者倾向使用 21 周期。

总体而言,ADX 是一个高效的“趋势强度过滤器”。它最大的价值在于帮助交易者回答一个关键问题:“当前市场是否存在足够强的趋势值得参与?” 从而避免在无序震荡行情中盲目操作导致亏损。

7. 数字合约市场的实战测试报告

基于上述对 ADX 指标的理论梳理(内容由 AI 整理),结合本人在数字资产合约领域的长期研究经验,现分享一份基于真实市场数据的 ADX 实战测试成果。

所有测试数据来源于币安合约市场,具备可复现性(可通过官方 API 获取原始数据)。本次实验聚焦两大目标:一是探索利用 ADX 构建选币模型的有效性;二是通过该指标识别市场运行状态,优化交易决策。

一、选币逻辑与测试架构设计

在数字合约二级市场的实践中,我始终坚持“波动驱动,趋势主导”的核心理念。因此,策略并不追求传统意义上的“价值投资”,而是专注于挖掘具备动量特征的高波动币种(常被称为“炒作币”或“垃圾币”),执行“快进快出”的短线多头策略。

具体规则如下:

  • 每小时进行一次仓位评估与调整;
  • 仅做多,不参与做空;
  • 通过 ADX 衍生的元因子模型筛选标的。

测试方法为:遍历币安平台超过 500 个合约交易对,每次选取因子得分最高(df['factor'])的币种建仓。通过调整周期参数(n 值)进行多轮回测,验证策略稳健性。

df['adx'] = ta.ADX(df['high'], df['low'], df['close'], n)
df['adx_close'] = df['adx'] / df['close']
df['factor'] = df['adx_close'].rolling(n).std()

二、初步测试结果:周期 n=12 的表现回顾

在设定 n=12 的条件下,策略展现出一定的趋势捕捉能力,尤其在主流币种快速拉升阶段能及时响应。但在极端震荡行情中仍出现多次误判,导致回撤扩大。后续将结合 ADX 阈值过滤与波动率加权机制进一步优化模型稳定性。

首先,选取周期 n=12 作为初始测试参数,对 2021 年至 2025 年的月度收益率进行回测,所得数据如下(其中 2025 年 12 月数据尚未完整,标记为 nan):
month        1        2        3        4        5        6        7        8        9        10       11       12
year                                                                                                              
2021   1733.07%   76.12%    7.62%  -41.17%  -66.33%  -54.70%  -19.70%   54.11%  -43.96%  113.58%  -35.63%  -24.20%
2022    -49.81%  -10.94%   -6.78%  -44.07%  -40.05%  -45.47%   22.06%  -25.38%   -8.14%  -38.37%  -45.47%  -51.36%
2023     -1.01%  -34.34%  -29.69%  -38.18%  -57.46%  -29.16%  -31.91%  -36.39%  -20.75%  -22.35%  -40.51%   -9.11%
2024    -45.13%  -11.12%  -22.52%  -56.87%   14.25%  -46.00%   -2.06%  -34.12%  -27.30%  -31.35%  -15.05%  -47.99%
2025    -43.10%  -28.81%   -4.25%  -43.90%  -35.89%  -47.97%  -30.34%  -33.52%  -30.92%  -54.46%  -25.93%     nan%
mean    318.80%   -1.82%  -11.13%  -44.84%  -37.10%  -44.66%  -12.39%  -15.06%  -26.22%   -6.59%  -32.52%  -33.16%
从回测结果来看,2021 年 1 月曾出现高达 1733.07% 的月度收益,显示出极端行情下的爆发力。然而,此类表现不具备持续性。为进一步验证策略的实际可行性,以 100 USDT 为初始本金、最低交易门槛为 10 USDT 进行实盘模拟,结果更具参考价值:
???? 资金阈值检查:初始本金100USDT,最低交易门槛10.0USDT
最高累计资金:5945.64USDT,最低累计资金:0.00USDT
??  触发停止交易!时间:2022-10-19 22:00:00,当前累计资金:10.00USDT
模拟结果显示:仅依赖原始 ADX 元因子构建的交易策略波动剧烈,资金曲线迅速下滑,很快触及清盘线。这表明该策略在真实交易环境中缺乏稳定性与可行性。 ### 策略优化方向:参数调整与多因子过滤机制 原始策略表现不佳的根本原因在于未引入其他市场关键变量进行条件筛选。单一因子难以应对复杂多变的市场环境,通常需结合振幅、涨跌幅、成交量等辅助指标进行综合判断,并通过参数扫描寻找适配不同市场的最优周期值。 为此,将周期参数调整为 23 后重新进行回测,结果如下:
???? 资金阈值检查:初始本金100USDT,最低交易门槛10.0USDT
最高累计资金:2851.30USDT,最低累计资金:0.00USDT
??  触发停止交易!时间:2023-06-10 04:00:00,当前累计资金:8.67USDT

多头分月总收益率:
 month       1        2        3        4        5        6        7        8        9        10       11       12
year                                                                                                             
2021   919.66%   37.02%   42.10%  -45.75%  -70.87%  -30.02%   -7.33%  118.25%   -1.31%  213.69%  -38.74%  -15.45%
2022   -44.38%   -9.85%   31.86%  -43.27%  -36.55%  -46.58%   17.17%  -23.60%   -8.53%  -30.51%  -33.71%  -13.77%
2023    18.04%    9.32%   -9.17%  -33.15%  -39.86%  -39.30%  -14.18%  -33.31%   -4.21%    4.37%   13.94%  -17.37%
2024   -23.25%   18.14%  -14.09%  -53.68%   23.32%  -44.27%   21.15%   -1.79%  -51.69%  -29.34%   -0.10%  -47.35%
2025   -38.87%  -14.59%  -37.58%  -14.66%  -32.80%  -36.15%  -37.69%   -7.11%   -8.96%  -54.32%  -27.58%     nan%
mean   166.24%    8.01%    2.62%  -38.10%  -31.35%  -39.26%   -4.18%   10.49%  -14.94%   20.78%  -17.24%  -23.49%
尽管周期为 23 的策略在累计最高资金上低于周期 12,但其停止交易的时间延后了近 8 个月,说明参数优化有效提升了策略的生存能力与稳定性。 进一步对比两组回测数据发现:虽然周期 23 的平均收益偏低,但在 2023 年 1 月、2 月等多个阶段表现更稳健。这一现象揭示出一个重要结论—— > 不存在适用于所有市场环境的“万能最优参数”。 不同的周期参数对应不同的市场波动特征。若能建立市场状态识别模型,实现参数的动态切换,则有望显著提升策略的整体性能。 ### 实战经验总结:因子开发的核心逻辑 本次测试带来以下几点深刻认知,反映出量化策略打磨的关键路径: **1. 多维度因子过滤** 单一技术指标容易失效,应融合多个维度的信息构建复合因子体系。例如: - 利用**振幅**排除低波动资产; - 借助**成交量**确认趋势的有效性; - 结合**涨跌幅**捕捉趋势初期的启动机会。 **2. 参数动态适配机制** 通过历史数据枚举,识别牛市、熊市和震荡市中的最优参数区间,避免固定参数带来的滞后效应,提升策略在不同行情下的适应能力。 **3. 风险前置管理** 在策略设计初期即设定明确的止损规则、最大回撤阈值和清仓机制,防止因极端行情导致账户归零,保障资金安全。 **4. 持续迭代与更新** 市场结构不断演变(如政策调整、资金偏好变化),任何因子都有生命周期。必须定期回测并优化模型,确保其长期有效性。 综上所述,ADX 指标本身具备一定的趋势识别价值,但直接套用原始信号难以胜任实战需求。只有结合具体交易场景,进行二次开发与系统化优化,才能发挥其真正作用。 量化交易的本质是一场基于概率的博弈。唯有坚持数据驱动、精细调参、严控风险,并持续迭代策略逻辑,方能在高波动的合约市场中实现可持续的盈利。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ADX Directional Matplotlib Dataframe Indicator

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-22 03:47