Diese Strategie ist ein quantitatives Handelssystem, das auf dem RSI-Indikator und den Prinzipien der mittleren Reversion basiert. Es identifiziert Marktumkehrchancen, indem überkaufte und überverkaufte Bedingungen erkannt werden, kombiniert mit einer Preisbereichsanalyse und Schlusskursposition. Das Kernkonzept besteht darin, mittlere Umkehrchancen nach extremen Marktbedingungen zu erfassen, Risiken durch strenge Einstiegskriterien und dynamische Stop-Loss-Mechanismen zu managen.
Die Strategie verwendet mehrere Filtermechanismen, um Handelssignale zu bestimmen: Erstens muss der Preis ein 10-Perioden-Tief erreichen, was auf einen überverkauften Marktzustand hinweist; zweitens muss die Tagespreispalette die größte in den letzten 10 Handelstagen sein, was auf eine erhöhte Marktvolatilität hindeutet; schließlich bestätigt sie potenzielle Umkehrsignale, indem sie überprüft, ob der Schlusskurs im oberen Quartil der Tagespalette liegt. Der Eintritt wird durch Breakout-Bestätigung ausgeführt, wenn der Preis innerhalb von 2 Tagen nach Erfüllung der Handelsbedingungen über das vorherige Hoch bricht. Stop-Loss wird durch einen Trailing-Mechanismus implementiert, um die Gewinne zu schützen.
Dies ist eine gut strukturierte Mittelumkehrstrategie mit klarer Logik. Durch mehrfaches Konditionsfiltern und dynamisches Stop-Loss-Management erfasst die Strategie effektiv Marktüberverkaufsmöglichkeiten und kontrolliert gleichzeitig das Risiko. Obwohl sie einige Einschränkungen aufweist, kann die Gesamtleistung durch angemessene Optimierung und Verfeinerung verbessert werden. Anlegern wird geraten, die Parameter basierend auf spezifischen Marktmerkmalen und ihrer Risikotoleranz anzupassen, wenn sie die Strategie im Live-Handel anwenden.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Larry Conners SMTP Strategy", overlay=true, margin_long=100, margin_short=100) // --- Inputs --- // Corrected the input type declaration by removing 'type=' tickSize = input.float(0.01, title="Tick Size (e.g., 1/8 for stocks)") // --- Calculate conditions --- // 1. Today the market must make a 10-period low low10 = ta.lowest(low, 10) is10PeriodLow = low == low10 // 2. Today's range must be the largest of the past 10 bars rangeToday = high - low maxRange10 = ta.highest(high - low, 10) isLargestRange = rangeToday == maxRange10 // 3. Today's close must be in the top 25 percent of today's range rangePercent = (close - low) / rangeToday isCloseInTop25 = rangePercent >= 0.75 // Combine all buy conditions buyCondition = is10PeriodLow and isLargestRange and isCloseInTop25 // --- Buy Entry (on the next day) --- var float buyPrice = na var bool orderPending = false var float stopLoss = na // Initialize stopLoss at the top level to avoid 'Undeclared identifier' errors if (buyCondition and strategy.position_size == 0) buyPrice := high + tickSize stopLoss := low orderPending := true // Condition to place buy order the next day or the day after if orderPending and ta.barssince(buyCondition) <= 2 strategy.entry("Buy", strategy.long, stop=buyPrice) orderPending := false // --- Stop-Loss and Trailing Stop --- if (strategy.position_size > 0) stopLoss := math.max(stopLoss, low) // Move stop to higher lows (manual trailing) strategy.exit("Exit", from_entry="Buy", stop=stopLoss) // --- Plotting --- // Highlight buy conditions bgcolor(buyCondition ? color.new(color.green, 50) : na) //plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy Setup") // Plot Stop-Loss level for visualization //plot(strategy.position_size > 0 ? stopLoss : na, color=color.red, linewidth=2, title="Stop-Loss Level")