This strategy is designed based on the Bollinger Bands indicator. It goes long when the price breaks through the upper band and goes short when the price breaks through the lower band. It belongs to the trend following strategy.
This strategy uses Bollinger Bands to determine the fluctuation range and trend direction of the market. When the price breaks through the upper or lower bands of Bollinger Bands, it is considered as a trend reversal signal for entry. The area around the middle band is used as the stop loss position. Exit positions when the price breaks through the middle band.
Solutions:
This strategy uses the Bollinger Bands indicator to determine price trend and support/resistance levels. It enters at Bollinger Bands breakout points and sets stop loss at the middle band. The strategy logic is simple and clear, easy to implement. It can be optimized by adjusting parameters or combining with other indicators, works well in trending markets.
/*backtest start: 2024-01-21 00:00:00 end: 2024-02-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("FFFDBTC", overlay=true,initial_capital = 100,commission_type =strategy.commission.percent,commission_value= 0.15,default_qty_value = 100,default_qty_type = strategy.percent_of_equity) // === INPUT BACKTEST RANGE === FromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12) FromDay = input.int(defval=1, title="From Day", minval=1, maxval=31) FromYear = input.int(defval=1972, title="From Year", minval=1972) ToMonth = input.int(defval=1, title="To Month", minval=1, maxval=12) ToDay = input.int(defval=1, title="To Day", minval=1, maxval=31) ToYear = input.int(defval=9999, title="To Year", minval=2010) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // Definindo tamanho da posição position_size = strategy.equity // Definir parâmetros das Bandas de Bollinger length = input.int(51, "Comprimento") mult = input.float(1.1, "Multiplicador") // Calcular as Bandas de Bollinger basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev // Definir condições de entrada e saída entrada_na_venda = low < lower saida_da_venda = high > lower and strategy.position_size < 0 entrada_na_compra = high > upper saida_da_compra = low < upper and strategy.position_size > 0 shortCondition = close[1] < lower[1] and close > lower and close < basis longCondition = close[1] > upper[1] and close < upper and close > basis // Entrar na posição longa se a condição longCondition for verdadeira if ((entrada_na_compra) and window() ) strategy.entry("Buy", strategy.long) //saida da compra if (saida_da_compra) strategy.close("Buy") //entrada na venda if ((entrada_na_venda) and window() ) strategy.entry("Sell", strategy.short) //saida da venda if (saida_da_venda) strategy.close("Sell") if ((longCondition) and window()) strategy.entry("Long", strategy.long) // Entrar na posição curta se a condição shortCondition for verdadeira if ((shortCondition) and window()) strategy.entry("Short", strategy.short) // Definir a saída da posição strategy.exit("Exit_Long", "Long", stop=ta.sma(close, length), when = close >= basis) strategy.exit("Exit_Short", "Short", stop=ta.sma(close, length), when = close <= basis) // Desenhar as Bandas de Bollinger no gráfico plot(basis, "Média", color=#2962FF, linewidth=2) plot(upper, "Upper", color=#BEBEBE, linewidth=2) plot(lower, "Lower", color=#BEBEBE, linewidth=2)