Stratégie de suivi des tendances multi-indicateurs Momentum : canal Donchian + super tendance + système de création de position de filtre de volume

DC ST MA VOL BO
Date de création: 2025-02-21 11:47:17 Dernière modification: 2025-02-21 11:47:17
Copier: 0 Nombre de clics: 564
2
Suivre
319
Abonnés

Stratégie de suivi des tendances multi-indicateurs Momentum : canal Donchian + super tendance + système de création de position de filtre de volume Stratégie de suivi des tendances multi-indicateurs Momentum : canal Donchian + super tendance + système de création de position de filtre de volume

Aperçu

La stratégie est un système de trading de suivi de tendance basé sur la rupture du canal Donchian, combinant l’indicateur SuperTrend et le filtre de volume de transaction pour renforcer la fiabilité du signal de transaction. La stratégie identifie principalement les opportunités de négociation à plusieurs niveaux potentiels en capturant les hauts historiques de rupture des prix, tout en utilisant la confirmation de volume de transaction et les indicateurs de suivi de tendance pour filtrer les faux signaux de rupture.

Principe de stratégie

La logique fondamentale de la stratégie repose sur les éléments clés suivants :

  1. Le canal de Dongxian: Calcule le prix le plus élevé et le prix le plus bas dans un cycle défini par l’utilisateur, formant un haut, un bas et un milieu. Lorsque le prix franchit le haut, déclenche un signal d’entrée à plusieurs têtes.
  2. Filtre de transaction: améliore la fiabilité de la rupture en comparant le volume de transaction actuel avec la moyenne mobile à 20 cycles, en veillant à ne participer que lorsque le volume de transaction augmente.
  3. L’indicateur de super-tendance: comme outil de confirmation de tendance, il affiche le vert pour les tendances à plusieurs têtes et le rouge pour les tendances à tête nue.
  4. Un mécanisme d’arrêt flexible: quatre options d’arrêt différentes sont proposées, y compris l’arrêt de basse voie, l’arrêt de milieu de voie, l’arrêt de super-tendance et l’arrêt de suivi en pourcentage.

Avantages stratégiques

  1. Confirmation de signaux multiples: la combinaison de la confirmation de rupture de prix, de la confirmation de volume de transaction et des indicateurs de tendance réduit considérablement le risque de fausse rupture.
  2. Adaptabilité: Adaptation aux différents environnements de marché et cycles de négociation par ajustement des paramètres.
  3. Gestion des risques: offre une large gamme d’options de stop-loss, permettant de choisir la méthode de stop-loss la plus appropriée en fonction des caractéristiques du marché
  4. L’interface stratégique affiche les indicateurs de manière intuitive pour aider les traders à comprendre l’état du marché.
  5. Flexibilité des retours: permet de personnaliser les intervalles de temps de retours pour faciliter l’optimisation des stratégies.

Risque stratégique

  1. Risque de choc du marché: des faux signaux de rupture fréquents peuvent être générés dans des zones de choc.
  2. Risque de glissement: dans les marchés moins liquides, un signal de rupture peut entraîner un écart du prix d’entrée en raison d’un glissement.
  3. Risque de sur-filtrage: le filtrage du volume de transactions peut vous faire manquer des opportunités de trading efficaces.
  4. Sensibilité des paramètres : L’effet de la stratégie est sensible aux réglages des paramètres et nécessite une optimisation minutieuse.

Orientation de l’optimisation de la stratégie

  1. Ajouter un filtre de force de tendance: des indicateurs de force de tendance tels que l’ADX peuvent être ajoutés, ne jouant que lorsque la tendance est forte.
  2. Optimisation des indices de transaction: il est possible d’envisager d’utiliser des indices de transaction de rupture ou des indices de transaction de rupture plutôt que des moyennes mobiles simples.
  3. Ajout de filtres temporels: ajout de paramètres de fenêtre de temps de négociation pour éviter les périodes de plus grande volatilité du marché.
  4. Optimisation des paramètres dynamiques: Ajuste automatiquement les paramètres des cycles de passage et des super-tendances en fonction des fluctuations du marché.
  5. L’introduction de l’apprentissage automatique: optimiser la sélection des paramètres et le filtrage des signaux à l’aide d’algorithmes d’apprentissage automatique.

Résumer

La stratégie utilise plusieurs indicateurs techniques pour construire un système de suivi de tendance relativement complet. L’avantage de la stratégie réside dans la fiabilité du signal et la flexibilité de la gestion des risques, mais elle nécessite toujours l’optimisation des paramètres par les traders en fonction des caractéristiques spécifiques du marché. Grâce à l’amélioration et à l’optimisation continues, la stratégie est susceptible d’obtenir un effet de négociation stable sur un marché tendance.

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

// Breakout trading system based on Donchain channel strategy that works best on a weekly chart and daily charts. Weekly is preferred. 

//@version=5

strategy('Donchian BO with Volume Filter and Supertrend', shorttitle='DBO+Vol+ST', default_qty_type=strategy.percent_of_equity, default_qty_value=2, overlay=true)

// Input options to configure backtest date range
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31)
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12)
startYear = input.int(title='Start Year', defval=2016, minval=1800, maxval=2100)
avgVol = input.int(title="Avg Volume length", defval=20)
srcInput = input.source(close, "Source")

// Volume filter toggle
useVolumeFilter = input.bool(true, title='Enable Volume Filter')

endDate = input.int(title='End Date', defval=1, minval=1, maxval=31)
endMonth = input.int(title='End Month', defval=7, minval=1, maxval=12)
endYear = input.int(title='End Year', defval=2030, minval=1800, maxval=2100)

multiplier = input.int(title='SuperTrend Mult', defval=2, minval=1, maxval=12)
stlen = input.int(title='SuperTrend Length', defval=10, minval=1, maxval=12)

length = input.int(21, minval=1)
exit = input.int(3, minval=1, maxval=4, title='Exit Option')  // Use Option 1 to exit using lower band; Use Option 2 to exit using basis line

lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)

// Plotting the Donchian channel
l = plot(lower, color=color.new(color.blue, 0))
u = plot(upper, color=color.new(color.blue, 0))
plot(basis, color=color.new(color.orange, 0))
fill(u, l, color=color.new(color.blue, 90))

// Check if the current bar is in the date range
inDateRange = time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0) and time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)

// Long trailing stop-loss percentage
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
longStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

// Volume filter: 20-period moving average
volumeMA = ta.sma(volume, avgVol)

// Long entry condition: Donchian breakout + volume filter
longCondition = ta.crossover(srcInput, upper[1]) and (not useVolumeFilter or volume > volumeMA)
longsma = ta.sma(close, 200)

if inDateRange and longCondition
    strategy.entry('Long', strategy.long)

// Exit conditions
if inDateRange and exit == 1
    if ta.crossunder(close, lower[1])
        strategy.close('Long')

if inDateRange and exit == 2
    if ta.crossunder(close, basis[1])
        strategy.close('Long')

[superTrend, dir] = ta.supertrend(multiplier, stlen)
if inDateRange and exit == 3
    if ta.crossunder(close, superTrend)
        strategy.close('Long')

if inDateRange and exit == 4
    if strategy.position_size > 0
        strategy.exit(id='XL TRL STP', stop=longStopPrice)

// Short conditions (commented out for now)
shortCondition = ta.crossunder(close, lower[1])

// Exit all positions when date range ends
if not inDateRange
    strategy.close_all()

// --- Add Supertrend Indicator ---
stColor = dir == 1 ? color.red : color.green
plot(superTrend, color=stColor, title="SuperTrend", linewidth=2)