Cette stratégie est un système de trading dynamique basé sur la volatilité, combinant des fonctionnalités de suivi des tendances et de gestion des risques. Le noyau de la stratégie utilise un canal de volatilité pour identifier les changements de tendance du marché tout en incorporant un mécanisme de gestion de position dynamique basé sur ATR pour obtenir un contrôle précis des risques de trading. Cette stratégie est particulièrement adaptée pour opérer dans des environnements de marché très volatils et peut adapter les avoirs à la volatilité du marché.
La logique de base de la stratégie repose sur les éléments clés suivants: 1. Calcul du canal de volatilité: utilise l'indicateur ATR (Average True Range) pour mesurer la volatilité du marché et construit un canal de volatilité dynamique. 2. Mécanisme de détermination de tendance: Détermine la direction de la tendance à travers la position relative du prix au canal de volatilité. Une tendance haussière est établie lorsque le prix traverse au-dessus du canal et une tendance baissière lorsqu'il traverse en dessous. Système de gestion de position: Calcule dynamiquement la taille de la position en fonction du capital initial et du risque prédéfini par transaction, combiné à une distance stop-loss en temps réel, garantissant une exposition au risque constante pour chaque transaction. 4. Mécanisme de contrôle des risques: met en œuvre un stop-loss dynamique basé sur le canal de volatilité, fermant automatiquement les positions lorsque le prix atteint le niveau de stop, et forçant la fermeture des positions avant la clôture du marché pour éviter le risque du jour au lendemain.
Il s'agit d'un système de trading complet combinant la volatilité, le suivi des tendances et la gestion des risques. La stratégie capture les changements de tendance par le biais de canaux de volatilité tout en utilisant des méthodes scientifiques de gestion des capitaux pour contrôler les risques. Bien que les performances puissent être sous-optimales sur des marchés variés, grâce à une optimisation appropriée des paramètres et à des mécanismes de filtrage supplémentaires, elle peut fonctionner de manière stable dans la plupart des environnements de marché. Les principaux avantages de la stratégie résident dans sa capacité d'adaptation et de contrôle des risques, ce qui la rend appropriée comme cadre de base pour l'expansion et l'optimisation de la stratégie à moyen et long terme.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BNF FUT 5 min Volatility Strategy", overlay=true) // Inputs length = input.int(20, "Length", minval=2) src = input.source(close, "Source") factor = input.float(2.0, "Multiplier", minval=0.25, step=0.25) initial_capital = input.float(100000, "Initial Capital ($)") risk_per_trade = input.float(1.0, "Risk per Trade (%)", minval=0.1, maxval=10.0) // Volatility Stop Function volStop(src, atrlen, atrfactor) => if not na(src) var max = src var min = src var uptrend = true var float stop = na atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr) max := math.max(max, src) min := math.min(min, src) stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] // Calculate Volatility Stop [vStop, uptrend] = volStop(src, length, factor) // Plot Volatility Stop plot(vStop, "Volatility Stop", style=plot.style_cross, color=uptrend ? #009688 : #F44336) // Risk Management and Position Sizing atr = ta.atr(length) stop_distance = math.abs(close - vStop) // Distance to stop level position_size = (initial_capital * (risk_per_trade / 100)) / stop_distance // Position size based on risk per trade position_size := math.max(position_size, 1) // Ensure minimum size of 1 // Strategy Logic if not na(vStop) if uptrend and not uptrend[1] // Transition to uptrend strategy.close("Short") strategy.entry("Long", strategy.long, qty=position_size) if not uptrend and uptrend[1] // Transition to downtrend strategy.close("Long") strategy.entry("Short", strategy.short, qty=position_size) // Exit on Stop Hit if strategy.position_size > 0 and low < vStop // Exit long if stop hit strategy.close("Long", comment="Stop Hit") if strategy.position_size < 0 and high > vStop // Exit short if stop hit strategy.close("Short", comment="Stop Hit") if (hour == 15 and minute == 15) strategy.close_all()