A Bollinger Bands e a EMA Trend Following Strategy combinam dois indicadores técnicos, Bollinger Bands e a Exponential Moving Average (EMA), para identificar possíveis movimentos de preços de curto prazo no mercado. As Bollinger Bands são usadas para medir a volatilidade de preços, enquanto a EMA é usada para avaliar a direção da tendência. Quando o preço de fechamento cruza acima da EMA e excede a faixa superior, ele indica uma potencial continuação de uma tendência de alta, desencadeando uma posição longa.
O núcleo desta estratégia reside na combinação de Bollinger Bands e EMA para identificar oportunidades de negociação potenciais. As Bandas de Bollinger consistem em três linhas: a faixa média (geralmente uma média móvel simples), a faixa superior (banda média mais um certo número de desvios padrão) e a faixa inferior (banda média menos um certo número de desvios padrão).
A lógica de negociação desta estratégia é a seguinte:
A estratégia Bollinger Bands e EMA Trend Following oferece aos traders uma abordagem sistemática para capturar os movimentos de preços de curto prazo no mercado, combinando um indicador de volatilidade e um indicador de tendência. Os pontos fortes da estratégia estão em sua capacidade de identificar e seguir efetivamente as tendências do mercado, incorporando técnicas de gerenciamento de risco e dimensionamento de posição. No entanto, a estratégia também enfrenta riscos como sensibilidade de parâmetros, ruído do mercado, inversões de tendência e precisa ser melhorada e otimizada por meio de otimização de parâmetros, confirmação de tendência, stop loss dinâmico e take profit, otimização de posicionamento de tamanho e análise de vários prazos.
/*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)