Strategi Perdagangan Breakout Bollinger Bands

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

img

Ringkasan

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.

Logika Strategi

  1. Mengira band tengah, band atas dan band bawah Bollinger Bands
  2. Apabila harga penutupan memecahkan band atas, pergi panjang
  3. Apabila harga penutupan memecahkan jalur bawah, pergi pendek
  4. Peraturan keluar: tutup kedudukan panjang apabila harga menembusi jalur tengah, tutup kedudukan pendek apabila harga menembusi jalur tengah

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.

Analisis Kelebihan

  1. Menggunakan penunjuk Bollinger Bands untuk menentukan trend pasaran dan tahap sokongan / rintangan
  2. Kemungkinan tinggi apabila pecah Bollinger Bands
  3. Peraturan kemasukan dan keluar yang jelas

Analisis Risiko

  1. Risiko isyarat pecah palsu dari Bollinger Bands, yang boleh menjadi turun naik harga jangka pendek
  2. Stop loss yang lebih besar apabila turun naik harga yang besar

Penyelesaian:

  1. Gabungkan dengan penunjuk lain untuk mengesahkan trend
  2. Sesuaikan parameter untuk meluaskan julat Bollinger Bands

Arahan pengoptimuman

  1. Gabungkan dengan penunjuk trend untuk mengelakkan perdagangan terbalik yang tidak perlu
  2. Sesuaikan parameter Bollinger Bands secara dinamik untuk mengoptimumkan saiz parameter

Ringkasan

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)

Lebih lanjut