Strategi ini direka berdasarkan penunjuk Bollinger Bands. Ia pergi lama apabila harga memecahkan jalur atas dan pergi pendek apabila harga memecahkan jalur bawah. Ia tergolong dalam strategi trend berikut.
Strategi ini menggunakan Bollinger Bands untuk menentukan julat turun naik dan arah trend pasaran. Apabila harga menembusi jalur atas atau bawah Bollinger Bands, ia dianggap sebagai isyarat pembalikan trend untuk masuk. Kawasan di sekitar jalur tengah digunakan sebagai kedudukan stop loss. Posisi keluar apabila harga menembusi jalur tengah.
Penyelesaian:
Strategi ini menggunakan penunjuk Bollinger Bands untuk menentukan trend harga dan tahap sokongan / rintangan. Ia memasuki titik pecah Bollinger Bands dan menetapkan stop loss di jalur tengah. Logik strategi adalah mudah dan jelas, mudah dilaksanakan. Ia boleh dioptimumkan dengan menyesuaikan parameter atau menggabungkan dengan penunjuk lain, berfungsi dengan baik di pasaran trend.
/*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)