Diese Strategie ist ein mehrstufiges Indikator-Überlappung Handelssystem, das auf dem Relative Strength Index (RSI) basiert. Es identifiziert Handelschancen durch überkaufte und überverkaufte Signale von RSI, kombiniert mit einem dynamischen Positionsanpassungsmechanismus, der einen skalierten Einstiegsansatz bei nachteiligen Marktbewegungen verwendet.
Die Strategie beruht auf folgenden Kernbestandteilen: 1. Bei der Berechnung des RSI werden 14 Standardperioden mit Schlusskurs als Quelldaten verwendet. 2. Das Handelsfenster wird zwischen 2-4 Stunden kontrolliert und je nach Marktmerkmalen angepasst. 3. Eintrittssignale auf Basis des RSI unter 30 (überverkauft) und über 70 (übergekauft) 4. Die Positionsbildung umfasst die Ausgangsposition und die dynamischen Anpassungsniveaus 5. Der Skalierungsmechanismus wird ausgelöst, wenn sich der Preis um 1 Punkt nachteilig bewegt 6. Der Gewinn wird auf 1,5 Punkte vom durchschnittlichen Einstiegspreis festgelegt.
Die Strategie bildet ein relativ vollständiges Handelssystem durch die Kombination von RSI-Indikatoren und skalierten Einstiegsmechanismen. Seine Hauptvorteile liegen in seinem mehrstufigen Signalfiltermechanismus und dem flexiblen Positionsmanagement-Ansatz, während auf Trendmarktrisiken und Parameteroptimierungsprobleme geachtet werden muss. Die Gesamtleistung der Strategie kann durch Verbesserungen wie das Hinzufügen von Trendfiltern und die Optimierung von Stop-Loss-Mechanismen weiter verbessert werden.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("TonyM RSI", overlay=true) // Input Settings rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window") endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window") // RSI Calculation change = ta.change(rsiSourceInput) up = ta.rma(math.max(change, 0), rsiLengthInput) down = ta.rma(-math.min(change, 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Time Filter inTradingWindow = (hour >= startHour and hour < endHour) // Strategy Settings buyLevel = 30 sellLevel = 70 scaleDistance = 1.0 // Distance in points to add to the position takeProfitPoints = 1.5 // Profit target from average price initialQty = 1 // Initial trade size scalingQty = 1 // Additional trade size for scaling // Trade Logic if inTradingWindow // Entry Logic if rsi <= buyLevel and strategy.position_size == 0 strategy.entry("Buy", strategy.long, qty=initialQty) if rsi >= sellLevel and strategy.position_size == 0 strategy.entry("Sell", strategy.short, qty=initialQty) // Scaling Logic if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance strategy.entry("Scale Buy", strategy.long, qty=scalingQty) if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance strategy.entry("Scale Sell", strategy.short, qty=scalingQty) // Exit Logic (based on average price) if strategy.position_size > 0 strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints) if strategy.position_size < 0 strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints) // Plot RSI plot(rsi, "RSI", color=color.blue, linewidth=1) rsiUpperBand = hline(70, "RSI Upper Band", color=color.red) rsiLowerBand = hline(30, "RSI Lower Band", color=color.green) fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))