Stratégie quantitative de gestion des risques de croisement de tendances à vagues multiples

EMA SMA
Date de création: 2024-12-13 10:51:31 Dernière modification: 2024-12-13 10:51:31
Copier: 0 Nombre de clics: 341
1
Suivre
1617
Abonnés

Stratégie quantitative de gestion des risques de croisement de tendances à vagues multiples

Aperçu

La stratégie est un système de trading quantitatif basé sur les indicateurs WaveTrend, combiné à un mécanisme de gestion du risque dynamique. La stratégie permet une gestion complète des transactions en calculant l’intensité de la tendance des fluctuations des prix, en filtrant les signaux dans les zones de survente et de survente, tout en appliquant des moyens de contrôle du risque tels que les arrêts de perte, les arrêts de perte et le suivi des arrêts de perte.

Principe de stratégie

Le cœur de la stratégie est de calculer l’indicateur WaveTrend à l’aide du prix HLC3. On calcule d’abord l’indice moyen mobile ((EMA) du cycle n1 comme ligne de référence, puis on calcule la divergence du prix par rapport à la ligne de référence, et on procède à la normalisation en utilisant 0.015 comme coefficient. On obtient finalement les deux lignes d’onde wt1 et wt2, représentant respectivement la ligne rapide et la ligne lente.

Avantages stratégiques

  1. Le système de signaux a une bonne capacité de suivi de la tendance, ce qui améliore la fiabilité du signal par un double niveau de survente.
  2. Système de gestion des risques complet comprenant des arrêts fixes, des arrêts fixes et des arrêts de suivi dynamiques
  3. Les paramètres sont réglables et peuvent être optimisés en fonction des différentes conditions du marché
  4. Une adaptation plus souple des stratégies, combinée à un mécanisme d’auto-adaptation à la volatilité
  5. Un système de signalisation par couches réduit efficacement l’impact des fausses alertes

Risque stratégique

  1. Les arrêts de perte peuvent être fréquents dans des marchés très volatils
  2. Une mauvaise configuration des paramètres peut entraîner des coûts de transaction excessifs
  3. Le marché horizontal pourrait générer de faux signaux
  4. Il est nécessaire d’établir un ratio de stop loss et de stop loss raisonnable pour éviter un déséquilibre entre le risque et le bénéfice.
  5. Les arrêts de suivi peuvent entraîner des retraits plus importants dans un mouvement de retournement rapide

Orientation de l’optimisation de la stratégie

  1. L’introduction d’indicateurs de volume de transaction pour la confirmation des signaux et améliorer la fiabilité des transactions
  2. Optimiser le suivi des paramètres de stop-loss afin de mieux s’adapter aux différents environnements de marché
  3. Augmentation des filtres d’intensité de tendance et réduction de la fréquence des transactions sur le marché horizontal
  4. Considérer l’ajout d’un mécanisme d’arrêt dynamique qui ajuste automatiquement la position d’arrêt en fonction de la volatilité du marché
  5. Introduction d’un filtre temporel pour éviter de prendre des positions à des heures défavorables

Résumer

La stratégie, combinée à des indicateurs WaveTrend et à un système de gestion des risques, permet d’obtenir une stratégie de trading quantitative plus complète. Son avantage central réside dans son adaptabilité et sa maîtrise des risques, mais elle nécessite toujours des paramètres d’optimisation et des améliorations de la stratégie par les traders en fonction de la situation réelle du marché. Grâce à une optimisation et à une amélioration continues, la stratégie devrait générer des rendements stables dans les transactions réelles.

Code source de la stratégie
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="WaveTrend [LazyBear] with Risk Management", shorttitle="WT_LB_RM", overlay=true)

// Input Parameters
n1 = input.int(10, "Channel Length")
n2 = input.int(21, "Average Length")
obLevel1 = input.int(60, "Over Bought Level 1")
obLevel2 = input.int(53, "Over Bought Level 2")
osLevel1 = input.int(-60, "Over Sold Level 1")
osLevel2 = input.int(-53, "Over Sold Level 2")

// Risk Management Inputs
stopLossPercent = input.float(50.0, "Stop Loss (%)", minval=0.1, maxval=100)
takeProfitPercent = input.float(5.0, "Take Profit (%)", minval=0.1, maxval=100)
trailingStopPercent = input.float(3.0, "Trailing Stop (%)", minval=0.1, maxval=100)
trailingStepPercent = input.float(2.0, "Trailing Stop Step (%)", minval=0.1, maxval=100)

// WaveTrend Calculation
ap = hlc3 
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
 
wt1 = tci
wt2 = ta.sma(wt1, 4)

// Plotting Original Indicators
plot(0, color=color.gray)
plot(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=plot.style_line)
plot(osLevel2, color=color.green, style=plot.style_line)

plot(wt1, color=color.green)
plot(wt2, color=color.red, style=plot.style_line)
plot(wt1-wt2, color=color.blue, style=plot.style_area, transp=80)

// Buy and Sell Signals with Risk Management
longCondition = ta.crossover(wt1, osLevel1) or ta.crossover(wt1, osLevel2)
shortCondition = ta.crossunder(wt1, obLevel1) or ta.crossunder(wt1, obLevel2)

// Strategy Entry with Risk Management
if (longCondition)
    entryPrice = close
    stopLossPrice = entryPrice * (1 - stopLossPercent/100)
    takeProfitPrice = entryPrice * (1 + takeProfitPercent/100)
    
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", "Long", 
                  stop=stopLossPrice, 
                  limit=takeProfitPrice, 
                  trail_price=close * (1 + trailingStopPercent/100), 
                  trail_offset=close * (trailingStepPercent/100))

if (shortCondition)
    entryPrice = close
    stopLossPrice = entryPrice * (1 + stopLossPercent/100)
    takeProfitPrice = entryPrice * (1 - takeProfitPercent/100)
    
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", "Short", 
                  stop=stopLossPrice, 
                  limit=takeProfitPrice, 
                  trail_price=close * (1 - trailingStopPercent/100), 
                  trail_offset=close * (trailingStepPercent/100))