Les ressources ont été chargées... Je charge...

Stratégie dynamique de suivi de la tendance des vagues

Auteur:ChaoZhang est là., Date: 2024-12-20 16:17:27 Je suis désolé
Les étiquettes:Le taux d'intérêtSMALe HLC- Je vous en prie.

img

Résumé

Cette stratégie est un système de trading quantitatif basé sur l'indicateur WaveTrend et la tendance suivante. Elle combine l'indicateur WaveTrend avec des moyennes mobiles pour former un cadre complet de décision de trading.

Principe de stratégie

Le noyau de la stratégie est mis en œuvre à travers les étapes suivantes:

  1. Calculer le prix moyen de HLC (moyenne des prix élevés, bas et de clôture)
  2. Lisser la moyenne HLC en utilisant l'EMA pour obtenir la ligne ESA
  3. Calculer et aplanir l'écart entre la moyenne HLC et la ligne ESA à l'aide de l'EMA
  4. Calculer la valeur de K basée sur l'écart et doubler l'EMA pour obtenir la ligne finale TCI
  5. Utiliser la SMA pour calculer la ligne de tendance à long terme comme filtre de tendance
  6. Générer des signaux de négociation lorsque la ligne TCI franchit les niveaux de surachat/survente et s'aligne sur la direction de la tendance

Les avantages de la stratégie

  1. Haute fiabilité du signal: réduit efficacement les faux signaux en combinant l'indicateur WaveTrend et le filtre de tendance
  2. Contrôle complet des risques: éliminer les seuils de surachat/survente pour un stop-loss rapide
  3. Une grande adaptabilité: les paramètres de la stratégie peuvent être ajustés de manière flexible en fonction des différentes conditions du marché
  4. Logique opérationnelle claire: conditions d'entrée et de sortie explicites, faciles à exécuter
  5. Analyse complète: prise en compte des fluctuations à court terme et des tendances à long terme, améliorant la stabilité des échanges

Risques stratégiques

  1. Risque d'inversion de tendance: éventuel retard sur les marchés volatils
  2. Sensibilité des paramètres: différentes combinaisons de paramètres peuvent donner des résultats radicalement différents
  3. Adaptabilité du marché: peut générer des transactions fréquentes sur différents marchés
  4. Gestion des capitaux: nécessite un contrôle raisonnable des positions pour gérer la volatilité du marché
  5. Dépendance technique: le recours aux indicateurs techniques peut faire abstraction des facteurs fondamentaux

Directions d'optimisation de la stratégie

  1. Ajouter un filtre de volatilité: ajuster les seuils de négociation pendant les périodes de forte volatilité
  2. Incorporer une analyse multi-temporelle: combiner des signaux de différentes périodes pour améliorer la précision
  3. Optimiser l'adaptation des paramètres: ajuster dynamiquement les paramètres des indicateurs en fonction des conditions du marché
  4. Améliorer la gestion des profits/pertes: ajouter des mécanismes dynamiques de prise de profit et de stop-loss
  5. Ajouter la confirmation du volume: intégrer l'analyse du volume pour améliorer la fiabilité du signal

Résumé

La stratégie construit un système de trading robuste en combinant intelligemment l'indicateur WaveTrend avec des filtres de tendance. Tout en maintenant la simplicité opérationnelle, elle réalise une analyse complète du marché. Bien que certains risques existent, la stratégie a une bonne valeur pratique et un potentiel de développement grâce à une bonne gestion des risques et une optimisation continue.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")

Relationnée

Plus de