
Bei dieser Strategie handelt es sich um eine Hochfrequenzhandelsstrategie, die auf einem Zeitrahmen von 15 Minuten basiert. Die Strategie kombiniert mehrere technische Indikatoren, darunter den exponentiellen gleitenden Durchschnitt (EMA), den relativen Stärkeindex (RSI), den durchschnittlichen Richtungsindex (ADX) und den durchschnittlichen wahren Bereich (ATR), um durch die Synergie dieser Indikatoren Handelssignale zu erzielen. Genaue Erfassung und dynamisches Management von Risiken. Die Strategie verfügt über ein klares visuelles Design, das es Händlern erleichtert, Marktbedingungen und Handelssignale in Echtzeit zu überwachen.
Die Kernlogik der Strategie besteht darin, Handelssignale basierend auf der Kreuzung der schnellen EMA (9 Perioden) und der langsamen EMA (21 Perioden) zu generieren. RSI (14 Perioden) wird zum Filtern überverkaufter Bereiche verwendet, ADX (14 Perioden) wird zum Bestätigen der Trendstärke verwendet und ATR (14 Perioden) wird zum dynamischen Festlegen von Stop-Loss- und Gewinnzielen verwendet. Die Kombination mehrerer technischer Indikatoren gewährleistet die Zuverlässigkeit der Handelssignale. Zu den Einstiegsbedingungen gehören: lang – der schnelle EMA kreuzt den langsamen EMA und der RSI liegt unter 70 und der ADX liegt über 20; kurz – der schnelle EMA kreuzt den langsamen EMA und der RSI liegt über 30 und der ADX liegt über 20. Exit verwendet dynamische Stop-Loss- und Gewinnzieleinstellungen basierend auf ATR.
Diese Strategie erreicht durch die Synergie mehrerer technischer Indikatoren ein Gleichgewicht zwischen Signalerfassung und Risikokontrolle im Hochfrequenzhandel. Klares visuelles Design und vollständige Automatisierungsunterstützung machen es praktischer. Durch kontinuierliche Optimierung und Verbesserung des Risikomanagements soll die Strategie eine stabile Performance in unterschiedlichen Marktumgebungen aufrechterhalten. Zwar bestehen gewisse Risiken, diese sind jedoch durch angemessene Parametereinstellungen und Risikokontrollmaßnahmen kontrollierbar. Für die erfolgreiche Umsetzung dieser Strategie ist es erforderlich, dass die Händler den Markt genau kennen und die Risiken stets im Auge behalten.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Scalping BTC Ottimizzato - Grafica Chiara", shorttitle="Scalp BTC Opt", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === 📊 INPUTS ===
// 📈 Medie Mobili
emaFastLength = input.int(9, title="EMA Veloce", minval=1)
emaSlowLength = input.int(21, title="EMA Lenta", minval=1)
// 💡 RSI
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")
// 📊 ATR (Stop Loss e Take Profit)
atrLength = input.int(14, title="ATR Length", minval=1)
stopATR = input.float(1.5, title="Stop Loss (ATR Multiplo)", step=0.1)
takeProfitATR = input.float(2.0, title="Take Profit (ATR Multiplo)", step=0.1)
// 🔀 ADX
adxLength = input.int(14, title="ADX Length", minval=1)
adxSmoothing = input.int(14, title="ADX Smoothing", minval=1)
adxThreshold = input.int(20, title="Soglia ADX per Trend Forte", minval=1)
// === 📊 CALCOLI PRINCIPALI ===
// 📈 Medie Mobili
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
// 💡 RSI
rsi = ta.rsi(close, rsiLength)
// 📊 ATR
atr = ta.atr(atrLength)
// 🔀 ADX tramite DMI con Smoothing
[adx, diPlus, diMinus] = ta.dmi(adxLength, adxSmoothing)
// === 📊 CONDIZIONI LONG E SHORT ===
// ✅ Long: EMA Veloce incrocia EMA Lenta al rialzo, RSI sotto 70, ADX > 20
longCondition = (ta.crossover(emaFast, emaSlow)) and (rsi < rsiOverbought) and (adx > adxThreshold)
// 🔻 Short: EMA Veloce incrocia EMA Lenta al ribasso, RSI sopra 30, ADX > 20
shortCondition = (ta.crossunder(emaFast, emaSlow)) and (rsi > rsiOversold) and (adx > adxThreshold)
// 📉 Stop Loss e Take Profit Dinamici
longStop = strategy.position_avg_price - (atr * stopATR)
longTarget = strategy.position_avg_price + (atr * takeProfitATR)
shortStop = strategy.position_avg_price + (atr * stopATR)
shortTarget = strategy.position_avg_price - (atr * takeProfitATR)
// === 🚀 INGRESSO E USCITA ===
// 🚦 Ingresso LONG
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long)
strategy.exit("TakeProfit/StopLoss Long", stop=longStop, limit=longTarget)
// 🚦 Ingresso SHORT
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short", strategy.short)
strategy.exit("TakeProfit/StopLoss Short", stop=shortStop, limit=shortTarget)
// 🛑 USCITA MANUALE BASATA SU RSI
if (rsi > rsiOverbought and strategy.position_size > 0)
strategy.close("Long", comment="RSI Overbought Exit")
if (rsi < rsiOversold and strategy.position_size < 0)
strategy.close("Short", comment="RSI Oversold Exit")
// === 📊 VISUALIZZAZIONE GRAFICA OTTIMIZZATA ===
// 📈 MEDIE MOBILI ANCORATE ALLE CANDELE
plot(emaFast, title="EMA Veloce", color=color.blue, linewidth=2)
plot(emaSlow, title="EMA Lenta", color=color.red, linewidth=2)
// 📊 SEGNALI VISIVI ANCORATI ALLE CANDELE
plotshape(longCondition, title="Segnale Long", style=shape.triangleup, location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition, title="Segnale Short", style=shape.triangledown, location=location.abovebar, color=color.red, text="Short", size=size.small)
// 📊 RSI (Pannello Separato)
var float rsiPanel = na
rsiPanel := rsi
plot(rsiPanel, title="RSI", color=color.orange, linewidth=2)
hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
// 📊 ADX (Pannello Separato)
var float adxPanel = na
adxPanel := adx
plot(adxPanel, title="ADX", color=color.blue, linewidth=2)
hline(adxThreshold, "ADX Soglia", color=color.gray, linestyle=hline.style_dotted)
// 📊 ATR (Pannello Separato)
var float atrPanel = na
atrPanel := atr
plot(atrPanel, title="ATR", color=color.purple, linewidth=2)
// 🔔 ALERT
alertcondition(longCondition, title="Segnale Long", message="Entra Long Manualmente!")
alertcondition(shortCondition, title="Segnale Short", message="Entra Short Manualmente!")