Bidirektionale Trendverfolgungsstrategie basierend auf Bereichsdurchbruch


Erstellungsdatum: 2024-02-01 14:22:26 zuletzt geändert: 2024-02-01 14:22:26
Kopie: 2 Klicks: 528
1
konzentrieren Sie sich auf
1617
Anhänger

Bidirektionale Trendverfolgungsstrategie basierend auf Bereichsdurchbruch

Überblick

Die Strategie erzeugt ein Handelssignal durch die Berechnung des letzten Stopp- und des letzten Aufschwungspreises in Kombination mit der Beurteilung des aktuellen Preises, ob der Preis in eine bestimmte Zone eingetreten ist. Wenn der Preis einen bestimmten Prozentsatz des vorherigen Stopp-Preises überschreitet, wird ein Plus getätigt, wenn der Preis einen bestimmten Prozentsatz des vorherigen Aufschwungs-Preises unterliegt, wird ein Minus getätigt.

Strategieprinzip

Die Strategie berechnet zunächst den letzten Stopp lastbull und den letzten Stopp lastbear. Dann berechnet man den Anteil der Veränderung des aktuellen Preises close gegenüber lastbull, dddl, und den Anteil der Veränderung des Preises close gegenüber lastbear, dds.

Wenn ddl unter dem konfigurierten Mehrsignal-Threshold signallong ist, erzeugt das Mehrsignal up, wenn dds über dem konfigurierten Hohlsignal-Threshold signalshort ist, erzeugt das Hohlsignal dn。

Wenn Sie mehrere Parameter benötigen, müssen Sie mehrere Positionen eröffnen. Wenn Sie mehrere Parameter benötigen, müssen Sie mehrere Positionen eröffnen.

Die Bedingungen für die Ausgleichsposition sind, dass ein Anstieg des Preises nach dem Eröffnen einer Überposition eine Ausgleichsposition bedeutet, und ein Rückgang des Preises nach dem Eröffnen einer Leerposition eine Leerposition.

Analyse der Stärken

Die Strategie kombiniert Trend- und Bandbrechungsurteile und kann sowohl Trends erfassen als auch Bandbrechungen nutzen, um Handelssignale zu erzeugen. Sie bietet mehr Flexibilität beim Short-Switching. Im Vergleich zu einer einfachen Trend-Tracking-Strategie kann die neue Trendrichtung schnell nach einem Bandbrecher erfasst werden.

Die Parameter sind räumlich konfigurierbar und können flexibel angepasst werden, um die Parameter für die Mehrfach-Laufzeit an die verschiedenen Sorten anzupassen. Die Lageröffnungszeiten können konfiguriert werden, um wichtige Zeitpunkte zu vermeiden.

Risikoanalyse

Die Strategie hat keine Stop-Loss-Mechanismen und kann keine Einzelschäden wirksam kontrollieren. Wenn die Handelsspanne der Sorten stark schwankt, ist die Positionsberechnung von Preise beeinflusst.

Ein Stop-Loss kann eingestellt werden, um den Einzelschaden zu begrenzen. Die Positionsalgorithmen können nach verschiedenen Varianten eingestellt werden, um die Positionen stabiler zu machen.

Optimierungsrichtung

  1. Erhöhung der mobilen Stop-Loss-Risiken, um die Einzelschäden zu kontrollieren
  2. Verbesserte Methoden zur Berechnung von Positionen, wie z. B. die Berechnung mit ATR, um die Positionsgröße stabiler zu machen
  3. Erhöhung der Filter für die Eröffnung von Positionen, z. B. bei einem Gold-Cross-Break
  4. Zusammenführung von Transaktionen mit mehreren Sorten, Verknüpfungen und Verringerung des systemischen Risikos

Zusammenfassen

Die Strategie integriert Trendbeurteilung und Bündelung, um Handelssignale zu erzeugen. Sie kann sowohl neue Trendrichtungen erfassen als auch Bündelungsschwankungen nutzen. Die Parameter sind flexibel eingestellt und können für verschiedene Sorten angepasst werden. Die Strategie hat viel Optimierungsraum und kann aus mehreren Perspektiven verbessert werden, um sich an kompliziertere Marktumgebungen anzupassen.

Strategiequellcode
/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, title = "Long")
needshort = input(true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
signalshort = input(3.0, title = "Short, %")
signallong = input(-3.0, title = "Long, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
bull = close > close[1] ? 1 : 0
bear = close < close[1] ? 1 : 0
lastbull = 0.0
lastbull := bull ? close : lastbull[1]
lastbear = 0.0
lastbear := bear ? close : lastbear[1]

//Signals
ddl = ((close / lastbull) - 1) * 100
up = ddl < signallong
dds = ((close / lastbear) - 1) * 100
dn = dds > signalshort

//Lines
plot(dds, style = plot.style_area, color = color.red, transp = 0)
plot(ddl, style = plot.style_area, color = color.lime, transp = 0)
plot(0, color = color.black, linewidth = 2, transp = 0)

//Background
col = (up and needlong) or (dn and needshort) ? color.yellow : na
bgcolor(col, transp = 20)

//Orders
lot = 0.0
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if up
    strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if dn
    strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if strategy.position_size > 0 and close > open
    strategy.entry("Close", strategy.short, 0)
if strategy.position_size < 0 and close < open
    strategy.entry("Close", strategy.long, 0)