DMI 乗数移動平均取引戦略


作成日: 2023-09-13 14:42:19 最終変更日: 2023-09-13 14:42:19
コピー: 1 クリック数: 797
1
フォロー
1617
フォロワー

DMI指数に基づいて市場の底と頂点を識別する新しい量化取引戦略.この記事では,この取引戦略の原理,利点,および潜在的なリスクについて詳しく説明します.

戦略原則

DMI指数は,平均方向移動指数 (Average Directional Movement Index) と呼ばれ, 1970年代にウェルズ・ウィルダーによって,市場の傾向と強さを判断するために提唱された.DMI指数は,3つの線で構成されています.

  • +DI:上昇傾向の強さを表しています.
  • -DI:下落傾向の強さを表しています
  • ADX:トレンドの平均的な強さ

+DIがDIを突破すると,上昇が強くなると,多額の投資を検討することができる. +DIがDIを突破すると,下落が強くなると,空白を検討することができる.

この戦略の核となる論理は

  1. そして,DI線で40を打ったとき,さらにやってください.
  2. -DI線下は10で,+DI線上は40で空白する

つまり,逆向きDI線が正向きDI線より著しく強いとき,現在のトレンドが逆転すると判断し,適切な介入で逆転操作を行うことができる.

誤差をフィルターするために,このポリシーはDIの平均線を使用し,具体的パラメータは次のとおりです.

  • +DIと-DIの周期長さはそれぞれ11です.
  • ADXの平滑周期は11です.

平均線パラメータを調整することで取引信号の頻度を制御する.

この戦略は主にNIFTY50指数オプション取引に適用されますが,他の品種でも使用できます.具体的には,取引時,平価オプションを選択し,損失が10%を超えた場合は,20%の止損設定を加え,損失が当初投入された資金の20%を超えた場合は止損を終了します.

戦略的優位性

単純なDI交差戦略と比較して,この戦略はDI指標の均線フィルタリングを採用し,ウィップソーを効果的に削減し,取引回数を減らすことで,取引コストと滑り点の損失を軽減します.

単なるトレンド追跡戦略と比較して,この戦略はトレンドの逆転点を判断する際により正確であり,ターニングポイントの近くの取引機会をタイムリーに捉えることができます.

この戦略のパラメータ最適化は比較的簡単で,効果最適化を容易にする.

危険性についてのヒント

この戦略は,取引信号の方向のみを提示します. 具体的なストップ・ストップの要求は,個人リスクの好みに応じて設定する必要があります.

DMI指標は,地域を整理する際に大量に偽信号を生成する可能性があるため,非トレンド市場ではこの戦略を使用することを避けるべきである.

DI交差は,トレンドの転換点を100%予測することはできません.一定の時間順の誤差があります.取引信号を検証するために,適切な他の指標と組み合わせて使用する必要があります.

要約する

この戦略は,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)