Dynamische Trendverfolgungs-Umkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-16 15:35:18
Tags:

img

Übersicht

Die Dynamic Trend Tracking Reversal Strategy ist eine kurzfristige quantitative Handelsstrategie, die auf dem JD Sequential-Indikator basiert.

  1. Verwenden Sie Preishochs und -Tiefs anstelle von Schlusskurs, um Trends zu ermitteln, die Preisänderungen schneller erfassen können.
  2. Die maximale Zählerzahl beträgt 7 statt 9, was eine schnellere Erzeugung von Handelssignalen ermöglicht.
  3. Zusätzliche Optionen für Unterstützungs-/Widerstandslinien und 5-Zahlen-Umkehrungen als Stop-Loss.

Diese Strategie eignet sich für kurzfristige Zeitrahmen wie 5-minütige und 15-minütige Diagramme, die kurzfristige Kursschwankungen und Umkehrmöglichkeiten effektiv erfassen können.

Strategie Logik

Die Kernlogik der Dynamic Trend Tracking Reversal Strategy basiert auf dem JD Sequential-Indikator. Durch den Vergleich der aktuellen Perioden-Hoch- und Tiefpreise mit denen der beiden vorherigen Perioden bestimmt dieser Indikator, ob aufeinanderfolgende höhere oder niedrigere Tiefpreise aufgetreten sind, und erzeugt eine sequentielle Zählung von 1 bis 7. Wenn sich die Zählung auf 7 ansammelt, werden Handelssignale erzeugt.

Insbesondere werden in der Strategie folgende Variablen definiert:

  • sp_up: wahr, wenn der aktuelle Höchstpreis den Höchstpreis vor zwei Perioden übersteigt
  • sp_dn: wahr, wenn der aktuelle niedrige Preis unter den niedrigen Preis vor 2 Perioden fällt
  • sp_ct: die aktuelle Zählung, jedes Mal, wenn sp_up oder sp_dn wahr ist, um 1 erhöht, maximal 7
  • sp_com: wahr, wenn die Anzahl 7 beträgt
  • sp_usr: der mittlere Preis bei Zählung 7 und sp_up, der als Aufwärtswiderstand dient
  • sp_dsr: der mittlere Preis bei Zählung 7 und sp_dn, der als Abwärtsunterstützung dient

Die Logik für die Erzeugung von Handelssignalen lautet:

  • Langes Signal: sp_com ist wahr und sp_dn ist wahr, was den Abschluss des Zählens und einen Abwärtstrend anzeigt
  • Kurzes Signal: sp_com ist wahr und sp_up ist wahr, was auf Abschluss des Zählens und einen Aufwärtstrend hinweist

Die Stop-Loss-Logik lautet:

  • Long SL: Zählumkehr auf 5 (sp_up true) oder Preisüberschreitung über sp_usr
  • Kurz SL: Umkehrung der Zählung auf 5 (sp_dn true) oder Preisüberschreitung unter sp_dsr

Durch den Vergleich von Höhen/Tiefständen in Echtzeit zur Bestimmung der Trendrichtung und -stärke, zusammen mit einem zählungsbasierten Timing für den Einstieg, kann diese Strategie kurzfristige Umkehrmöglichkeiten effektiv erfassen.

Analyse der Vorteile

Im Vergleich zu traditionellen JD Sequential-Strategien hat die Dynamic Trend Tracking Reversal Strategy folgende Vorteile:

  1. Schnellere Signalgenerierung: Der Vergleich von High/Low ist schneller als die Schließpreise bei der Erfassung von Trends, und eine 7-Zählung erzeugt Signale schneller als eine 9-Zählung.
  2. Erweiterter Stop-Loss-Mechanismus: Die Hinzufügung von 5-Zähl-Umkehrungen und Support/Resistance-Stop-Loss ermöglicht eine bessere Risikokontrolle.
  3. Flexible Konfigurationen: Optionen zur Einbeziehung von Stop Loss und Anzeige von Teilzählungen erhöhen die Flexibilität.
  4. Die hochfrequenten Signale in Kombination mit einem ordnungsgemäßen Stop-Loss passen gut zu kurzfristigen Zeitrahmen.

Der Hauptvorteil dieser Strategie ist ihre schnelle Reaktion, die große Schwankungen, die durch kurzfristige Ereignisse verursacht werden, effektiv erfassen kann.

Risikoanalyse

Die Dynamic Trend Tracking Reversal Strategy birgt auch einige Risiken:

  1. Erhöhte Handelskosten durch Hochfrequenzhandel.
  2. Vergleichen von Höhen und Tiefen in verschiedenen Märkten kann häufig zu ungerechtfertigten Trades und Verlusten führen.
  3. Potenziell aggressive Stopps: Harte Stopps sind anfällig für Spitzen und müssen rechtzeitig angepasst werden.

