DMI指数に基づいて市場の底と頂点を識別する新しい量化取引戦略.この記事では,この取引戦略の原理,利点,および潜在的なリスクについて詳しく説明します.
DMI指数は,平均方向移動指数 (Average Directional Movement Index) と呼ばれ, 1970年代にウェルズ・ウィルダーによって,市場の傾向と強さを判断するために提唱された.DMI指数は,3つの線で構成されています.
+DIがDIを突破すると,上昇が強くなると,多額の投資を検討することができる. +DIがDIを突破すると,下落が強くなると,空白を検討することができる.
この戦略の核となる論理は
つまり,逆向きDI線が正向きDI線より著しく強いとき,現在のトレンドが逆転すると判断し,適切な介入で逆転操作を行うことができる.
誤差をフィルターするために,このポリシーはDIの平均線を使用し,具体的パラメータは次のとおりです.
平均線パラメータを調整することで取引信号の頻度を制御する.
この戦略は主に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)