La stratégie dynamique de suivi des tendances est une stratégie de trading quantitative à court terme basée sur l'indicateur séquentiel JD. En suivant les hauts et les bas de prix en temps réel, cette stratégie détermine la direction et l'élan de la tendance actuelle pour capturer efficacement les points d'inversion du marché pour le timing d'entrée et de sortie.
Cette stratégie est adaptée aux délais courts tels que les graphiques de 5 et 15 minutes, qui peuvent capturer efficacement les fluctuations de prix à court terme et les opportunités de renversement.
La logique de base de la stratégie de renversement de tendance dynamique est basée sur l'indicateur séquentiel JD. En comparant les prix élevés et bas de la période en cours avec ceux des deux périodes précédentes, cet indicateur détermine si des hauts supérieurs ou des bas successifs se sont produits, et génère un comptage séquentiel de 1 à 7.
Plus précisément, les variables suivantes sont définies dans la stratégie:
La logique de la génération de signaux commerciaux est la suivante:
La logique du stop-loss est la suivante:
En comparant les hauts / bas en temps réel pour déterminer la direction et la force de la tendance, ainsi que le calendrier d'entrée basé sur le comptage, cette stratégie peut capturer efficacement les opportunités d'inversion à court terme.
Comparée aux stratégies traditionnelles de JD Sequential, la stratégie dynamique de suivi des tendances a les avantages suivants:
L'avantage clé de cette stratégie est sa réponse rapide, qui peut capturer efficacement les grandes fluctuations causées par des événements à court terme.
La stratégie dynamique de suivi des tendances comporte également certains risques:
Pour atténuer les risques susmentionnés, la stratégie peut être optimisée dans les aspects suivants:
La stratégie dynamique de suivi des tendances pour l'inversion des tendances peut être encore optimisée, principalement dans les directions suivantes:
Déterminer la direction de la tendance principale sur des délais plus longs pour éviter de négocier contre elle.
Combinaisons avec d'autres indicateurs: inclure des métriques de volatilité, des données de volume, etc. pour améliorer la qualité du signal.
L'apprentissage automatique pour une validation supplémentaire. Utiliser des algorithmes d'IA / ML comme jugement auxiliaire sur les signaux de trading pour réduire les transactions erronées.
Optimiser les paramètres tels que les périodes de comptage, les sessions de négociation, la taille des positions, etc. pour s'adapter aux différentes conditions du marché.
Élargir les mécanismes de contrôle des risques, introduire des techniques de gestion des risques plus sophistiquées telles que les arrêts adaptatifs, la dimensionnement des positions, etc., afin de limiter davantage les risques.
Évaluation de la stratégie par le backtesting. Élargir les tailles d'échantillons et les délais pour les backtests afin de mesurer la robustesse des paramètres.
La stratégie d'inversion de tendance dynamique capture les opportunités d'inversion à court terme grâce à la comparaison en temps réel des hauts et des bas des prix pour déterminer la direction et la force de la tendance, ainsi que les règles de comptage 7 dans l'indicateur séquentiel JD pour le timing des transactions.
La force clé de cette stratégie réside dans sa réponse rapide adaptée au trading d'inversion à court terme. Dans le même temps, des risques tels que des fréquences de trading élevées et des arrêts agressifs existent. Les directions d'optimisation futures incluent l'ajustement des paramètres, l'amélioration des contrôles des risques, les combinaisons multi-temporelles, etc. Grâce à des optimisations et des itérations continues, cette stratégie a le potentiel de devenir un outil puissant pour capturer efficacement les signaux d'inversion à court terme.
/*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)