3つの EMA,DMI,MACD を含むトレンドフォロー戦略

作者: リン・ハーンチャオチャン開催日:2024年1月25日 15:48:59
タグ:

img

概要

これは,トレンドの方向性を決定し,買い/売るシグナルを生成するために,3つの指数関数移動平均値 (EMA) と方向移動指標 (DMI) と移動平均収束差異指標 (MACD) を組み合わせるトレンドフォローする戦略である.主要な構成要素には,EMAクロスオーバー信号,トレンド強度のためのDMI,モメント確認のためのMACDが含まれます.

戦略の論理

基本論理は,全体的な傾向を特定するためにM5時間枠で計算された3つのEMA (34,89,200) に基づいています.34期間のEMAは短期的な方向性を示し,89期と200期間のEMAはそれぞれ中期および長期的傾向を定義します.

購入シグナルが発信されるのは:

  • 閉じる価格が34 EMA を越える
  • +DI (上昇方向の動き) > 17
  • ADX (トレンド強度) > -DI

売り信号は次の場合生成されます.

  • 閉じる価格がEMA34を下回る
  • -DI (下向きの動き) > 17
  • ADX > +DI

追加的な確証は,MACD指標から入力前に得られます.

利点

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

  1. 短期EMAクロスオーバーを用いて傾向の方向性を早期に把握する
  2. 異なるタイムフレームでトレンド強さを測定するために複数のEMAを使用します.
  3. DMI フィルタ は 強い 方向 的 な 動き を 確認 する こと に よっ て,偽信号 を 避ける こと に 役立ち ます
  4. MACDは,より高い確率セットアップのモメント確認を提供します.

リスク

考慮すべき主なリスクは

  1. EMAクロスオーバーのみを使用した場合のウィップソーと偽信号
  2. 複数の確認による信号生成の潜在的な遅延
  3. 急激なトレンド逆転に弱い

緩和方法:

  • 適切なストップ・ロストとポジションサイズを使用する
  • 現在の市場条件に適した EMA 長さを最適化
  • 視覚的な確認のために価格アクションを監視します.

増進 の 機会

戦略のさらなる改善:

  1. 過剰購入/過剰販売レベルのためのRSIのような追加のフィルターを追加します
  2. より強い信号の音量分析を組み込む
  3. 資産と時間枠に基づいて指標と設定をテストし最適化します
  4. 新しい市場データから継続的に学ぶために機械学習を使用します

結論

概要すると,これは,支配的なトレンドの方向で取引するためのシンプルで強力な指標を組み合わせた強力なトレンドフォローシステムです.トリプル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)


もっと