Die Dynamic Trend Tracking Reversal Strategy ist eine kurzfristige quantitative Handelsstrategie, die auf dem JD Sequential-Indikator basiert.
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.
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:
Die Logik für die Erzeugung von Handelssignalen lautet:
Die Stop-Loss-Logik lautet:
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.
Im Vergleich zu traditionellen JD Sequential-Strategien hat die Dynamic Trend Tracking Reversal Strategy folgende Vorteile:
Der Hauptvorteil dieser Strategie ist ihre schnelle Reaktion, die große Schwankungen, die durch kurzfristige Ereignisse verursacht werden, effektiv erfassen kann.
Die Dynamic Trend Tracking Reversal Strategy birgt auch einige Risiken:
Um die oben genannten Risiken zu mindern, kann die Strategie in folgenden Aspekten optimiert werden:
Die Strategie zur Dynamischen Trendverfolgung zur Umkehrung kann weitgehend optimiert werden, hauptsächlich in folgenden Richtungen:
Multi-Zeitrahmen-Kombinationen: Bestimmung der wichtigsten Trendrichtung in höheren Zeitrahmen, um den Handel dagegen zu vermeiden.
Kombinationen mit anderen Indikatoren: Einbeziehung von Volatilitätsmetriken, Volumendaten usw. zur Verbesserung der Signalqualität.
Maschinelles Lernen für zusätzliche Validierung. Verwenden Sie KI/ML-Algorithmen als Hilfsurteil über Handelssignale, um fehlerhafte Trades zu reduzieren.
Optimieren von Parametern wie Zählzeiten, Handelssitzungen, Positionsgrößen usw. für verschiedene Marktbedingungen.
Erweiterung der Mechanismen zur Risikokontrolle, Einführung anspruchsvollerer Risikomanagementtechniken wie adaptive Stopps, Positionsgröße usw. zur weiteren Risikobegrenzung.
Strategiebewertung durch Backtesting Erweiterung der Stichprobengrößen und der Zeitrahmen für Backtests zur Messung der Parameterrobustheit.
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)