Diese Strategie verwendet hauptsächlich die Preise des vorherigen Handelstages, die hohen, niedrigen und schließenden Preise als Support- und Widerstandsniveaus für den aktuellen Tag.
Der Code definiert zunächst eine Funktion CalculateSupportResistance zur Berechnung der Unterstützungs- und Widerstandsniveaus, die die Höchst-, Tief- und Schlusskurse des vorherigen Handelstages als Unterstützungs- und Widerstandsniveaus des aktuellen Tages extrahiert.
Dann in der Hauptlogik wird diese Funktion aufgerufen, um diese drei Preisniveaus zu erhalten und sie zu zeichnen.
In der Backtesting-Logik geht es lang, wenn der Schlusskurs niedriger ist als das Tief des vorherigen Tages, während der aktuelle Preis höher ist als das Tief, was einen Ausbruch bildet.
Durch dieses Breakout-Modell werden die Beurteilung des Trends und die Erzeugung von Handelssignalen umgesetzt.
Verwenden Sie die Daten der vorherigen Handelstage, um die Unterstützungs- und Widerstandsniveaus des aktuellen Tages zu ermitteln, um das Problem der Optimierung von Parametern zu vermeiden
Unterstützungs- und Widerstandsniveaus stammen aus realen Markthandelsdaten mit einem gewissen Referenzwert
Einfaches und unkompliziertes Backtestmodell, leicht zu verstehen und umzusetzen
Visuelle Anzeige von Unterstützungs- und Widerstandsniveaus bildet die Wahrnehmung der Preise
Echtzeitüberwachung von Ausbrüchen, rechtzeitige Erfassung von Handelsmöglichkeiten
Unterstützungs- und Widerstandsniveaus ändern sich im Laufe der Zeit, ihre Gültigkeit ist schwer zu bestimmen
Unmöglichkeit, die Trendrichtung vorherzusagen, Gefahr fehlender Umkehrungen
Leicht von falschen Ausbrüchen betroffen, Risiko eines vorzeitigen Eintritts
Unmöglich, die Dauer der Ausbrüche zu bestimmen, wahrscheinlich ein früher Stop-Loss
Einzelne Support- und Widerstandsstörungen sind unter enormen Marktschwankungen wahrscheinlicher
Gegenmaßnahmen:
Kombination mehrerer Faktoren zur Beurteilung der Gültigkeit von Ausbrüchen
Erweitern Sie den Stop-Loss-Bereich angemessen, um Trends zu erfassen
Offene Positionen in Chargen, Verringerung der Auswirkungen einzelner Schwankungen
Hinzufügen Sie mehr historische Daten wie 5-Tage, 10-Tage-Linien, um Ebenen zu bestimmen
Einbeziehung anderer Indikatoren wie Volumen zur Beurteilung der Breakout-Gültigkeit
Einrichtung von Stop-Loss auf Basis der tatsächlichen Volatilität
Optimierung des Kapitalmanagements, Kontrolle einzelner Verluste
Insgesamt ist dies eine typische Breakout-Strategie, einfach und intuitiv. Durch den Aufbau der Unterstützung und des Widerstands des aktuellen Tages mit den Daten des vorherigen Tages und das Backtesting von Breakouts dieser Ebenen für lang / kurz. Die Vorteile sind leicht zu verstehen und die Ebenen direkt zu visualisieren; die Nachteile sind falsche Breakout-Risiken und Unsicherheit der Persistenz. Die nächsten Schritte sind die Verbesserung der Breakout-Gültigkeit, die Kontrolle der Risiken, die Optimierung des Kapitalmanagements usw.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Support and Resistance with Backtesting", overlay=true) // Function to calculate support and resistance levels calculateSupportResistance() => highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on) lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on) closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) [highPrevDay, lowPrevDay, closePrevDay] // Call the function to get support and resistance levels [supResHigh, supResLow, supResClose] = calculateSupportResistance() // Plotting support and resistance levels plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High") plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low") plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close") // Backtesting logic backtestCondition = close[1] < supResLow and close > supResLow strategy.entry("Long", strategy.long, when=backtestCondition) // Plotting buy/sell arrows for backtesting plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)