Dieses Handelssystem mit dem Namen
Das System folgt den folgenden Schritten:
Berechnen Sie den 14-Perioden-ATR und normalisieren Sie ihn durch Dividieren durch den Schlusskurs.
Berechnen Sie den 100-tägigen einfachen gleitenden Durchschnitt (SMA) der normalisierten ATR.
Berechnen Sie das Verhältnis des normalisierten ATR zu seinem 100-Tage-SMA.
Bestimmung des Zielhebels auf der Grundlage der Umkehrung des Verhältnisses (2/Verhältnis).
Berechnen Sie die Zielzahl der geöffneten Trades, indem Sie die Zielfinanzierung mit 5 multiplizieren.
Ziel und aktuelle offene Trades auf dem Diagramm.
Überprüfen Sie, ob es eine Kaufchance gibt (wenn die aktuellen offenen Trades unter dem Ziel liegen) oder den Handel schließen (wenn die aktuellen offenen Trades größer sind als das Ziel plus 1).
Wenn die Gelegenheit zum Kauf besteht, öffnen Sie einen Long-Trade und fügen Sie ihn zum OpenTrades-Array hinzu.
Wenn die Chance zum Schließen des Handels und der Trades im OpenTrades-Array vorhanden ist, schließen Sie den jüngsten Handel, indem Sie das Array verweisen und aus dem Array entfernen.
Das System zielt darauf ab, Trends zu erfassen, indem es offene Trades und Hebelwirkung dynamisch anhand der Marktvolatilität anpasst.
Die Vorteile dieser Strategie:
Eine dynamische Anpassung der Hebelwirkung und der Positionsgröße auf der Grundlage von Veränderungen der Marktvolatilität kann das Risiko wirksam steuern.
Die Verwendung des ATR-Indikators zur Berechnung der Zielpositionsgröße, die die Marktvolatilität widerspiegelt, ist eine vernünftige Wahl.
Pyramiden mit mehreren Positionen können von Trends profitieren.
Die Aufzeichnung jedes Handels in einem Array ermöglicht eine explizite Kontrolle der Eröffnung und Schließung von Geschäften.
Die Strategie hat nur wenige Parameter und ist einfach umzusetzen und zu betreiben.
Die Logik ist klar und die Code-Struktur ist gut organisiert für eine einfache Optimierung und Iteration.
Die Risiken dieser Strategie:
Der ATR spiegelt nur die volatilität der Vergangenheit wider und kann zukünftige Veränderungen nicht vorhersagen, was zu einer unsachgemäßen Hebelwirkung führen kann.
Pyramidenspiel kann bei einer Trendumkehr Verluste verursachen.
Die Array-Einschreibung gilt nur für einfache Open/Close-Operationen. Für komplexe Logik ist eine komplexere Datenstruktur erforderlich.
Die Einstellungen der Zielfinanzierung und der Positionsgröße müssen eher auf der Grundlage von Symbolspezifiken als auf der Grundlage fester Parameter angepasst werden.
Die Abhängigkeit von einem einzigen Indikator kann irreführend sein, andere Volatilitätsindikatoren oder Algorithmen für maschinelles Lernen können die Robustheit verbessern.
Die Strategie kann in folgenden Aspekten optimiert werden:
Hinzufügen von Stop Loss zu aktivem Cut Loss bei Erreichen des Stop Loss-Niveaus.
Optimierung der Indikatorparameter durch Prüfung verschiedener ATR-Perioden.
Versuchen Sie andere Einstiegsstrategien wie Festmenge-Einträge und testen Sie die Ergebnisse.
Für den Kombinationsgebrauch werden weitere Volatilitätsindikatoren wie Bollinger Bands WIDTH, KD, RSI usw. hinzugefügt.
Verwenden Sie maschinelle Lernmodelle, um Volatilität zu prognostizieren, anstatt einfach zu glätten.
Optimierung der Berechnung der Positionsgröße, z. B. mit ATR-Multiplikatoren oder Volatilitätsfunktionen.
Für die Strategieanalyse und -optimierung werden weitere Eintrittsdetails wie Eintrittspreis, Zeit usw. aufgezeichnet.
Fügen Sie die Optimierung von Parametern für die automatische Optimierung hinzu, um optimale Parametermengen zu finden.
Die Strategie passt die Hebelwirkung und die Positionsgröße dynamisch an, basierend auf ATR, um die Risikoposition während der Trends zu verwalten, und hat bestimmte Vorteile.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)