Stratégie de suivi de tendance dynamique


Date de création: 2024-01-16 15:35:18 Dernière modification: 2024-01-16 15:35:18
Copier: 0 Nombre de clics: 592
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance dynamique

Aperçu

La stratégie d’inversion de suivi de tendance dynamique est une stratégie de négociation quantitative à court terme basée sur les indicateurs JD Sequential. La stratégie permet de suivre en temps réel les hauts et les bas des prix, de juger de la direction et de l’intensité de la tendance actuelle, de capturer efficacement les revers du marché et de planifier les entrées et les sorties.

  1. L’utilisation des hauts et des bas pour déterminer la tendance, plutôt que la clôture du cours, permet de capturer plus rapidement les variations de prix.
  2. Le compteur peut produire un signal de transaction plus rapidement si le nombre maximal est de 7 au lieu de 9.
  3. Ajout d’options pour le support de la ligne de résistance et de l’inversion à 5 compteur comme arrêt de perte.

Cette stratégie est adaptée pour une utilisation sur des périodes de temps courtes comme 5 minutes, 15 minutes, et permet de capturer efficacement les fluctuations de prix à court terme et les opportunités de retournement.

Principe de stratégie

La logique centrale de la stratégie de suivi de tendance dynamique est basée sur l’indicateur JD Sequential, qui compare les hauts et les bas de la période actuelle avec les hauts et les bas des deux périodes précédentes pour déterminer si les prix ont continué à créer des hauts plus élevés ou des bas plus bas, donnant un nombre séquentiel de 1 à 7.

Plus précisément, la stratégie définit les variables suivantes:

  • sp_up: est vrai lorsque le prix du pic est supérieur au prix du pic de la deuxième période précédente
  • sp_dn: est vrai lorsque le prix du bas est inférieur au prix du bas de la deuxième période précédente
  • sp_ct: enregistre le compte courant, + 1 compte si sp_up ou sp_dn est vrai, jusqu’à 7
  • sp_com: est vrai si le compte est égal à 7
  • sp_usr: le cours moyen à 7 et sp_up, comme résistance à la hausse
  • sp_dsr: le cours moyen à 7 et sp_dn, comme support à la baisse

La logique de génération du signal de transaction est la suivante:

  • Signaux de position longue: sp_com est vrai et sp_dn est vrai, indiquant que le compte est terminé et en baisse
  • Signal de position courte: sp_com est vrai et sp_up est vrai, indiquant que le compte est terminé et en tendance haussière

La logique de stop-loss est la suivante:

  • Stop à long terme: compte à rebours à 5 ((sp_up est vrai) ou prix sursp_usr
  • Stop short: compte à rebours à 5 ((sp_dn est vrai) ou prix à la rupture de sp_dsr

La stratégie détermine la direction et la force de la tendance en temps réel par rapport aux hauts et aux bas, le compteur chronométre l’entrée en jeu, capte efficacement les occasions de revers à court terme et met en place des lignes de stop pour contrôler les risques.

Analyse des avantages

Par rapport à la stratégie traditionnelle JD Sequential, la stratégie de suivi de tendance dynamique inverse présente les avantages suivants:

  1. Un signal est généré plus rapidement. L’utilisation d’une comparaison des hauts et des bas permet de capturer la tendance plus rapidement que le prix de clôture. Le compte 7 peut générer un signal plus rapidement que le compte 9.
  2. Augmentation des mécanismes d’arrêt des pertes. L’ajout d’un compte à rebours à 5 et de l’arrêt de la résistance au support permettent de mieux contrôler les risques.
  3. Flexibilité de configuration: vous pouvez choisir d’ajouter ou non un stop loss et d’afficher le compte partiel.
  4. Convient pour les courts circuits. Les signaux à haute fréquence sont associés à des arrêts appropriés, particulièrement adaptés aux périodes de courts circuits.

Les principaux avantages de cette stratégie sont sa rapidité de réponse et sa capacité à capturer efficacement les fluctuations importantes causées par des événements inattendus à court terme. En outre, la génération et la suppression de signaux algorithmiques peuvent réduire l’impact émotionnel des traders, ce qui améliore la stabilité par rapport aux transactions entièrement manuelles.

Analyse des risques

Il y a aussi des risques à suivre une tendance dynamique:

  1. Les transactions à haute fréquence augmentent les coûts de transaction. Des transactions à haute fréquence entraînent des frais de commissions et des frais de points de glissement.
  2. Il est facile de se tromper. Dans un marché en crise, la comparaison des hauts et des bas peut souvent déclencher des signaux de négociation.
  3. Les arrêts trop radicaux. Les arrêts durs sont faciles à décaler, et les arrêts de déplacement peuvent être envisagés à temps.

Pour atténuer ces risques, il est possible d’optimiser les choses de la manière suivante:

  1. Adaptation de la taille des portefeuilles et réduction de l’utilisation des capitaux par transaction.
  2. La suspension des transactions en cas de choc éviterait l’annulation des transactions.
  3. La probabilité d’un couplage est réduite par l’utilisation d’un arrêt mobile ou d’un arrêt de rupture par intervalles.

Orientation de l’optimisation de la stratégie

Il y a encore beaucoup de place pour optimiser les stratégies de suivi des tendances dynamiques et de rétrogradation.

  1. La composition multi-périodes permet de déterminer la direction de la tendance principale sur une période plus longue et d’éviter les transactions en opposition avec la tendance principale.

  2. Il peut être combiné avec d’autres indicateurs, tels que le taux de fluctuation, le volume de transactions, etc., pour améliorer la qualité du signal.

  3. Le filtrage de l’apprentissage automatique utilise des algorithmes d’apprentissage automatique pour aider à juger les signaux de transaction et réduire les erreurs de transaction.

  4. Optimisation des paramètres. Paramètres tels que le nombre de cycles de comptabilisation, la période de négociation et le taux de détention peuvent être optimisés pour s’adapter aux différentes conditions du marché.

  5. Augmentation des mécanismes de contrôle des risques. Ajout de moyens de contrôle des risques plus riches, tels que le stop mobile, le contrôle des positions, etc., pour limiter davantage les risques.

  6. Les données accumulées de la rééchantillonnage. Élargissement du nombre d’échantillons de rééchantillonnage et de l’intervalle de temps, stabilité des paramètres de test.

Résumer

La stratégie de suivi de tendance dynamique de renversement génère des signaux de négociation en utilisant la règle de comptage 7 de l’indicateur JD Sequential pour capturer des opportunités de renversement à court terme à haute fréquence. Par rapport à la stratégie traditionnelle de JD, la stratégie a été améliorée en utilisant le jugement des hauts et des bas, en raccourcissant le cycle de comptage et en ajoutant un mécanisme de stop-loss.

Les principaux avantages de cette stratégie sont sa rapidité de réponse et sa capacité à capturer les inversions sur des lignes courtes, mais il existe également des risques tels que la fréquence des transactions, l’arrêt radical des pertes. Les orientations d’optimisation futures comprennent l’ajustement des paramètres, le renforcement des mécanismes de contrôle du vent, la combinaison de cycles de temps multiples, etc. Grâce à une optimisation et à une iteration continues, cette stratégie est susceptible de devenir un outil puissant pour capturer efficacement les signaux de inversion à court terme.

Code source de la stratégie
/*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)