Stratégie de trading de rupture de momentum de volatilité combinant des filtres de tendance et de momentum

ATR EMA RSI HH LL RR
Date de création: 2025-02-20 15:13:31 Dernière modification: 2025-02-20 15:13:31
Copier: 1 Nombre de clics: 401
2
Suivre
319
Abonnés

Stratégie de trading de rupture de momentum de volatilité combinant des filtres de tendance et de momentum Stratégie de trading de rupture de momentum de volatilité combinant des filtres de tendance et de momentum

Aperçu

La stratégie est un système de trading quantifié combinant rupture de volatilité, suivi des tendances et confirmation de la dynamique. Elle identifie les opportunités de trading en calculant des niveaux de rupture dynamiques basés sur l’ATR et en combinant le filtrage des tendances EMA et l’indicateur de dynamique RSI. La stratégie adopte des mesures de contrôle des risques rigoureuses, y compris la gestion des risques à pourcentage fixe et la mise en place de stop-loss dynamiques.

Principe de stratégie

La stratégie comprend trois composantes principales:

  1. Calcul de la rupture de la volatilité: utilisation des prix les plus élevés et les plus bas de la période de rétrocession, en combinaison avec le calcul du multiplicateur ATR pour le seuil de rupture dynamique, afin d’éviter le décalage de l’avenir.
  2. Filtre de tendance: utilisez une EMA à court terme pour déterminer la direction de la tendance actuelle, placez des ordres supplémentaires uniquement lorsque le prix est au-dessus de l’EMA et placez des ordres vides en dessous de l’EMA.
  3. Confirmation de la dynamique: utilisation de l’indicateur RSI pour confirmer la dynamique du marché, l’entrée à plusieurs têtes nécessite un RSI supérieur à 50 et une entrée à vide nécessite un RSI inférieur à 50.

Avantages stratégiques

  1. Adaptabilité dynamique: les niveaux de rupture s’ajustent automatiquement en fonction de la volatilité du marché, ce qui permet à la stratégie de s’adapter aux différentes conditions du marché.
  2. Filtrage multiple: Combinaison de la tendance et de l’indicateur de dynamique pour réduire les faux signaux.
  3. Contrôle strict des risques: gestion des positions avec un pourcentage de risque fixe et protection contre les pertes dynamiques.
  4. Une grande personnalisation: les paramètres clés tels que le cycle ATR, le multiplicateur de rupture et le cycle EMA peuvent être ajustés en fonction des besoins spécifiques.

Risque stratégique

  1. Risque de retard: l’utilisation d’indicateurs tels que les moyennes mobiles peut entraîner un retard d’entrée.
  2. Risque de choc des marchés: Faux signaux de rupture peuvent être fréquents dans les marchés de choc horizontal.
  3. Sensitivité des paramètres: la performance de la stratégie est sensible aux paramètres et doit être testée. Solution:
  • Recommandation d’optimisation de la rétroévaluation dans différentes conditions de marché
  • Un module de reconnaissance de l’environnement du marché peut être ajouté
  • Une approche plus conservatrice de la gestion des fonds

Orientation de l’optimisation de la stratégie

  1. Adaptation aux conditions du marché: ajout de jugements sur la fourchette de volatilité et utilisation de paramètres différents dans différents environnements de volatilité.
  2. Optimisation du signal: il est envisageable d’ajouter la confirmation de la quantité de transaction pour améliorer la fiabilité du signal de rupture.
  3. Optimisation des arrêts et pertes: le ratio des gains et pertes peut être ajusté dynamiquement, en fonction de la volatilité du marché.
  4. Filtrage du temps: augmenter le filtrage des fenêtres de temps de transaction pour éviter les transactions à des moments défavorables.

Résumer

Il s’agit d’une stratégie de négociation quantifiée, structurée et logiquement claire. Elle capte les fluctuations significatives des prix tout en maîtrisant les risques en combinant les ruptures de volatilité, le suivi des tendances et la confirmation de la dynamique. La stratégie est hautement personnalisable et peut être optimisée pour s’adapter à différentes variétés de transactions et à différents environnements de marché.

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

//@version=5
// Volatility Momentum Breakout Strategy
//
// Description:
// This strategy is designed to capture significant price moves by combining a volatility breakout method
// with a momentum filter. Volatility is measured by the Average True Range (ATR), which is used to set dynamic
// breakout levels. A short‑term Exponential Moving Average (EMA) is applied as a trend filter, and the Relative
// Strength Index (RSI) is used to help avoid entries when the market is overextended.
// 
// Signal Logic:
// • Long Entry: When the current close is above the highest high of the previous N bars (excluding the current bar)
//   plus a multiple of ATR, provided that the price is above the short‑term EMA and the RSI is above 50.
// • Short Entry: When the current close is below the lowest low of the previous N bars (excluding the current bar)
//   minus a multiple of ATR, provided that the price is below the short‑term EMA and the RSI is below 50.
// 
// Risk Management:
// • Trades are sized to risk 2% of account equity.
// • A stop loss is placed at a fixed ATR multiple away from the entry price.
// • A take profit target is set to achieve a 1:2 risk‑reward ratio.
// 
// Backtesting Parameters:
// • Initial Capital: $10,000
// • Commission: 0.1% per trade
// • Slippage: 1 tick per bar
//
// Disclaimer:
// Past performance is not indicative of future results. This strategy is experimental and provided solely for educational
// purposes. Always backtest and paper trade before any live deployment.
//
// Author: [Your Name]
// Date: [Date]

