
Die Strategie nutzt die EMA-Meanline und den MACD-Indikator, um Trendsignale in mehreren Zeitrahmen zu identifizieren und die mittleren und langen Trends zu erfassen. Wenn die kurzfristigen Trends mit der mittleren und langfristigen Trendrichtung übereinstimmen, werden Trendverfolgungsoperationen durchgeführt. Die Strategie nutzt die ATR-Indikator, um eine Stop-Loss-Stop-Liste zu setzen und die Risiken für die Schwankungen zu kontrollieren.
Die Strategie beurteilt die Richtung des mittelfristigen Trends anhand der 50-Tage-EMA und der 100-Tage-EMA. Beurteilt, ob die kurzfristige Trendrichtung mit der mittelfristigen Trendrichtung übereinstimmt, wenn die kurzfristigen Trends durch den MACD-Indikator identifiziert werden.
Konkret, wenn die MACD-Schnelllinie die langsame Linie durchbricht und schließt > 50-Tage-EMA und schließt > 100-Tage-EMA, machen Sie mehr; wenn die MACD-Schnelllinie die langsame Linie unter der Schnelllinie durchbricht und schließt < 50-Tage-EMA und schließt < 100-Tage-EMA, machen Sie null.
Außerdem berechnet die Strategie die Bandbreite der ATR-Indikatoren, um einen Stop-Loss-Stop-Preis festzulegen.
Gegenmaßnahmen:
Die Strategie nutzt EMA, MACD und ATR als Indikatoren, um Trend-Tracking-Operationen in mehreren Zeitrahmen zu realisieren. Durch die Optimierung der Parameter wird eine bessere Strategie-Rendite erzielt. Gleichzeitig muss das Risiko einer Verzögerung der Indikatoren, der Anpassung der Parameter und der Unzulänglichkeit der Schwankungen verhindert werden.
/*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)