
Esta estratégia é um sistema de negociação de reversão de tendência adaptável baseado no indicador Bandas de Bollinger. Ele captura oportunidades de sobrecompra e sobrevenda no mercado monitorando o cruzamento de preços e as Bandas de Bollinger, e negocia com base no princípio de reversão à média. A estratégia adota mecanismos dinâmicos de gestão de posições e controle de riscos e é aplicável a múltiplos mercados e períodos de tempo.
A lógica central da estratégia baseia-se nos seguintes pontos:
Risco de mercado volátil - Negociações frequentes em um mercado lateralizado podem resultar em perdas. Solução: adicione um filtro de tendência e negocie somente quando a tendência estiver clara.
Risco de falso rompimento - os preços podem reverter rapidamente após um rompimento. Solução: Adicione sinais de confirmação, como volume ou outros indicadores técnicos.
Risco sistemático - o potencial de grandes perdas sob condições extremas de mercado. Solução: Defina um limite máximo de drawdown e pare automaticamente a negociação quando o limite for atingido.
Esta estratégia usa o indicador Bandas de Bollinger para capturar desvios de preço e o combina com o princípio de reversão à média para negociação. O mecanismo de controle de risco perfeito e as regras de negociação claras o tornam muito prático. A estabilidade e a lucratividade da estratégia podem ser melhoradas ainda mais por meio das direções de otimização recomendadas. A estratégia é adequada para traders quantitativos que buscam retornos estáveis.
/*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)