DMI移動平均取引戦略

作者: リン・ハーンチャオチャン,日付: 2023-09-13 14:42:19
タグ:

最近,私は市場における底と上位を特定するために主にDMI指標に基づいた新しい定量的な取引戦略を開発しました.この記事では,この取引戦略の理性,利点および潜在的なリスクを詳細に説明します.

戦略の論理

DMI指標は,平均方向動向指数 (Average Directional Movement Index) の略称で,1970年代にウェルズ・ワイルダーによって市場傾向と強さを測定するために作成された.DMIは3つの線で構成される.

  • +DI:上昇傾向の強さを表す
  • -DI: 下行傾向の強さを表す
  • ADX:全体的なトレンド強さを表す

+DI が -DI を越えると,上昇傾向の強化を示し,ロングポジションを考慮することができる. -DI が +DI を越えると,下落傾向の強化を示し,ショートポジションを考慮することができる.

この戦略の基本的な論理は

  1. +DIが10を下回り, -DIが40を超えるとロング
  2. -DIが10を下回り, +DIが40を超えるとショート

つまり,リバースDIが先行DIと大きく異なる場合,現在の傾向が逆転する可能性が高いと判断し,適切なリバーストレーディングポジションを取ることができる.

この戦略では,D.I.の移動平均を,次のパラメータでフィルター化します.

  • +DI と -DI の期間が 11 です.
  • ADXの平滑期は 11 です.

移動平均のパラメータを調整することで,取引信号の頻度は調整できます.

この戦略は主にNIFTY50指数オプションの取引に適用される.他の製品にも使用できる.特に取引のために,アット・ザ・マネーオプションを選択し,ストップ・ロスを20%に設定し,損失が10%を超えるとポジションを追加するが,損失が初期資本の20%を超えるとストップアウトする.

戦略 の 利点

単純なDIクロス戦略と比較して,この戦略はDI移動平均を使用してノイズをフィルタリングし,取引を削減し,取引コストと滑り幅を削減します.

純粋なトレンドフォロー戦略と比較して,この戦略はトレンド逆転点を正確に把握し,ターン周りの間に間に合っているエントリを可能にします.

戦略の最適化は 性能調整のための柔軟なパラメータで シンプルです

危険 警告

この戦略は,方向的な信号のみを提供する.ストップ・ロストとテイク・プロフィートに関する具体的な要件は,個人のリスク優先順位に応じて設定されるべきである.

DMI は,範囲に限定された期間中に多くの誤った信号を生成する可能性があります.この戦略は,トレンドではない市場で使用しないでください.

DIクロスオーバーはトレンド逆転を完全に予測できない.タイミングの誤りがある可能性があります.他の指標を使用して取引信号を検証する必要があります.

結論

この戦略は,DI移動平均値でスクリーニングすることで,トレンド逆転の機会を効果的に特定することができます.他のトレンドフォロー戦略と比較して,逆転認識能力がより強いという利点があります.全体的に,この戦略は柔軟なパラメータチューニングを有し,定量的な取引システムにおけるモジュールとして使用できます.誤った信号に注意を払い,それを使用する際に市場体制を適切に評価してください.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



もっと