Cette stratégie est un système de négociation adaptatif à réversion moyenne basé sur l'indicateur Bollinger Bands. Elle capte les opportunités de surachat et de survente en surveillant les croisements de prix avec les Bollinger Bands, en négociant sur le principe de réversion moyenne.
La logique de base repose sur les points suivants: 1. Utilise la moyenne mobile à 20 périodes comme bande moyenne, avec 2 écarts types pour les bandes supérieure et inférieure. 2. ouvre des positions longues lorsque le prix dépasse la bande inférieure (signal de survente). Ouvre des positions courtes lorsque le prix dépasse la bande supérieure (signal de surachat). 4. Prend profit lorsque le prix revient à la bande du milieu. 5. Définit un stop-loss de 1% et un profit de 2%, ce qui permet d'atteindre un ratio risque-rendement de 2: 1. 6. Utilise une taille de position en pourcentage, investissant 1% du capital du compte par transaction.
Risque de marché de consolidation - Peut entraîner des pertes dues à des transactions fréquentes sur différents marchés. Solution: Ajouter des filtres de tendance, ne négocier que lorsque la tendance est claire.
Risque de fausse rupture - le prix peut rapidement s'inverser après la rupture. Solution: ajouter des signaux de confirmation tels que le volume ou d'autres indicateurs techniques.
Risque systémique - Peut subir des pertes plus importantes dans des conditions de marché extrêmes. Solution: mettre en place des limites maximales de tirage, arrêter automatiquement la négociation lorsque le seuil est atteint.
Cette stratégie capture l'écart de prix en utilisant les bandes de Bollinger et les transactions sur le principe de la réversion moyenne. Sa gestion complète des risques et ses règles de trading claires offrent une bonne praticité. Grâce aux optimisations suggérées, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Bollinger Bands Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200) // Inputs for Bollinger Bands bbLength = input.int(20, title="Bollinger Bands Length") bbStdDev = input.float(2.0, title="Bollinger Bands StdDev") // Inputs for Risk Management stopLossPerc = input.float(1.0, title="Stop Loss (%)", minval=0.1, step=0.1) takeProfitPerc = input.float(2.0, title="Take Profit (%)", minval=0.1, step=0.1) // Calculate Bollinger Bands basis = ta.sma(close, bbLength) bbStdev = ta.stdev(close, bbLength) upper = basis + bbStdDev * bbStdev lower = basis - bbStdDev * bbStdev // Plot Bollinger Bands plot(basis, color=color.blue, title="Middle Band") plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") // Entry Conditions longCondition = ta.crossover(close, lower) shortCondition = ta.crossunder(close, upper) // Exit Conditions exitLongCondition = ta.crossunder(close, basis) exitShortCondition = ta.crossover(close, basis) // Stop Loss and Take Profit Levels longStopLoss = close * (1 - stopLossPerc / 100) longTakeProfit = close * (1 + takeProfitPerc / 100) shortStopLoss = close * (1 + stopLossPerc / 100) shortTakeProfit = close * (1 - takeProfitPerc / 100) // Execute Long Trades if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit) // Close Positions on Exit Conditions if (exitLongCondition and strategy.position_size > 0) strategy.close("Long") if (exitShortCondition and strategy.position_size < 0) strategy.close("Short") // 🔊 SOUND ALERTS IN BROWSER 🔊 if (longCondition) alert("🔔 Long Entry Signal!", alert.freq_once_per_bar_close) if (shortCondition) alert("🔔 Short Entry Signal!", alert.freq_once_per_bar_close) if (exitLongCondition) alert("🔔 Closing Long Trade!", alert.freq_once_per_bar_close) if (exitShortCondition) alert("🔔 Closing Short Trade!", alert.freq_once_per_bar_close)