Cette stratégie est conçue sur la base de l'indicateur Bollinger Bands. Elle va long lorsque le prix franchit la bande supérieure et court lorsque le prix franchit la bande inférieure. Elle appartient à la stratégie de suivi de tendance.
Cette stratégie utilise les bandes de Bollinger pour déterminer la plage de fluctuation et la direction de la tendance du marché. Lorsque le prix franchit les bandes supérieures ou inférieures des bandes de Bollinger, il est considéré comme un signal d'inversion de tendance pour l'entrée.
Les solutions:
Cette stratégie utilise l'indicateur des bandes de Bollinger pour déterminer la tendance des prix et les niveaux de support/résistance. Elle entre aux points de rupture des bandes de Bollinger et définit un stop loss à la bande du milieu.
/*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)