Esta é uma estratégia de breakout de reversão média baseada no canal de Bollinger Bands. Ele vai longo quando o preço quebra abaixo da faixa inferior das Bandas de Bollinger. O stop loss é definido na parte inferior da barra de breakout. O objetivo de lucro é a faixa superior das Bandas de Bollinger.
A estratégia usa um canal de Bollinger Bands de 20 períodos, que consiste de uma banda média, uma banda superior e uma banda inferior. A banda média é uma média móvel simples de 20 períodos. A banda superior é a banda média mais 2 desvios padrão. A banda inferior é a banda média menos 2 desvios padrão.
Quando o preço quebra abaixo da faixa inferior, isso indica que o preço entrou em um estado de sobrevenda. A estratégia irá longo neste ponto. Depois de entrar na posição, o stop loss é definido na parte inferior da barra de entrada, e o objetivo de lucro é a faixa superior. Assim, a estratégia visa capturar o processo de reversão de sobrevenda para a média, a fim de obter lucros.
As vantagens desta estratégia são as seguintes:
Os riscos desta estratégia incluem:
A estratégia pode ser melhorada pelos seguintes aspectos:
A estratégia tem uma lógica clara e é negociável até certo ponto. No entanto, sua eficácia em julgar a sobrecompra / sobrevenda com as Bandas de Bollinger é limitada e não pode determinar perfeitamente a tendência. Além disso, o mecanismo de stop loss e take profit precisa de melhoria.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Ronsword //@version=5 strategy("bb 2ND target", overlay=true) // STEP 1. Create inputs that configure the backtest's date range useDateFilter = input.bool(true, title="Filter Date Range of Backtest", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 1997"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("1 Sept 2023"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") // STEP 2. See if the current bar falls inside the date range inTradeWindow = true // Bollinger Bands inputs length = input.int(20, title="Bollinger Bands Length") mult = input.float(2.0, title="Multiplier") src = input(close, title="Source") basis = ta.sma(src, length) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // EMA Settings ema20 = ta.ema(close, 20) plot(ema20, color=color.blue, title="20 EMA") // Entry condition longEntryCondition = ta.crossover(close, lower) // Define stop loss level as the low of the entry bar var float stopLossPrice = na if longEntryCondition stopLossPrice := low // Top Bollinger Band itself is set as the target topBandTarget = upper // Enter long position when conditions are met if inTradeWindow and longEntryCondition strategy.entry("Long", strategy.long, qty=1) // Set profit targets strategy.exit("ProfitTarget2", from_entry="Long", limit=topBandTarget) // Set stop loss strategy.exit("StopLoss", stop=stopLossPrice) // Plot Bollinger Bands with the same gray color plot(upper, color=color.gray, title="Upper Bollinger Band") plot(lower, color=color.gray, title="Lower Bollinger Band")