Bollinger Bands Breakout Trading Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-21 11:35:14
Tag:

img

Gambaran umum

Strategi ini dirancang berdasarkan indikator Bollinger Bands. Ini akan panjang ketika harga menembus band atas dan pergi pendek ketika harga menembus band bawah. Ini termasuk strategi trend berikut.

Logika Strategi

  1. Menghitung band tengah, band atas dan band bawah Bollinger Bands
  2. Ketika harga penutupan menembus band atas, pergi panjang
  3. Ketika harga penutupan menembus band bawah, pergi pendek
  4. Aturan keluar: menutup posisi panjang ketika harga melewati band tengah, menutup posisi pendek ketika harga melewati band tengah

Strategi ini menggunakan Bollinger Bands untuk menentukan rentang fluktuasi dan arah tren pasar. Ketika harga menembus band atas atau bawah Bollinger Bands, itu dianggap sebagai sinyal pembalikan tren untuk masuk.

Analisis Keuntungan

  1. Menggunakan indikator Bollinger Bands untuk menentukan tren pasar dan level support/resistance
  2. Probabilitas tinggi ketika pecahnya Bollinger Bands
  3. Aturan masuk dan keluar yang jelas

Analisis Risiko

  1. Risiko sinyal breakout palsu dari Bollinger Bands, yang bisa berupa fluktuasi harga jangka pendek
  2. Stop loss yang lebih besar ketika perubahan harga yang besar

Solusi:

  1. Gabungkan dengan indikator lain untuk mengkonfirmasi tren
  2. Sesuaikan parameter untuk memperluas rentang Bollinger Bands

Arahan Optimasi

  1. Gabungkan dengan indikator tren untuk menghindari perdagangan terbalik yang tidak perlu
  2. Sesuaikan secara dinamis parameter Bollinger Bands untuk mengoptimalkan ukuran parameter

Ringkasan

Strategi ini menggunakan indikator Bollinger Bands untuk menentukan tren harga dan level support/resistance. Ini masuk pada titik breakout Bollinger Bands dan menetapkan stop loss di band tengah. Logika strategi sederhana dan jelas, mudah diterapkan. Ini dapat dioptimalkan dengan menyesuaikan parameter atau menggabungkan dengan indikator lain, bekerja dengan baik di pasar tren.


/*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)

Lebih banyak