Dynamische Strategie zur Verringerung von Verlusten

Schriftsteller:ChaoZhang, Datum: 2023-12-21
Tags:

img

Übersicht

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.

Strategie Logik

  1. 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.

  2. 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.

  3. Setzen Sie den niedrigsten Preis der vorangegangenen 15-minütigen Kerze als Stop-Loss-Preis nach dem Long-Gehen.

  4. 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.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist, dass sie den Stop-Loss-Preis dynamisch anpassen kann.

Zu den Vorteilen zählen insbesondere:

  1. Trend-basierte Beurteilungen können Markttrends rechtzeitig bestimmen und die richtige Handelsrichtung auswählen.

  2. Der 15-minütige Zeitrahmenhandel ermöglicht häufige Ein- und Ausgänge, um mehr Chancen zu nutzen.

  3. Eine dynamische Stop-Loss-Anpassung basierend auf neuen Höchst- oder Tiefwerten verringert das Risiko, dass ein Stop-Loss getroffen wird.

  4. Eine vernünftige Stop-Loss-Positionierung verhindert weitgehend unnötige Verluste.

Risikoanalyse

Das Hauptrisiko dieser Strategie beruht auf Fehlern bei der Beurteilung von Trends.

  1. Eine falsche Beurteilung des täglichen Trends kann zu einer falschen Handelsrichtung führen.

  2. Die Preise können kurzfristig heftig schwanken, was die Wahrscheinlichkeit erhöht, dass ein 15-minütiger Stop-Loss erreicht wird.

  3. Eine falsche Identifizierung von Trendumkehrpunkten kann zu Verlusten führen.

Entsprechende Lösungen

  1. Hinzufügen von Indikatoren aus anderen Zeitrahmen für umfassende Beurteilungen, um nicht auf einen einzigen Zeitrahmen angewiesen zu sein.

  2. Beurteilen Sie die Marktvolatilität und entspannen Sie den Stop-Loss-Bereich bei hoher Volatilität angemessen.

  3. Hinzufügen eines Mechanismus zur Identifizierung des Trendumkehrpunkts, um Positionen rechtzeitig vor Umkehrungen zu schließen.

Optimierungsrichtlinien

Es gibt noch Raum für weitere Optimierungen:

  1. Hinzufügen anderer Zeitrahmenindikatoren zur Optimierung der Trendfassung.

  2. Versuche verschiedene Stop-Loss-Ratio-Einstellungen, um optimale Parameter zu finden.

  3. Zusätzliche Volumenindikatoren zur Vermeidung von Fehlern durch Volumendivergenz.

  4. Hinzufügen von Trendumkehrmechanismen zur Optimierung von Ausgangspunkten.

  5. Beurteilen Sie die Erweiterung der Trailing Stop-Preisintervalle, um das Risiko, dass ein Stop-Loss getroffen wird, weiter zu verringern.

Zusammenfassung

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)

Mehr