
Die Dynamische Trend-Tracking-Umkehrstrategie ist eine kurzfristige, quantitative Handelsstrategie, die auf JD Sequential-Indikatoren basiert. Die Strategie verfolgt die Höhen und Tiefen der Preise in Echtzeit, um die Richtung und Stärke des aktuellen Trends zu beurteilen, um die Marktumkehrpunkte effizient zu erfassen und die Ein- und Ausstiegszeiten festzulegen. Im Vergleich zur traditionellen JD Sequential-Strategie wurden folgende Verbesserungen vorgenommen:
Die Strategie ist für kurze Zeitspannen geeignet, wie 5 Minuten, 15 Minuten, und kann kurzfristige Preisschwankungen und Umkehrmöglichkeiten effektiv erfassen.
Die Kernlogik der Trend-Tracking-Umkehr-Strategie basiert auf dem JD Sequential-Indikator, der durch den Vergleich der aktuellen Periode mit den Höhen und Tiefen der beiden vorherigen Perioden beurteilt, ob die Preise in Folge höhere Höhen oder niedrigere Tiefen erzielen, was eine Sequenzzahl von 1 bis 7 ergibt. Die Summe von 7 erzeugt einen Handel.
Die Strategie definiert die folgenden Variablen:
Die Logik der Handelssignale lautet:
Die Stop-Loss-Logik ist:
Die Strategie ermittelt die Richtung und Stärke des Trends anhand von Highs und Lows in Echtzeit. Der Zähler zeichnet den Einstieg und kann kurzfristige Umkehrmöglichkeiten effektiv erfassen. Gleichzeitig wird eine Stop-Loss-Linie festgelegt, um das Risiko zu kontrollieren.
Im Vergleich zu herkömmlichen JD Sequential-Strategien bietet die Dynamic Trend Tracking Reversal-Strategie folgende Vorteile:
Die Hauptvorteile dieser Strategie sind die schnelle Reaktion und die Fähigkeit, große Schwankungen, die durch kurzfristige Unerwartete Ereignisse verursacht werden, effektiv zu erfassen. Gleichzeitig können die algorithmischen Signalerzeugung und -stop im Vergleich zu vollständig manuellen Transaktionen die emotionale Wirkung der Händler reduzieren und somit die Stabilität verbessern.
Eine Trend-Tracking-Umkehrstrategie birgt auch Risiken:
Um die oben genannten Risiken zu verringern, können Optimierungen in folgenden Bereichen vorgenommen werden:
Es gibt noch viel Optimierungsmöglichkeiten für die Trend-Tracking-Umkehr-Strategie.
Mehrzeit-Perioden-Palette. Sie ermöglicht es, die Richtung des Haupttrends in höheren Zeiträumen zu bestimmen und den Handel mit dem Haupttrend zu vermeiden.
Mit anderen Indikatoren kombiniert. Kann mit anderen Indikatoren kombiniert werden, wie z. B. Schwankungsrate, Umsatz, um die Qualität des Signals zu verbessern.
Maschinelle Lern-Filterung. Die Verwendung von maschinellen Lern-Algorithmen hilft bei der Beurteilung von Handelssignalen und reduziert die Anzahl fehlerhafter Geschäfte.
Parameteroptimierung. Parameter wie Anzahl der Zählzyklen, Handelszeiträume und Positionsanteil können optimiert werden, um den verschiedenen Marktbedingungen gerecht zu werden.
Erhöhung der Risikokontrollmechanismen. Hinzu kommen umfangreichere Risikokontrollmechanismen wie beispielsweise mobile Stop-Losses und Positionskontrolle, um die Risiken weiter zu begrenzen.
Erweiterung der Probenmenge und der Zeitspanne der Rückmessung, Stabilität der Testparameter.
Die Dynamische Trend-Tracking-Umkehr-Strategie erzeugt Handelssignale durch die Richtung und Stärke von Trends in Echtzeit an höheren und niedrigeren Punkten und nutzt die 7-Zählregeln des JD Sequential-Indikators, um kurzfristige Umkehrmöglichkeiten mit hoher Frequenz zu erfassen. Im Vergleich zur herkömmlichen JD-Strategie wurden Verbesserungen vorgenommen, um mit höheren und niedrigeren Punkten zu handeln, die Zählzyklus zu verkürzen und die Stop-Loss-Mechanismen zu erhöhen, um zeitnahere Handelssignale zu erhalten.
Die wichtigsten Vorteile dieser Strategie sind die schnelle Reaktion und die geeignete Kurzlinie, um Rückschläge zu erfassen, aber auch die Risiken, wie häufige Transaktionen, Radikalisierung der Verluste. Die zukünftigen Optimierungsrichtungen umfassen Parameteranpassung, Erhöhung der Risikomanagementmechanismen, Kombination von mehreren Zeitzyklen usw. Durch kontinuierliche Optimierung und Wiederholung wird die Strategie zu einem leistungsfähigen Werkzeug für die effiziente Erfassung von kurzfristigen Rückschlagsignalen 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)