Diese Strategie ist ein quantitatives Handelssystem, das auf der Theorie der mittleren Reversion basiert und Bollinger-Bänder, RSI-Indikatoren und einen auf ATR basierenden dynamischen Stop-Loss-Mechanismus kombiniert.
Die Strategie verwendet 20-Perioden-Bollinger-Bänder als primären Trendindikator, mit einem Standardabweichungsmultiplikator von 2,0 zur Bestimmung der Preisbewegungsgrenzen. Ein 14-Perioden-RSI wird als ergänzender Indikator eingesetzt, wobei Messwerte unter 30 als überverkauft und über 70 als überkauft betrachtet werden. Long-Positionen werden eingeleitet, wenn der Preis unter dem unteren Band bricht und der RSI unter 30 liegt, was auf potenzielle Überverkaufszustände hinweist, während Short-Positionen eingesetzt werden, wenn der Preis über das obere Band bricht und der RSI über 70 liegt, was auf potenzielle Überkaufszustände hinweist. Das mittlere Band dient als Gewinnniveaus, kombiniert mit RSI-Umkehrsignalen für das Positionsmanagement. Zusätzlich wird ein 14-Perioden-ATR-basierter dynamischer Verlustzielmechanismus implementiert, mit Stops bei 2x ATR und Stopps bei 3x ATR für genaue Risikokon
Die Strategie konstruiert ein umfassendes Mittelumkehrhandelssystem durch die kombinierte Anwendung von Bollinger Bands und RSI. Die Einführung von ATR-basierten dynamischen Stops kontrolliert das Risiko effektiv und bietet günstige Risiko-Renditeigenschaften. Während es Raum für Optimierung gibt, ist das Gesamtkonzept klar und praktisch.
/*backtest start: 2024-11-19 00:00:00 end: 2024-11-26 00:00:00 period: 15m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SOL/USDT Mean Reversion Strategy", overlay=true) // Input parameters length = input(20, "Bollinger Band Length") std_dev = input(2.0, "Standard Deviation") rsi_length = input(14, "RSI Length") rsi_oversold = input(30, "RSI Oversold") rsi_overbought = input(70, "RSI Overbought") // Calculate indicators [middle, upper, lower] = ta.bb(close, length, std_dev) rsi = ta.rsi(close, rsi_length) // Entry conditions long_entry = close < lower and rsi < rsi_oversold short_entry = close > upper and rsi > rsi_overbought // Exit conditions long_exit = close > middle or rsi > rsi_overbought short_exit = close < middle or rsi < rsi_oversold // Strategy execution if (long_entry) strategy.entry("Long", strategy.long) if (short_entry) strategy.entry("Short", strategy.short) if (long_exit) strategy.close("Long") if (short_exit) strategy.close("Short") // Stop loss and take profit atr = ta.atr(14) strategy.exit("Long SL/TP", "Long", stop=strategy.position_avg_price - 2*atr, limit=strategy.position_avg_price + 3*atr) strategy.exit("Short SL/TP", "Short", stop=strategy.position_avg_price + 2*atr, limit=strategy.position_avg_price - 3*atr) // Plot indicators plot(middle, color=color.yellow, title="BB Middle") plot(upper, color=color.red, title="BB Upper") plot(lower, color=color.green, title="BB Lower") // Plot entry and exit points plotshape(long_entry, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(short_entry, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(long_exit, title="Long Exit", location=location.abovebar, color=color.orange, style=shape.circle, size=size.small) plotshape(short_exit, title="Short Exit", location=location.belowbar, color=color.orange, style=shape.circle, size=size.small)