Les bandes de Bollinger et la stratégie de suivi des tendances de l'EMA combinent deux indicateurs techniques, les bandes de Bollinger et la moyenne mobile exponentielle (EMA), pour identifier les mouvements de prix à court terme potentiels sur le marché. Les bandes de Bollinger sont utilisées pour mesurer la volatilité des prix, tandis que l'EMA est utilisée pour évaluer la direction de la tendance. Lorsque le prix de clôture dépasse l'EMA et dépasse la bande supérieure, cela indique une poursuite potentielle d'une tendance haussière, déclenchant une position longue.
Le noyau de cette stratégie réside dans la combinaison des bandes de Bollinger et de l'EMA pour identifier les opportunités commerciales potentielles. Les bandes de Bollinger se composent de trois lignes: la bande du milieu (généralement une moyenne mobile simple), la bande supérieure (bande du milieu plus un certain nombre d'écart types) et la bande inférieure (bande du milieu moins un certain nombre d'écart types). Les écarts de prix au-dessus de la bande supérieure ou en dessous de la bande inférieure indiquent généralement une forte volatilité du marché, tandis que les prix se déplaçant près de la bande du milieu suggèrent une stabilité relative du marché.
La logique de négociation de cette stratégie est la suivante:
La stratégie Bollinger Bands et EMA Trend Following offre aux traders une approche systématique pour capturer les mouvements de prix à court terme sur le marché en combinant un indicateur de volatilité et un indicateur de suivi de tendance. Les atouts de la stratégie résident dans sa capacité à identifier et suivre efficacement les tendances du marché tout en incorporant des techniques de gestion des risques et de dimensionnement des positions. Cependant, la stratégie est également confrontée à des risques tels que la sensibilité des paramètres, le bruit du marché, les renversements de tendance, et doit être améliorée et optimisée grâce à l'optimisation des paramètres, la confirmation de tendance, l'optimisation dynamique du stop-loss et du profit, l'optimisation du dimensionnement du positionnement et l'analyse de plusieurs délais.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and EMA Strategy", overlay=true) // Bollinger Bands Inputs bb_length = input.int(20, minval=1, title="Bollinger Bands Length") bb_mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands StdDev") bb_src = input(close, title="Bollinger Bands Source") bb_offset = input.int(0, title="Bollinger Bands Offset", minval=-500, maxval=500) // EMA Inputs ema_period = input.int(9, minval=1, title="EMA Period") ema_src = input(close, title="EMA Source") ema_offset = input.int(0, title="EMA Offset", minval=-500, maxval=500) // Calculate Bollinger Bands bb_basis = ta.sma(bb_src, bb_length) bb_dev = bb_mult * ta.stdev(bb_src, bb_length) bb_upper = bb_basis + bb_dev bb_lower = bb_basis - bb_dev // Plot Bollinger Bands plot(bb_basis, "BB Basis", color=color.blue, offset=bb_offset) p1 = plot(bb_upper, "BB Upper", color=color.red, offset=bb_offset) p2 = plot(bb_lower, "BB Lower", color=color.green, offset=bb_offset) fill(p1, p2, title="BB Background", color=color.rgb(33, 150, 243, 95)) // Calculate EMA ema_value = ta.ema(ema_src, ema_period) // Plot EMA plot(ema_value, title="EMA", color=color.orange, offset=ema_offset) // Strategy Conditions long_condition = ta.crossover(close, ema_value) and close > bb_upper short_condition = ta.crossunder(close, ema_value) and close < bb_lower // Define Stop Loss and Take Profit Levels stop_loss_pct = input.float(0.5, title="Stop Loss (%)") take_profit_pct = input.float(1.0, title="Take Profit (%)") stop_loss_level_long = close * (1 - stop_loss_pct / 100) take_profit_level_long = close * (1 + take_profit_pct / 100) stop_loss_level_short = close * (1 + stop_loss_pct / 100) take_profit_level_short = close * (1 - take_profit_pct / 100) // Calculate Position Size Based on Risk Per Trade risk_per_trade = input.float(1.0, title="Risk Per Trade (%)") capital_at_risk = strategy.equity * risk_per_trade / 100 risk_per_unit_long = math.abs(close - stop_loss_level_long) risk_per_unit_short = math.abs(close - stop_loss_level_short) position_size_long = capital_at_risk / risk_per_unit_long position_size_short = capital_at_risk / risk_per_unit_short // Enter Long and Short Trades if long_condition strategy.entry("Long", strategy.long, qty=position_size_long) strategy.exit("Take Profit", "Long", limit=take_profit_level_long) strategy.exit("Stop Loss", "Long", stop=stop_loss_level_long) if short_condition strategy.entry("Short", strategy.short, qty=position_size_short) strategy.exit("Take Profit", "Short", limit=take_profit_level_short) strategy.exit("Stop Loss", "Short", stop=stop_loss_level_short)