Stratégie de trading de conversion de tendance de choc de valeur nette de volume à moyenne mobile multiple

EMA WMA SMA HMA ROC NVO MA TP SL
Date de création: 2025-02-24 10:05:03 Dernière modification: 2025-02-27 16:46:30
Copier: 2 Nombre de clics: 352
2
Suivre
319
Abonnés

Stratégie de trading de conversion de tendance de choc de valeur nette de volume à moyenne mobile multiple Stratégie de trading de conversion de tendance de choc de valeur nette de volume à moyenne mobile multiple

Aperçu

La stratégie est un système de suivi des tendances basé sur le volume des transactions et les variations de prix, qui permet de prédire l’orientation du marché en calculant l’indicateur de volatilité du volume des transactions netes (NVO). La stratégie combine plusieurs types de moyennes mobiles (EMA, WMA, SMA, HMA) pour juger de la tendance du marché en comparant la relation de position de l’indicateur de volatilité avec sa ligne de superposition EMA, et pour effectuer des transactions au moment opportun.

Principe de stratégie

Le cœur de la stratégie est de juger de l’humeur du marché en calculant les fluctuations quotidiennes du volume net de transactions. Les étapes de calcul sont les suivantes:

  1. Calculer le multiplicateur de la fourchette de prix: un multiplicateur entre 0 et 1 basé sur le prix le plus élevé, le prix le plus bas et le prix de clôture du jour
  2. Calcul du volume de transactions qui a effectivement augmenté ou diminué: pondération du volume de transactions en fonction de la direction de la variation des prix et multiplication par
  3. Calculer le volume de transactions net: le volume de transactions effectivement augmenté moins le volume de transactions effectivement diminué
  4. Moyenne mobile sélectionnée par l’application: traitement en douceur des données de transaction nette
  5. Calculer la ligne de superposition EMA: une ligne de référence pour juger de la tendance
  6. Calculer le taux de variation (ROC): utilisé pour déterminer la variation de la force de la tendance

La génération du signal de transaction est basée sur les règles suivantes:

  • Les conditions sont multiples: les indicateurs de secousse sont surmontés de lignes EMA
  • Conditions de mise à l’air: traverser la ligne de superposition EMA sous l’indicateur de secousse
  • Stop loss: Stop loss basé sur le pourcentage
  • Stop-loss: Stop-loss basé sur le pourcentage

Avantages stratégiques

  1. Analyse multidimensionnelle: information sur le marché combinant les trois dimensions du prix, du volume et du taux de variation des tendances
  2. Haute flexibilité: support de plusieurs types de moyennes mobiles, qui peuvent être ajustées en fonction de différentes caractéristiques du marché
  3. Gestion des risques: un mécanisme d’arrêt des pertes pour contrôler efficacement les risques
  4. Des visualisations puissantes: les variations d’intensité de la tendance sont affichées sur des diagrammes rectangulaires pour faciliter la compréhension de l’état du marché
  5. Adaptabilité: grâce à une conception paramétrable, il est possible de s’adapter à différents environnements de marché et variétés de transactions

Risque stratégique

  1. Risque de renversement de tendance: Faux signaux fréquents dans un marché en crise
  2. Risque de retard: les moyennes mobiles sont elles-mêmes retardées, ce qui peut entraîner des temps d’entrée et de sortie inadéquats.
  3. Sensibilité des paramètres : différentes combinaisons de paramètres peuvent entraîner de grandes différences dans les performances de la stratégie
  4. Dépendance aux environnements de marché: risque de sous-performance dans certains environnements
  5. Limitations techniques: se baser uniquement sur des indicateurs techniques et ne pas tenir compte des facteurs fondamentaux

Suggestions de contrôle des risques :

  • Optimisation des paramètres recommandée dans différents environnements de marché
  • La reconnaissance des signaux peut être combinée avec d’autres indicateurs techniques
  • Adapter les paramètres de stop loss et stop loss de manière appropriée pour s’adapter aux différentes volatilités du marché

Orientation de l’optimisation de la stratégie

  1. Optimisation du mécanisme de confirmation des signaux:

    • Accroissement des conditions de confirmation de la livraison
    • Ajouter un filtre de force de tendance
    • Introduction d’un mécanisme adaptatif à la volatilité
  2. Optimisation de la gestion des risques :

    • Mise en place d’un mécanisme de stop loss dynamique
    • Ajout d’un module de gestion de fonds
    • Mise en place d’un mécanisme de construction et de réduction des stocks par lots
  3. Optimisation des paramètres:

    • Développement d’un mécanisme d’ajustement des paramètres d’adaptation
    • Réalisation d’une commutation de paramètres basée sur l’environnement du marché
    • Ajout d’un modèle d’apprentissage automatique pour une optimisation des paramètres

