この戦略は,トレンドシグナルを特定し,中期から長期間のトレンドを把握するために,EMA線とMACD指標を時間枠に合わせて組み合わせます.短期間のトレンドが中期から長期間のトレンドと一致するときにトレンドフォローアクションを行います.一方,戦略は,ストップロスを設定し,変動からのリスクを制御するために利益を得るためにATR指標を使用します.
この戦略は,中期から長期間のトレンド方向を決定するために50日間のEMAと100日間のEMAを使用する.短期のトレンドがMACD指標によって識別された場合,方向が一致しているかどうかを確認する.そうであれば,トレンドをフォローするアクションをとる.
具体的には,MACD 急速線がスローラインを超越し,> 50 日間の EMA を閉じて,> 100 日間の EMA を閉じてしまうと,ロングになります.MACD 急速線がスローラインを超越し, < 50 日間の EMA を閉じて, < 100 日間の EMA を閉じてしまうと,ショートになります.
また,この戦略は,変動の範囲を計算し,ストップ損失と利益の価格を設定するためにATR指標を使用します. ストップ損失レベルとして閉じる価格に基づいてATRの一定倍数を設定し,利益のレベルとして閉じる価格に基づいてATRの一定倍数を設定します.
EMA線とMACDインジケーターを各時間枠で組み合わせることで,トレンドシグナルを特定し,中長期トレンドを逃すのを防ぎます.
市場変動に基づいてストップ・ロスを設定し,利益を取るためにATR指標を使用することで,リスクを効果的に制御できます.
市場 中立 ゾーン を 避ける こと は,不必要な 損失 を 防ぐ
EMA線は遅延効果があり,ターニングポイントを逃す可能性があります.
MACD指標には結果に影響を与える複数のタイムフレームとパラメータ設定があります.
ATRの範囲は将来の価格変動を完全に表現できず,リスクを排除することもできない.
対策:
EMAの遅延問題を避けるために,他の指標で信号を確認する
MACD パラメータを調整し,結果を最適化
最大損失を制御するために合理的に設定されたATR倍数
EMA ライン周期の異なる組み合わせをテストする
MACD パラメータ設定を最適化
自動で最適なATRストップ損失/取利益倍数を見つけるための機械学習方法を使用する
この戦略は,EMA,MACDおよびATR指標を組み合わせて,各時間枠にわたるトレンドフォローオペレーションを実装する.パラメータ最適化を通じて,良い戦略リターン率を達成する可能性がある.また,指標遅れ,不適切なパラメータ調整および変動制御を含むリスクを防止し,最適化と強化を続けなければならない.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-50, EMA-100, and MACD Strategy with ATR for Stop Loss/Profit", overlay=true) // MACD hesaplama fastLength = input(12, title="Fast Length") slowLength = input(26, title="Slow Length") signalLength = input(9, title="Signal Length") [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) // EMA-50 ve EMA-100 hesaplama ema50 = ta.ema(close, 50) ema100 = ta.ema(close, 100) // ATR hesaplama atrLength = input(14, title="ATR Length") atrValue = ta.atr(atrLength) // Take Profit ve Stop Loss çoklayıcıları takeProfitMultiplier = input(3.0, title="Take Profit Multiplier") // TP, 3 katı ATR stopLossMultiplier = input(1.0, title="Stop Loss Multiplier") // Long Pozisyon Koşulları longCondition = ta.crossover(macdLine, signalLine) and close > ema50 and close > ema100 // Short Pozisyon Koşulları shortCondition = ta.crossunder(macdLine, signalLine) and close < ema50 and close < ema100 // Take Profit ve Stop Loss Seviyeleri takeProfitLevel = close + takeProfitMultiplier * atrValue stopLossLevel = close - stopLossMultiplier * atrValue // Long Pozisyon İşlemleri strategy.entry("Long", strategy.long, when=longCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel) // Short Pozisyon İşlemleri strategy.entry("Short", strategy.short, when=shortCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel) // Grafikte Gösterme plot(ema50, color=color.blue, title="EMA-50") plot(ema100, color=color.red, title="EMA-100") hline(0, "Zero Line", color=color.gray)