Le noyau de cette stratégie est la combinaison du canal de Vegas et de l'indicateur de SuperTrend. Le canal de Vegas utilise une moyenne mobile simple (SMA) et un écart type (STDEV) pour déterminer la plage de fluctuation supérieure et inférieure du prix. La largeur du canal reflète le degré de volatilité du marché.
La stratégie ajuste dynamiquement le multiplicateur de l'indicateur de SuperTrend pour s'adapter aux changements de la largeur du canal de Vegas. Lorsque le canal de Vegas est plus large (c'est-à-dire que la volatilité du marché est plus élevée), le multiplicateur de l'indicateur de SuperTrend augmente en conséquence, le rendant plus sensible aux changements de tendance; inversement, lorsque le canal de Vegas est plus étroit (c'est-à-dire que la volatilité du marché est plus faible), le multiplicateur diminue, ce qui rend l'indicateur plus stable.
Les signaux de négociation sont générés sur la base d'une comparaison du prix de clôture actuel avec la valeur de l'indicateur SuperTrend. Lorsque le prix traverse la ligne de l'indicateur SuperTrend depuis le bas, un signal long est généré; inversement, lorsque le prix traverse la ligne de l'indicateur depuis le haut, un signal court est généré.
Adaptation dynamique à la volatilité du marché: en ajustant dynamiquement les paramètres de l'indicateur SuperTrend via le canal Vegas, la stratégie peut s'adapter à différentes conditions de volatilité du marché, capturer les tendances en temps opportun sur les marchés en tendance et rester stable sur les marchés en oscillation.
Signaux de trading clairs et intuitifs: la stratégie génère des signaux d'achat et de vente clairs basés sur la position relative du prix par rapport à l'indicateur SuperTrend, qui est simple et facile à comprendre, facilitant la prise de décision rapide par les traders.
Options de direction de négociation flexibles: La stratégie offre trois options pour le long, le court et le bi-directionnel, répondant aux besoins et aux vues du marché de différents traders.
Excellente assistance visuelle: La stratégie identifie les tendances haussières et baissières sur le graphique avec des couleurs vertes et rouges, et marque les points d'achat et de vente avec des flèches, ce qui est intuitif et clair, ce qui facilite la saisie du pouls du marché.
Décalage de la reconnaissance des tendances: Comme toutes les stratégies de suivi des tendances, cette stratégie peut présenter un décalage du signal dans les premiers stades d'un renversement de tendance, ce qui entraîne des points d'entrée optimaux manqués ou un risque supplémentaire.
Sensibilité aux paramètres: la performance de la stratégie dépend dans une certaine mesure du choix des paramètres, tels que la période ATR et la longueur du canal de Vegas, et différents paramètres peuvent donner des résultats différents.
Commerce fréquent: la stratégie est relativement sensible aux changements de tendance et peut générer des signaux de trading fréquents sur des marchés oscillants, augmentant les coûts de négociation et le risque de retrait.
Introduction de plus d'indicateurs: envisager l'introduction d'autres indicateurs techniques tels que le RSI et le MACD pour vérifier les signaux de tendance à partir de plusieurs dimensions et améliorer la fiabilité du signal.
Optimiser les règles d'entrée et de sortie: sur la base des signaux d'entrée actuels, plus de conditions de filtrage peuvent être introduites, telles que l'obligation de fermer plusieurs bougies consécutives dans le sens de la tendance, afin de réduire les faux signaux; en même temps, des arrêts de trailing ou des arrêts de volatilité peuvent être définis pour optimiser les sorties.
Ajustement dynamique de la position: sur la base d'indicateurs tels que la force et la volatilité de la tendance du marché, ajuster dynamiquement la taille de la position de chaque transaction, en augmentant la position lorsque la tendance est forte et en réduisant la position lorsque la tendance s'affaiblit, afin de mieux contrôler le risque et d'optimiser les rendements.
La stratégie
/*backtest start: 2023-04-22 00:00:00 end: 2024-04-27 00:00:00 period: 1d basePeriod: 1h 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/ // © PresentTrading // The "Vegas SuperTrend Strategy" uses Vegas Channel and SuperTrend indicators on trading charts, allowing for adjustable settings like ATR length and channel size. // It modifies the SuperTrend's sensitivity to market volatility, generating buy (green) or sell (red) signals upon trend shifts. // Entry and exit points are visually marked, with the strategy automating trades based on these trend changes to adapt to different market conditions. //@version=5 strategy("Vegas SuperTrend Enhanced - strategy [presentTrading]", shorttitle="Vegas SuperTrend Enhanced - strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, commission_value=0.1, commission_type=strategy.commission.percent, slippage=1, currency=currency.USD, default_qty_value=10000, initial_capital=10000) // Input settings allow the user to customize the strategy's parameters. tradeDirectionChoice = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"]) // Option to select the trading direction atrPeriod = input(10, "ATR Period for SuperTrend") // Length of the ATR for volatility measurement vegasWindow = input(100, "Vegas Window Length") // Length of the moving average for the Vegas Channel superTrendMultiplier = input(5, "SuperTrend Multiplier Base") // Base multiplier for the SuperTrend calculation volatilityAdjustment = input.float(5, "Volatility Adjustment Factor") // Factor to adjust the SuperTrend sensitivity to the Vegas Channel width // Calculate the Vegas Channel using a simple moving average and standard deviation. vegasMovingAverage = ta.sma(close, vegasWindow) vegasChannelStdDev = ta.stdev(close, vegasWindow) vegasChannelUpper = vegasMovingAverage + vegasChannelStdDev vegasChannelLower = vegasMovingAverage - vegasChannelStdDev // Adjust the SuperTrend multiplier based on the width of the Vegas Channel. channelVolatilityWidth = vegasChannelUpper - vegasChannelLower adjustedMultiplier = superTrendMultiplier + volatilityAdjustment * (channelVolatilityWidth / vegasMovingAverage) // Calculate the SuperTrend indicator values. averageTrueRange = ta.atr(atrPeriod) superTrendUpper = hlc3 - (adjustedMultiplier * averageTrueRange) superTrendLower = hlc3 + (adjustedMultiplier * averageTrueRange) var float superTrendPrevUpper = na var float superTrendPrevLower = na var int marketTrend = 1 // Update SuperTrend values and determine the current trend direction. superTrendPrevUpper := nz(superTrendPrevUpper[1], superTrendUpper) superTrendPrevLower := nz(superTrendPrevLower[1], superTrendLower) marketTrend := close > superTrendPrevLower ? 1 : close < superTrendPrevUpper ? -1 : nz(marketTrend[1], 1) superTrendUpper := marketTrend == 1 ? math.max(superTrendUpper, superTrendPrevUpper) : superTrendUpper superTrendLower := marketTrend == -1 ? math.min(superTrendLower, superTrendPrevLower) : superTrendLower superTrendPrevUpper := superTrendUpper superTrendPrevLower := superTrendLower // Enhanced Visualization // Plot the SuperTrend and Vegas Channel for visual analysis. plot(marketTrend == 1 ? superTrendUpper : na, "SuperTrend Upper", color=color.green, linewidth=2) plot(marketTrend == -1 ? superTrendLower : na, "SuperTrend Lower", color=color.red, linewidth=2) plot(vegasChannelUpper, "Vegas Upper", color=color.purple, linewidth=1) plot(vegasChannelLower, "Vegas Lower", color=color.purple, linewidth=1) // Apply a color to the price bars based on the current market trend. barcolor(marketTrend == 1 ? color.green : marketTrend == -1 ? color.red : na) // Detect trend direction changes and plot entry/exit signals. trendShiftToBullish = marketTrend == 1 and marketTrend[1] == -1 trendShiftToBearish = marketTrend == -1 and marketTrend[1] == 1 plotshape(series=trendShiftToBullish, title="Enter Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=trendShiftToBearish, title="Enter Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") // Define conditions for entering long or short positions, and execute trades based on these conditions. enterLongCondition = marketTrend == 1 enterShortCondition = marketTrend == -1 // Check trade direction choice before executing trade entries. if enterLongCondition and (tradeDirectionChoice == "Long" or tradeDirectionChoice == "Both") strategy.entry("Long Position", strategy.long) if enterShortCondition and (tradeDirectionChoice == "Short" or tradeDirectionChoice == "Both") strategy.entry("Short Position", strategy.short) // Close all positions when the market trend changes. if marketTrend != marketTrend[1] strategy.close_all()