
この戦略は,EMA平均線とMACD指標を組み合わせて,多時間枠でトレンドシグナルを識別し,中長線トレンドを捕捉する.短期トレンドが中長期トレンドの方向と一致するときに,トレンド追跡操作を行う.同時に,戦略は,ATR指標を使用して,ストップ・ローズ・ストップを設定し,波動に対するリスク管理を行う.
策略は50日EMA線と100日EMA線で中長期のトレンド方向を判断する.短期トレンド方向がMACD指標によって識別されると,短期トレンド方向が中長期トレンド方向と一致するかどうかを判断する.一致する場合は,トレンドフォロー操作を行う.
具体的には,MACD快線で慢線を穿過し,そして closes > 50日EMAと closes > 100日EMAになると,多めにする.MACD快線の下で慢線を穿過し,そして closes < 50日EMAと closes < 100日EMAになると,空にする.
さらに,戦略はATR指標を使用して波動範囲を計算し,ストップ・ストップ・価格を設定する. 閉じる価格の一定の倍数のATRをストップ・ポイントとして,閉じる価格の一定の倍数の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)