动向指标DMI策略–量化交易实战(附Python完整代码)

在量化交易领域,动向指标(Directional Movement Index,简称DMI)是一种用于判断市场趋势的工具。DMI通过比较当前价格与过去价格的变动来确定市场的趋势方向。本篇文章将介绍如何识别DMI指标,并使用Python代码生成交易信息,以及回测策略的效果。

一、DMI指标的计算

DMI指标由三个主要部分组成:
1.正向动向指数(+DI):衡量价格上升动向的强度。
2.负向动向指数(-DI):衡量价格下降动向的强度。
3.平均动向指数(ADX):衡量市场趋势的强度,不考虑方向。
DMI的计算涉及以下步骤:
  • 计算动向值(DM):当今天的最高价大于昨天的最高价时,计算今天的最高价与昨天的最高价之差;当今天的最低价小于昨天的最低价时,计算昨天的最低价与今天的最低价之差。
  • 计算真实范围(TR):TR是今天最高价、最低价和收盘价中的最大值与最小值之差。
  • 计算+DI和-DI:通过比较今天的TR与昨天的TR来计算+DM和-DM,然后将+DM和-DM分别除以TR得到+DI和-DI。
  • 计算ADX:通过比较+DI和-DI来计算ADX。

二、生成交易信息

在使用DMI指标生成交易信号时,我们通常会设置一个ADX阈值。当ADX值上升时,表明市场趋势正在形成;当ADX值下降时,表明市场可能进入无趋势状态。此外,当+DI和-DI交叉时,可以视为买入或卖出信号。

三、动向指标DMI策略量化实战

图片
import pandas as pdimport numpy as npimport pandas_datareader as pdrfrom datetime import datetime# 计算DMI指标def calculate_dmi(data, period=14):    high = data['High']    low = data['Low']    close = data['Close']     tr = pd.DataFrame({         'tr': (high - low).abs(),         'tr_high': (high - close.shift(1)).abs(),         'tr_low': (close.shift(1) - low).abs()     }).max(axis=1)     tr = tr.rolling(window=period).sum()     dm_plus = (high - high.shift(1)).clip(lower=0).rolling(window=period).sum()     dm_minus = (low.shift(1) - low).clip(lower=0).rolling(window=period).sum()     di_plus = 100 * dm_plus / tr     di_minus = 100 * dm_minus / tr     dx = (abs(dm_plus - dm_minus) / (dm_plus + dm_minus)) * 100     adx = dx.rolling(window=period).mean()     return pd.DataFrame({         'DI+': di_plus,         'DI-': di_minus,         'ADX': adx     })# 设置ADX阈值adx_threshold = 25# 生成交易信号data = calculate_dmi(data)data['Signal'] = 0data['Position'] = 0# 当+DI交叉-DI时买入data['Signal'][data['DI+'] > data['DI-']] = 1# 当-DI交叉+DI时卖出data['Signal'][data['DI-'] > data['DI+']] = -1# 计算持仓data['Position'] = data['Signal'].diff()# 回测策略def backtest_strategy(data):    data['Strategy_Returns'] = data['Position'].shift(1) * data['Close'].pct_change()    data['Cumulative_Returns'] = (1 + data['Strategy_Returns']).cumprod()    return data

四、结论

DMI指标是一种有效的工具,用于识别市场的趋势方向。通过Python实现DMI指标策略并进行回测,我们可以评估策略的有效性,并根据回测结果对策略进行优化。然而,需要注意的是,任何单一指标都有其局限性,因此在实际应用中,建议结合其他技术指标和基本面分析来提高交易的成功率。此外,回测结果仅能反映历史表现,未来市场表现可能会有所不同。因此,投资者在使用DMI策略时应谨慎,并结合自己的风险承受能力进行决策。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/105417
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 30 日
下一篇 2024 年 7 月 30 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注