Stratégie de trading de divergence et de suivi de tendance de l'indicateur Donchian multi-période

DC MA Trend momentum volatility SIGNAL
Date de création: 2025-02-21 10:38:06 Dernière modification: 2025-02-21 10:38:06
Copier: 0 Nombre de clics: 448
2
Suivre
319
Abonnés

Stratégie de trading de divergence et de suivi de tendance de l’indicateur Donchian multi-période Stratégie de trading de divergence et de suivi de tendance de l’indicateur Donchian multi-période

Aperçu

La stratégie est basée sur des indicateurs de la voie de Dongguan sur plusieurs périodes pour construire un système de suivi des tendances. En analysant les ruptures de la voie de Dongguan sur différentes périodes de temps, la combinaison des tendances principales et des tendances locales forme un graphique de bande de tendance visuellement intuitif. La stratégie utilise des changements de couleurs profondes pour montrer la force et la faiblesse de la tendance, les bandes vertes représentant une tendance à la hausse et les bandes rouges une tendance à la baisse.

Principe de stratégie

Le cœur de la stratégie est de déterminer la tendance en fonction de l’indicateur du canal de Donchian. Le canal de Donchian est composé de canaux de prix les plus élevés et les canaux de prix les plus bas, qui déterminent la tendance en comparant les prix actuels avec la relation de position du canal. Il comprend principalement les éléments clés suivants:

  1. Détermination de la tendance principale: utilisation de la voie de Dongguan à 20 cycles, lorsque les prix franchissent la trajectoire ascendante pour former une tendance à la hausse, la rupture de la trajectoire descendante pour former une tendance à la baisse
  2. Détermination de la tendance locale: dans le cadre de la tendance principale, la courbe de la voie de Tangjian à plus courte période est utilisée pour déterminer la direction de la tendance locale
  3. Bande de tendance: une bande de tendance est formée par la combinaison de 10 cycles différents de la chaîne de Dongxian, les couleurs sombres et claires reflètent l’intensité de la tendance
  4. Signaux de négociation: tendance principale à la hausse, ouverture d’une offre en surplus, tendance principale à la baisse, ouverture d’une offre vide, inversion de tendance, plafonnement

Avantages stratégiques

  1. Jugez les tendances objectivement: jugez les tendances sur la base de la rupture des prix, en évitant les biais causés par les jugements subjectifs
  2. Confirmation de plusieurs cycles: accroître la précision des jugements de tendances en superposant les tendances de différents cycles
  3. Les effets visuels sont intuitifs: les changements de couleur de la bande de tendance sont visuels pour afficher l’état du marché.
  4. Les règles de négociation sont claires: les signaux d’entrée et de sortie sont clairs et faciles à mettre en œuvre
  5. Adaptabilité: les paramètres peuvent être ajustés en fonction des caractéristiques de la variété de transaction pour optimiser la performance de la stratégie

Risque stratégique

  1. Risque de renversement de la tendance: un retrait plus important peut se produire à un tournant de la tendance
  2. Les marchés de choc ne s’appliquent pas: les mouvements transversaux peuvent générer de faux signaux.
  3. Sensitivité des paramètres: les paramètres peuvent avoir une incidence significative sur l’efficacité de la stratégie
  4. Effets des points de glissement: les transactions fréquentes peuvent être affectées par les points de glissement
  5. Risque systémique: les événements inattendus sur le marché peuvent entraîner des pertes importantes

Orientation de l’optimisation de la stratégie

  1. Augmentation du filtrage de la force de la tendance: introduire des indicateurs de force de tendance tels que l’ADX, filtrer les signaux de tendance faible
  2. Optimisation des paramètres d’arrêt: réglage dynamique de la position d’arrêt basé sur l’ATR pour améliorer la capacité de contrôle des risques
  3. Ajout de confirmation de transaction: analyse de transaction combinée pour vérifier l’efficacité de la tendance
  4. Introduction d’une adaptation à la volatilité: paramètres d’ajustement dynamique en fonction de la volatilité du marché
  5. Amélioration de la gestion des positions: ajustement dynamique des positions en fonction de la force de la tendance

Résumer

La stratégie utilise une application innovante du canal de Dongxian à cycles multiples pour construire un système de trading de suivi de tendance avec des effets visuels et une logique claire. Son avantage central réside dans la visualisation du processus complexe d’analyse de tendance, ce qui permet aux traders de saisir intuitivement les mouvements du marché.

Code source de la stratégie
/*backtest
start: 2024-06-12 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Donchian Trend Ribbon Strategy", shorttitle="DonchianTrendRibbonStrat", overlay=true, precision=0)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Parameters
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dlen = input.int(defval=20, title="Donchian Channel Period", minval=10)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Helper function to determine color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f_color(mainTrend, localTrend) =>
    // mainTrend = 1 => uptrend, -1 => downtrend
    // localTrend = 1 => local uptrend, -1 => local downtrend
    // Return color based on whether local trend aligns with the main trend
    color c = na
    if mainTrend == 1
        c := localTrend == 1 ? color.new(color.lime, 0) : color.new(color.lime, 60)
    else if mainTrend == -1
        c := localTrend == -1 ? color.new(color.red, 0) : color.new(color.red, 60)
    else
        c := na
    c

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannel - determines main trend (1 or -1)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannel(len) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Function dchannelalt - determines local trend and returns color
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dchannelalt(len, maintrend) =>
    float hh = ta.highest(len)
    float ll = ta.lowest(len)
    var int tr = 0
    tr := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(tr[1])
    f_color(maintrend, tr)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Calculate main trend
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
maintrend = dchannel(dlen)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Plotting the Donchian Trend Ribbon
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
plot( 5,  color=dchannelalt(dlen - 0, maintrend),  style=plot.style_columns, histbase= 0)
plot(10, color=dchannelalt(dlen - 1, maintrend),   style=plot.style_columns, histbase= 5)
plot(15, color=dchannelalt(dlen - 2, maintrend),   style=plot.style_columns, histbase=10)
plot(20, color=dchannelalt(dlen - 3, maintrend),   style=plot.style_columns, histbase=15)
plot(25, color=dchannelalt(dlen - 4, maintrend),   style=plot.style_columns, histbase=20)
plot(30, color=dchannelalt(dlen - 5, maintrend),   style=plot.style_columns, histbase=25)
plot(35, color=dchannelalt(dlen - 6, maintrend),   style=plot.style_columns, histbase=30)
plot(40, color=dchannelalt(dlen - 7, maintrend),   style=plot.style_columns, histbase=35)
plot(45, color=dchannelalt(dlen - 8, maintrend),   style=plot.style_columns, histbase=40)
plot(50, color=dchannelalt(dlen - 9, maintrend),   style=plot.style_columns, histbase=45)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Trading Logic (STRATEGY)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool goLong  = (maintrend == 1)
bool goShort = (maintrend == -1)

// Entry signals
if goLong
    strategy.entry("Long", strategy.long)

if goShort
    strategy.entry("Short", strategy.short)

// Close positions when trend changes
if strategy.position_size > 0 and goShort
    strategy.close("Long")

if strategy.position_size < 0 and goLong
    strategy.close("Short")