Um die oben genannten Risiken zu mindern, kann die Strategie in folgenden Aspekten optimiert werden:

  1. Verringern Sie die Positionsgröße auf eine geringere Kapitalnutzung pro Handel.
  2. Handel während unruhiger/schwankender Märkte einstellen, um ineffektive Geschäfte zu vermeiden.
  3. Verwenden Sie Rückhaltstationen oder Ausbruchstationen, um die Wahrscheinlichkeit zu verringern, eingeschlossen zu werden.

Optimierungsrichtlinien

Die Strategie zur Dynamischen Trendverfolgung zur Umkehrung kann weitgehend optimiert werden, hauptsächlich in folgenden Richtungen:

  1. Multi-Zeitrahmen-Kombinationen: Bestimmung der wichtigsten Trendrichtung in höheren Zeitrahmen, um den Handel dagegen zu vermeiden.

  2. Kombinationen mit anderen Indikatoren: Einbeziehung von Volatilitätsmetriken, Volumendaten usw. zur Verbesserung der Signalqualität.

  3. Maschinelles Lernen für zusätzliche Validierung. Verwenden Sie KI/ML-Algorithmen als Hilfsurteil über Handelssignale, um fehlerhafte Trades zu reduzieren.

  4. Optimieren von Parametern wie Zählzeiten, Handelssitzungen, Positionsgrößen usw. für verschiedene Marktbedingungen.

  5. Erweiterung der Mechanismen zur Risikokontrolle, Einführung anspruchsvollerer Risikomanagementtechniken wie adaptive Stopps, Positionsgröße usw. zur weiteren Risikobegrenzung.

  6. Strategiebewertung durch Backtesting Erweiterung der Stichprobengrößen und der Zeitrahmen für Backtests zur Messung der Parameterrobustheit.

Schlussfolgerung

Die Dynamic Trend Tracking Reversal Strategy erfasst kurzfristige Umkehrchancen durch Echtzeitvergleich von Preishochs und Tiefs, um die Trendrichtung und -stärke zu bestimmen, neben den 7-Zählregeln innerhalb des JD Sequential-Indikators für den Handelszeitplan.

Die Schlüsselstärke dieser Strategie liegt in ihrer schnellen Reaktion, die für den kurzfristigen Umkehrhandel geeignet ist. Gleichzeitig bestehen Risiken wie hohe Handelsfrequenzen und aggressive Stops. Zu den zukünftigen Optimierungsrichtungen gehören Parameter-Tuning, Verbesserung der Risikokontrolle, Multi-Timeframe-Kombinationen usw. Durch kontinuierliche Optimierungen und Iterationen hat diese Strategie das Potenzial, zu einem leistungsstarken Werkzeug für die effiziente Erfassung von kurzfristigen Umkehrsignalen zu werden.


/*backtest
start: 2023-12-16 00:00:00
end: 2024-01-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @NeoButane 7 Dec. 2018
// JD Aggressive Sequential Setup
// Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke.
//
// Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes.
// - Highs or lows are compared instead of close.
// - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13)
// - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here

// v1 - Release - Made as a strategy, 7 count
//    . S/R on 7 count
//   .. Entry on 7 count
//  ... Exit on 5 count or S/R cross

//@version=3
title = "JD Aggressive Sequential Setup"
vers  = " 1.0 [NeoButane]"
total = title + vers
strategy(total, total, 1, 0)

xx        = input(true, "Include S/R Crosses Into Stop Loss")
show_sp   = input(true, "Show Count 1-4")
sp_ct     = 0
inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1
sp_up     = high > high[2]
sp_dn     = low < low[2]
sp_col    = sp_up ? green : red
sp_comCol = sp_up ? red : green
sp_ct    := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na
sp_com    = sp_ct == 7
sp_sr     = valuewhen(sp_ct == 5, close, 0)
sp_usr    = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0)
sp_usr   := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr
sp_dsr    = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0)
sp_dsr   := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr
locc = location.abovebar
plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false)
plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col)
plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col)
plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col)
// plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6)
plot(sp_usr, "7 Count Resistance", maroon, 2, 6)
plot(sp_dsr, "7 Count Support", green, 2, 6)

long  = (sp_com and sp_dn)
short = (sp_com and sp_up)
sl_l  = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short
sl_s  = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long

strategy.entry('L', 1, when = long)
strategy.close('L', when = sl_l)
strategy.entry('S', 0, when = short)
strategy.close('S', when = sl_s)

Mehr