
Die Strategie ist ein Multi-Indikator-Synthetic Trading-System, das technische Indikatoren wie den Index Moving Average (EMA), den Relativ Strong Indicator (RSI) und den Average True Range (ATR) kombiniert und den Average Trend Indicator (ADX) eingeführt hat, um die Genauigkeit der Trendbeurteilung zu erhöhen. Das System bestätigt die Zeit für die Positionierung durch mehrere Signale und nutzt die ATR, um die Stopps und Stopps dynamisch zu verwalten und die Risiken effektiv zu kontrollieren.
Der Kern der Strategie besteht darin, Markttrends zu erfassen und mit einer Kombination aus mehreren technischen Indikatoren zu handeln.
Die Strategie baut durch die organische Kombination von mehreren technischen Indikatoren ein vollständiges Trend-Tracking-Trading-System auf. Die Strategie gewährleistet die Sicherheit des Handels durch strenge Risikokontrollen, während die Genauigkeit des Handels gewährleistet wird. Obwohl ein gewisser Optimierungsraum besteht, hat der Gesamtrahmen einen guten praktischen Wert und eine gute Skalierbarkeit.
/*backtest
start: 2025-01-20 00:00:00
end: 2025-01-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("Enhanced GBP/USD Strategy with ADX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// === Input Parameters ===
emaFastLength = input.int(20, title="Fast EMA Length")
emaSlowLength = input.int(50, title="Slow EMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
atrLength = input.int(14, title="ATR Length")
adxLength = input.int(14, title="ADX Length")
riskToReward = input.float(2.0, title="Risk-Reward Ratio (R:R)")
slMultiplier = input.float(1.5, title="SL Multiplier (ATR)")
// === Indicator Calculations ===
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// === ADX Calculation ===
// Components of ADX
tr = ta.rma(ta.tr, adxLength) // True Range smoothed
plusDM = ta.rma(math.max(high - high[1], 0), adxLength) // +DM
minusDM = ta.rma(math.max(low[1] - low, 0), adxLength) // -DM
plusDI = (plusDM / tr) * 100
minusDI = (minusDM / tr) * 100
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, adxLength) // Final ADX value
// === Entry Conditions ===
isUptrend = emaFast > emaSlow and adx > 20
isDowntrend = emaFast < emaSlow and adx > 20
buySignal = isUptrend and ta.crossover(rsi, rsiOversold)
sellSignal = isDowntrend and ta.crossunder(rsi, rsiOverbought)
// === Stop-Loss and Take-Profit ===
slDistance = atr * slMultiplier
tpDistance = slDistance * riskToReward
buySL = buySignal ? close - slDistance : na
buyTP = buySignal ? close + tpDistance : na
sellSL = sellSignal ? close + slDistance : na
sellTP = sellSignal ? close - tpDistance : na
// === Execute Trades ===
if buySignal
strategy.entry("Buy", strategy.long)
strategy.exit("Buy TP/SL", from_entry="Buy", stop=buySL, limit=buyTP)
if sellSignal
strategy.entry("Sell", strategy.short)
strategy.exit("Sell TP/SL", from_entry="Sell", stop=sellSL, limit=sellTP)
// === Plotting ===
plot(emaFast, title="Fast EMA", color=color.blue)
plot(emaSlow, title="Slow EMA", color=color.orange)
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
plot(buySL, title="Buy Stop Loss", color=color.red, linewidth=1)
plot(buyTP, title="Buy Take Profit", color=color.green, linewidth=1)
plot(sellSL, title="Sell Stop Loss", color=color.red, linewidth=1)
plot(sellTP, title="Sell Take Profit", color=color.green, linewidth=1)
// === Alerts ===
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected!")