Résumer

La stratégie est principalement caractérisée par la combinaison de plusieurs indicateurs techniques et offre des options de configuration de paramètres flexibles. Bien qu’il existe un certain risque, la stratégie est susceptible de générer des rendements stables dans les transactions réelles grâce à un contrôle raisonnable du risque et à une optimisation continue. Il est recommandé aux traders de faire un retour d’expérience suffisant avant de l’utiliser sur le terrain et d’ajuster les paramètres de manière appropriée en fonction des conditions spécifiques du marché.

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

//@version=5
strategy("EMA-Based Net Volume Oscillator with Trend Change", shorttitle="NVO Trend Change", overlay=false, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input parameters
maType = input.string("WMA", "Moving Average Type", options=["WMA", "EMA", "SMA", "HMA"])
maLength = input.int(21, "MA Length", minval=1)
emaOverlayLength = input.int(9, "EMA Overlay Length", minval=1)
oscillatorMultiplier = input.float(1.0, "Oscillator Multiplier", minval=0.1, step=0.1)
showHistogram = input.bool(true, "Show Histogram")

stopLossPerc = input.float(1.0, "Stop Loss (%)", tooltip="Set 999 to disable")
takeProfitPerc = input.float(2.0, "Take Profit (%)", tooltip="Set 999 to disable")

// Calculate Net Volume Oscillator
priceRange = high - low
multiplier = priceRange > 0 ? (close - low) / priceRange : 0.5
var float effectiveUpVol = 0.0
var float effectiveDownVol = 0.0

if close > close[1]
    effectiveUpVol := volume * multiplier
    effectiveDownVol := volume * (1 - multiplier)
else if close < close[1]
    effectiveUpVol := volume * multiplier
    effectiveDownVol := volume * (1 - multiplier)
else
    effectiveUpVol := 0.0
    effectiveDownVol := 0.0

netVolume = effectiveUpVol - effectiveDownVol
dailyNetOscillator = volume > 0 ? (netVolume / volume) * 100 : 0

// Apply selected Moving Average
var float oscillator = na
if maType == "WMA"
    oscillator := ta.wma(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "EMA"
    oscillator := ta.ema(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "SMA"
    oscillator := ta.sma(dailyNetOscillator, maLength) * oscillatorMultiplier
else if maType == "HMA"
    oscillator := ta.hma(dailyNetOscillator, maLength) * oscillatorMultiplier

// EMA Overlay
emaOverlay = ta.ema(oscillator, emaOverlayLength)

// Rate of Change (ROC) for Oscillator
roc = ta.roc(oscillator, 1)  // 1-period rate of change

// Trading logic
longCondition = oscillator > emaOverlay
shortCondition = oscillator < emaOverlay

// Exit conditions
exitLong = oscillator < emaOverlay and strategy.position_size > 0
exitShort = oscillator > emaOverlay and strategy.position_size < 0

// Execute trades
if longCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)
if exitLong
    strategy.close("Long")

if shortCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)
if exitShort
    strategy.close("Short")

// Stop Loss and Take Profit
stopLossLong = stopLossPerc != 999 ? strategy.position_avg_price * (1 - stopLossPerc/100) : na
takeProfitLong = takeProfitPerc != 999 ? strategy.position_avg_price * (1 + takeProfitPerc/100) : na

stopLossShort = stopLossPerc != 999 ? strategy.position_avg_price * (1 + stopLossPerc/100) : na
takeProfitShort = takeProfitPerc != 999 ? strategy.position_avg_price * (1 - takeProfitPerc/100) : na

if (not na(stopLossLong) and not na(takeProfitLong) and strategy.position_size > 0)
    strategy.exit("Long SL/TP", "Long", stop=stopLossLong, limit=takeProfitLong)

if (not na(stopLossShort) and not na(takeProfitShort) and strategy.position_size < 0)
    strategy.exit("Short SL/TP", "Short", stop=stopLossShort, limit=takeProfitShort)

// Plotting
plot(oscillator, "Net Volume Oscillator", color.blue)
plot(emaOverlay, "EMA Overlay", color.orange)
hline(0, "Zero Line", color.gray)

// Histogram with Trend Change Visualization
var color histogramColor = na
if oscillator > 0
    histogramColor := roc >= 0 ? color.new(color.green, 70) : color.new(color.lime, 70)  // Green for bullish, light green for weakening
else if oscillator < 0
    histogramColor := roc >= 0 ? color.new(color.red, 70) : color.new(color.maroon, 70)  // Red for bearish, light red for weakening

plot(showHistogram ? oscillator : na, style=plot.style_histogram, color=histogramColor, title="Histogram")