动态动量指标

业务意义

DMIDX 是根据市场波动性自动调整时间周期的 RSI 变体,在高低波动市场中都能保持有效性,解决了传统 RSI 参数固定的局限性。

核心使用场景

1. 波动市场适应性

  • 高波动市场:DMIDX 自动缩短周期,提高灵敏度

  • 低波动市场:DMIDX 自动延长周期,减少虚假信号

  • 波动转换期:自动调整以适应市场状态变化

2. 多时间框架动量分析

通过动态周期的变化,自动实现多时间框架分析:

  • 当前动态周期 <10: 市场波动较高,转向更短视角

  • 当前动态周期位于 10-20 之间:市场波动稳定

  • 当前动态周期 >20: 市场波动较低,转向更长视角

使用要点总结

1. 核心优势:

  • 自动适应市场波动性变化

  • 减少参数优化的人工干预

  • 在高波动和低波动市场中均有效

2. 参数设置建议:

  • 基准周期:14(与标准 RSI 一致)

  • 最小周期:5(保持基本灵敏度)

  • 最大周期:30(避免过度滞后)

  • 波动率测量:ATR(14) 效果最佳

3. 信号确认:

  • 结合动态周期长度判断信号强度

  • 短周期信号需要价格行为确认

  • 长周期信号可靠性更高

4. 风险控制:

  • 在周期快速变化时谨慎交易

  • 结合趋势指标过滤逆势信号

  • 设置基于波动率的动态止损

DMIDX 通过动态调整分析周期,解决了传统振荡器在变化市场环境中的适应性问题,是量化交易中的重要改进工具。

计算公式

第一步:计算真实波幅 (True Range)

TR = max((最高 - 最低),abs(最高 - 收盘 [-1]),abs(最低 - 收盘 [-1]))

第二步:波动率调整系数

波动率调整系数 = TR[1-n1:0].avg()/ 收盘 [1-n1:0].avg()

第三步:动态周期计算 (n2 最短周期,缺省 5;n3 最长周期,缺省 30)

动态周期 = min(max(n1*(1 + 波动率调整系数) ,n2),n3)

第四步:涨跌幅度

上涨幅度 =max(收盘 - 收盘 [-1],0)

下跌幅度 =max(收盘 [-1]- 收盘,0)

平均上涨幅度 = 上涨幅度 [1- 动态周期:0].avg()

平均下跌幅度 = 下跌幅度 [1- 动态周期:0].avg()

第五步

DMIDX = 100-(100/(1+( 平均上涨幅度 / 平均下跌幅度)))

实现代码

指标参数:

y

输出列名

n1

基准周期

n2

最短周期

n3

最长周期

函数代码:


A

B

1

func DMIDX (A,$y,n1,n2,n3)

=A.derive@o(max((最高 - 最低 ),abs( 最高 - 收盘 [-1]),abs(最低 - 收盘 [-1])):TR, max(收盘 - 收盘 [-1],0): 上涨幅度, max( 收盘 [-1]- 收盘,0): 下跌幅度,: 波动率调整系数,: 动态周期,: 平均上涨幅度,: 平均下跌幅度)



=A.run(TR[1-n1:0].avg()/收盘 [1-n1:0].avg(): 波动率调整系数, min(max(n1*(1 + 波动率调整系数) ,n2),n3): 动态周期, 上涨幅度 [1- 动态周期:0].avg(): 平均上涨幅度, 下跌幅度 [1- 动态周期:0].avg(): 平均下跌幅度, 100-(100/(1+( 平均上涨幅度 / 平均下跌幅度))):${y})



=A.alter(;TR,上涨幅度, 下跌幅度, 波动率调整系数, 动态周期, 平均上涨幅度, 平均下跌幅度 )

举例:

调用脚本计算浦发银行 2024 年的动态动量指标


A


1

/计算出源数据

2

=A1.derive(:DMIDX)

/增加要返回的指标字段

3

= DMIDX (A2, DMIDX ,14,5,30)

/调用函数计算指标

运行效果:

..