DMIとMACDを組み合わせた3つのEMAによるトレンドフォロー戦略


作成日: 2024-01-25 15:48:59 最終変更日: 2024-01-25 15:48:59
コピー: 0 クリック数: 1177
1
フォロー
1617
フォロワー

DMIとMACDを組み合わせた3つのEMAによるトレンドフォロー戦略

概要

これは,3つの指数移動平均 ((EMA),トレンド指標 ((DMI) と移動平均集散指標 ((MACD) を使用してトレンドの方向を決定し,買入シグナルを生成するトレンド追跡戦略である.重要な構成要素には,EMA黄金のクロス信号,DMIのトレンドの強度判断,MACDの動力の確認が含まれている.

戦略ロジック

核心論理は,M5周期で計算された3つのEMA (34,89,200) に依存し,全体的なトレンドを識別します.34周期EMAは近期方向性を提供し,89および200のEMAは中長期のトレンドを定義します.

信号のトリガーを購入すると:

  • EMAは34で終了した.
  • +DI ((のトレンド運動) > 17
  • ADX (トレンドの強さ) > -DI

信号の生成時に:

  • EMAは34で終了しました.
  • -DI (下落傾向運動) > 17
  • ADX > +DI

入学前にMACD指標による追加確認も行います.

利点

この戦略にはいくつかの重要な利点があります.

  1. 短期 EMA 黄金のクロスと早期キャプチャトレンドの転換
  2. 複数のEMAを使用して,異なる時間枠におけるトレンドの強さを判断する
  3. DMI フィルターは,強いトレンドの動きをチェックすることで,誤った信号を回避するのに役立ちます.
  4. MACDは,取引機会の質と確率を向上させるための動力確認を提供します.
  5. インジケーターの組み合わせにより,入場信号の正確性とタイミングが向上する

リスク

リスクについて

  1. EMAゴールドクロスのみに依存する人は,誤解されやすい.
  2. 複数の確認により,信号生成のタイミングが遅れる可能性があります.
  3. 突発的なトレンドの逆転に弱い

緩和策として

  • 適切なストップとポジション管理
  • EMAパラメータを現在の市場条件に最適化
  • 価格の動きを視覚的に確認する

最適化の方向

戦略のさらなる改善:

  1. RSIなどの指標が増加し,過剰買いや過剰売りを判断します.
  2. 交差量分析を組み合わせてより強力な信号を生成する
  3. 異なる資産と時間枠に応じて指標とパラメータの最適化
  4. 新しい市場データから学習する機械学習の継続

要約する

全体として,これは強力なトレンド追跡システムであり,シンプルで実用的ないくつかの指標の順番を使用した組み合わせです. 3つのEMAは,多時間枠でのトレンドを判断し,DMIとMACDは,エントリータイミングと利益の確率を向上させるチェックです.

ストラテジーソースコード
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("2 EMA di+ Buy Sell, strategy ", overlay=true)

// Define the EMA calculation function
ema(src, length) =>
    ta.ema(src, length)

// Calculate and plot EMA on M5
ema34_M5 = ema(close, 34)
ema89_M5 = ema(close, 89)
ema200_M5 = ema(close, 200)

// Plot EMAs
plot(ema34_M5, color=color.green, title="EMA 34 M5", linewidth=2)
plot(ema89_M5, color=color.blue, title="EMA 89 M5", linewidth=2)
plot(ema200_M5, color=color.black, title="EMA 200 M5", linewidth=2)

// Define DMI parameters
len = input(14, 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)
plusDI = 100 * ta.rma(plusDM, len) / trur
minusDI = 100 * ta.rma(minusDM, len) / trur

// Calculate ADX
adxValue = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI == 0 ? 1 : plusDI + minusDI), len)

// Define MACD parameters
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// Create buy/sell conditions
buyCondition = close > ema34_M5 and plusDI > 17 and adxValue > minusDI 
sellCondition = close < ema34_M5 and minusDI > 17 and adxValue > plusDI 

// Strategy logic
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)

// Create alerts for buy/sell signals
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal")

// Plot buy/sell arrows on the price chart
bgcolor(buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na)

plotarrow(buyCondition ? 1 : sellCondition ? -1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.red, 0), offset=-1)