strategy("Volatility Momentum Breakout Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=5, commission_type=strategy.commission.percent, commission_value=0.1, slippage=1)

// ─── INPUTS ─────────────────────────────────────────────────────────────
atrPeriod       = input.int(14, "ATR Period", minval=1)
atrMultiplier   = input.float(1.5, "ATR Multiplier for Breakout", step=0.1)
lookback        = input.int(20, "Breakout Lookback Period", minval=1)
emaPeriod       = input.int(50, "EMA Period", minval=1)
rsiPeriod       = input.int(14, "RSI Period", minval=1)
rsiLongThresh   = input.float(50, "RSI Long Threshold", step=0.1)
rsiShortThresh  = input.float(50, "RSI Short Threshold", step=0.1)

// Risk management inputs:
riskPercent     = input.float(2.0, "Risk Percent per Trade (%)", step=0.1) * 0.01   // 2% risk per trade
riskReward      = input.float(2.0, "Risk-Reward Ratio", step=0.1)                    // Target profit is 2x risk
atrStopMult     = input.float(1.0, "ATR Multiplier for Stop Loss", step=0.1)         // Stop loss distance in ATRs

// ─── INDICATOR CALCULATIONS ───────────────────────────────────────────────
atrVal   = ta.atr(atrPeriod)
emaVal   = ta.ema(close, emaPeriod)
rsiVal   = ta.rsi(close, rsiPeriod)

// Calculate breakout levels using the highest high and lowest low of the previous N bars,
// excluding the current bar (to avoid look-ahead bias).
highestHigh = ta.highest(high[1], lookback)
lowestLow   = ta.lowest(low[1], lookback)

// Define breakout thresholds.
longBreakoutLevel  = highestHigh + atrMultiplier * atrVal
shortBreakoutLevel = lowestLow  - atrMultiplier * atrVal

// ─── SIGNAL LOGIC ─────────────────────────────────────────────────────────
// Long Entry: Price closes above the long breakout level,
// the close is above the EMA, and RSI > 50.
longCondition = (close > longBreakoutLevel) and (close > emaVal) and (rsiVal > rsiLongThresh)
// Short Entry: Price closes below the short breakout level,
// the close is below the EMA, and RSI < 50.
shortCondition = (close < shortBreakoutLevel) and (close < emaVal) and (rsiVal < rsiShortThresh)

if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// ─── RISK MANAGEMENT ──────────────────────────────────────────────────────
// For each new trade, use the entry price as the basis for stop loss and target calculations.
// We assume the entry price equals the close on the bar where the trade is triggered.
var float longEntryPrice  = na
var float shortEntryPrice = na

// Record entry prices when a trade is opened.
if (strategy.position_size > 0 and na(longEntryPrice))
    longEntryPrice := strategy.position_avg_price
if (strategy.position_size < 0 and na(shortEntryPrice))
    shortEntryPrice := strategy.position_avg_price

// Calculate stop loss and take profit levels based on ATR.
longStop   = longEntryPrice - atrStopMult * atrVal
longTarget = longEntryPrice + (longEntryPrice - longStop) * riskReward
shortStop  = shortEntryPrice + atrStopMult * atrVal
shortTarget= shortEntryPrice - (shortStop - shortEntryPrice) * riskReward

// Issue exit orders if a position is open.
if (strategy.position_size > 0 and not na(longEntryPrice))
    strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget)
if (strategy.position_size < 0 and not na(shortEntryPrice))
    strategy.exit("Short Exit", from_entry="Short", stop=shortStop, limit=shortTarget)

// Reset recorded entry prices when the position is closed.
if (strategy.position_size == 0)
    longEntryPrice  := na
    shortEntryPrice := na

// ─── CHART VISUAL AIDS ─────────────────────────────────────────────────────
// Plot the breakout levels and EMA.
plot(longBreakoutLevel, color=color.new(color.green, 0), title="Long Breakout Level", style=plot.style_linebr)
plot(shortBreakoutLevel, color=color.new(color.red, 0), title="Short Breakout Level", style=plot.style_linebr)
plot(emaVal, color=color.blue, title="EMA")

// Optionally, shade the background: green when price is above the EMA (bullish) and red when below.
bgcolor(close > emaVal ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background")