DMIと移動平均に基づく取引戦略


作成日: 2023-09-28 12:39:44 最終変更日: 2023-09-28 12:39:44
コピー: 2 クリック数: 910
1
フォロー
1617
フォロワー

概要

この戦略は,トレンド指数DMIと移動平均を組み合わせて,トレンドの方向を識別して,買入と売却のシグナルを発信する.DMIが価格がトレンド状態に入ると表示し,移動平均がトレンドの方向を確認すると,戦略は取引のシグナルを発信する.

戦略原則

この戦略は主に2つの指標に基づいています.

  1. DMIは,トレンドの存在と方向を識別するために,DMI+とDMI−を構成する.DMI+がDMI−より高い場合は,上昇傾向を示し,DMI−がDMI+より高い場合は,下降傾向を示します.

  2. 移動平均は,一般的に15日から50日の平均を選択し,価格の傾向の方向を判断するために使用されます.価格が移動平均より高く (以下) であれば,上昇 (下降) 傾向を示します.

策略はまずDMI+,DMI-および移動平均を計算する.DMIがトレンド状態を表示する ((DMI+はDMI-またはDMI-はDMI+よりも高い) と同時に,移動平均もトレンドの方向を確認する場合は取引信号を生成する.具体的には:

  • DMI+がDMI-と移動平均の価格を横切るときは,もっと多くをします.
  • DMI-上はDMI+で,価格下は移動平均を穿ったとき,空置する.

この策略は同時に反転入力オプションを追加した.反転が有効になった後,多行と空き信号は反転する.

優位分析

この戦略は,トレンド指数とトレンド指数を組み合わせて,信号の信頼性を高め,両種の指数の優位性を利用して互補する.

DMIの優点は,迅速にトレンドを識別できる存在である。移動平均は,一部のノイズをフィルターして,トレンドの方向を確認できる。両方を組み合わせて使用すると,トレンドが形成される時に早く場に入ることができ,同時にトレンドでない時に波逐流を避ける。

さらに,この戦略は,現実の必要に応じて,順位または逆転の取引を選択できる反転オプションを追加しました. これは,戦略の柔軟性を増加します.

リスク分析

この戦略には以下のリスクがあります.

  1. トレンド転換時に誤信号が発生し,損失を招く可能性がある。これはパラメータの調整,またはリスクを制御するためにストップを設定する必要がある。

  2. トレンド形成には一定の時間が必要で,その間,戦略は価格の揺れによって干渉されやすく,誤ったシグナルを生成します.このノイズをフィルターするために,DMIと移動平均のパラメータ期間を適切に調整できます.

  3. 逆転取引は逆転損失の拡大のリスクに直面する.逆転を起動すると,単一の損失比率を制御する必要があるか,移動の停止を使用して,利益の一部をロックする必要があります.

  4. 異なる品種と異なる時間周期において,パラメータは再最適化が必要である. 直接複製したパラメータは,他の品種または周期で使用されても効果が悪くなる可能性がある.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 異なる移動平均周期パラメータをテストして,合傾向変換の最適なパラメータの組み合わせを見つけます.

  2. DMIの平滑周期パラメータをテストし,フィルタリングトレンドで発生する短期反転ノイズ.

  3. 逆転オプションの有効化とデフォルト順位取引の歴史回帰における効果の違いを評価し,より優良な選択肢を選択する.

  4. 移動ストップ,時間ストップ,突破ストップなどのストップ戦略を追加し,単発損失を制御する.

  5. 異なる品種と周期のパラメータで最適化効果を評価し,パラメータの組み合わせを最適化する.

  6. RSIなどの他の指標と組み合わせたフィルタリングにより,局所的な極限点からの誤信号を回避できます.

要約する

この戦略は,トレンド指数DMIと移動平均の両方の指標の優位性を融合させ,トレンドが形成される時に早く場に入り,震動状況で閉じ込められることを回避します.反転取引オプションは,戦略の柔軟性も高めます.パラメータ最適化,ストップ,および他の指標との組み合わせを使用して,戦略の安定性をさらに高めることができます.しかし,異なる品種と周期でパラメータの再テストの必要性には注意が必要です.

ストラテジーソースコード
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/03/2017
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System")
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
xMA = sma(close, Length_MA)
up = change(high)
down = -change(low)
trur = rma(tr, Length_DMI)
xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
nPDI = xPDI
nNDI = xNDI
nMA = xMA
nPDI_1 = xPDI[1]
nNDI_1 = xNDI[1]
nMA_1 = xMA[1]
bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
           iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
bMDIShort =  iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
              iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
bMALong = iff(close > nMA and close[1] < nMA_1, true, 
           iff(close < nMA and close[1] > nMA_1, false, false))
bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
             iff(close < nMA and close[1] > nMA_1, true, false))
pos = iff(bMDILong and bMALong, 1, 
     iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1 )
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nPDI, color=green, title="DMI Plus")
plot(nNDI, color=red, title="DMI Minus")