Diese Strategie bestimmt die Trendrichtung basierend auf täglichen Kerzen und verwendet die neuen Höchst- oder Tiefpunkte, die durch 15-minütige Kerzen gebildet werden, als Stop-Loss-Preis oder Trailing-Stop-Loss-Preis, um den Stop-Loss dynamisch anzupassen und mehr Gewinne zu erzielen.
Vergleichen Sie den Schlusskurs der täglichen Kerzen mit dem höchsten und niedrigsten Preis der vorherigen täglichen Kerzen, um die Trendrichtung zu bestimmen. Wenn der Schlusskurs höher ist als der höchste Preis des vorherigen Tages, wird er als Aufwärtstrend definiert. Wenn der Schlusskurs niedriger ist als der niedrigste Preis des vorherigen Tages, wird er als Abwärtstrend definiert.
In einem Aufwärtstrend geht man lang, wenn der Schlusskurs der 15-minütigen Kerze höher ist als der höchste Preis der vorherigen 15-minütigen Kerze. In einem Abwärtstrend geht man kurz, wenn der Schlusskurs der 15-minütigen Kerze niedriger ist als der niedrigste Preis der vorherigen 15-minütigen Kerze.
Setzen Sie den niedrigsten Preis der vorangegangenen 15-minütigen Kerze als Stop-Loss-Preis nach dem Long-Gehen.
Wenn die 15-minütige Kerze wieder ein neues Hoch oder Tief erreicht, passt den Stop-Loss-Preis entsprechend an. Passt nach dem Long-Gehen an das neue Tief an. Passt nach dem Short-Gehen an das neue Hoch an. Dies realisiert einen dynamischen Trailing-Stop-Loss.
Der größte Vorteil dieser Strategie ist, dass sie den Stop-Loss-Preis dynamisch anpassen kann.
Zu den Vorteilen zählen insbesondere:
Trend-basierte Beurteilungen können Markttrends rechtzeitig bestimmen und die richtige Handelsrichtung auswählen.
Der 15-minütige Zeitrahmenhandel ermöglicht häufige Ein- und Ausgänge, um mehr Chancen zu nutzen.
Eine dynamische Stop-Loss-Anpassung basierend auf neuen Höchst- oder Tiefwerten verringert das Risiko, dass ein Stop-Loss getroffen wird.
Eine vernünftige Stop-Loss-Positionierung verhindert weitgehend unnötige Verluste.
Das Hauptrisiko dieser Strategie beruht auf Fehlern bei der Beurteilung von Trends.
Eine falsche Beurteilung des täglichen Trends kann zu einer falschen Handelsrichtung führen.
Die Preise können kurzfristig heftig schwanken, was die Wahrscheinlichkeit erhöht, dass ein 15-minütiger Stop-Loss erreicht wird.
Eine falsche Identifizierung von Trendumkehrpunkten kann zu Verlusten führen.
Entsprechende Lösungen
Hinzufügen von Indikatoren aus anderen Zeitrahmen für umfassende Beurteilungen, um nicht auf einen einzigen Zeitrahmen angewiesen zu sein.
Beurteilen Sie die Marktvolatilität und entspannen Sie den Stop-Loss-Bereich bei hoher Volatilität angemessen.
Hinzufügen eines Mechanismus zur Identifizierung des Trendumkehrpunkts, um Positionen rechtzeitig vor Umkehrungen zu schließen.
Es gibt noch Raum für weitere Optimierungen:
Hinzufügen anderer Zeitrahmenindikatoren zur Optimierung der Trendfassung.
Versuche verschiedene Stop-Loss-Ratio-Einstellungen, um optimale Parameter zu finden.
Zusätzliche Volumenindikatoren zur Vermeidung von Fehlern durch Volumendivergenz.
Hinzufügen von Trendumkehrmechanismen zur Optimierung von Ausgangspunkten.
Beurteilen Sie die Erweiterung der Trailing Stop-Preisintervalle, um das Risiko, dass ein Stop-Loss getroffen wird, weiter zu verringern.
Die Gesamtleistung dieser Strategie ist gut. Die Logik ist klar und leicht verständlich. Sie hat Vorteile wie dynamische Stop-Loss-Anpassung, häufigen Handel und Handel entlang der Trends. Sie kann Risiken effektiv kontrollieren und Gewinne einfangen und lohnt sich für weitere Tests und Optimierungen. Aber es gibt immer noch Raum für Verbesserungen. Es wird empfohlen, Aspekte wie umfassendes Urteilsvermögen aus mehreren Blickwinkeln, Parameteroptimierung, Hinzufügen von Trendumkehr-Identifikationsmechanismen usw. zu verbessern, um die Stabilität und Rentabilität der Strategie weiter zu stärken.
/*backtest start: 2023-12-13 00:00:00 end: 2023-12-15 02:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Anand's Strategy", overlay=true) // Get the high and low of the previous day's candle prev_high = request.security(syminfo.tickerid, "D", high[2]) prev_low = request.security(syminfo.tickerid, "D", low[2]) // var float prev_high = na // var float prev_low = na prev_close = request.security(syminfo.tickerid, "D", close[1]) getDayIndexedHighLow(_bar) => _indexed_high = request.security(syminfo.tickerid, "D", high[_bar]) _indexed_low = request.security(syminfo.tickerid, "D", low[_bar]) [_indexed_high, _indexed_low] var index = 2 while index >= 0 [indexed_high_D, indexed_low_D] = getDayIndexedHighLow(index) if prev_close > indexed_high_D or prev_close < indexed_low_D prev_high := indexed_high_D prev_low := indexed_low_D break // Decrease the index to move to the previous 15-minute candle index := index - 1 // Determine the trade direction based on the candle criterion trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0) // Get the current close from 15-minute timeframe current_close = request.security(syminfo.tickerid, "15", close[1]) prev_high_15m = request.security(syminfo.tickerid, "15", high[2]) prev_low_15m = request.security(syminfo.tickerid, "15", low[2]) // var float prev_high_15m = na // var float prev_low_15m = na getIndexedHighLow(_bar) => _indexed_high = request.security(syminfo.tickerid, "15", high[_bar]) _indexed_low = request.security(syminfo.tickerid, "15", low[_bar]) [_indexed_high, _indexed_low] // Loop through previous 15-minute candles until the condition is met var i = 2 while i >= 2 [indexed_high_15m, indexed_low_15m] = getIndexedHighLow(i) if current_close > indexed_high_15m or current_close < indexed_low_15m prev_high_15m := indexed_high_15m prev_low_15m := indexed_low_15m break // Decrease the index to move to the previous 15-minute candle i := i - 1 buy_condition = trade_direction == 1 and current_close > prev_high_15m stop_loss_buy = prev_low_15m // Sell Trade Criteria in Negative Trend sell_condition = trade_direction == -1 and current_close < prev_low_15m stop_loss_sell = prev_high_15m // Trailing Stop Loss for Buy Trade // Custom Trailing Stop Function for Buy Trade var float trail_stop_buy = na trailing_buy_condition = buy_condition and current_close > trail_stop_buy if trailing_buy_condition trail_stop_buy := current_close // Custom Trailing Stop Function for Sell Trade var float trail_stop_sell = na trailing_sell_condition = sell_condition and current_close < trail_stop_sell if trailing_sell_condition trail_stop_sell := current_close // Take Buy Trade with Stop Loss if (buy_condition) strategy.entry("Buy", strategy.long) strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy) // Take Sell Trade with Stop Loss if (sell_condition) strategy.entry("Sell", strategy.short) strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell) // Set the background color based on the trade direction bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)