Breakout Bollinger Bands Strategi Perdagangan Osilasi

Penulis:ChaoZhang, Tanggal: 2024-02-21 14:39:14
Tag:

img

Gambaran umum

Breakout Bollinger Bands Oscillation Trading Strategy adalah strategi perdagangan untuk saat pasar berada dalam keadaan berosilasi. Strategi ini menggunakan indikator Bollinger Bands untuk menilai kondisi berosilasi pasar dan mengirimkan sinyal perdagangan ketika harga menyentuh rel atas atau bawah Bollinger Bands.

Logika Strategi

Strategi ini terutama diimplementasikan berdasarkan indikator Bollinger Bands. Bollinger Bands terdiri dari rel tengah, rel atas dan rel bawah. Ketika harga mendekati rel atas atau bawah, itu mewakili terlalu optimis atau terlalu pesimis di pasar, yang berarti kemungkinan pembalikan yang relatif tinggi.

Secara khusus, strategi ini pertama-tama menggunakan indikator DMI untuk menentukan apakah pasar berada dalam keadaan berosilasi. Ketika perbedaan antara +DMI dan -DMI kurang dari 20, pasar dianggap bergerak ke samping. Dalam kondisi ini, pergi panjang ketika harga pecah di atas rel bawah, dan pergi pendek ketika harga pecah di bawah rel atas. Titik stop loss ditetapkan di dekat rel berlawanan.

Keuntungan

Dibandingkan dengan strategi trend following, strategi ini lebih cocok untuk lingkungan pasar range bound dan tidak akan kehilangan uang mengejar tren. Dibandingkan dengan strategi perdagangan osilasi tradisional, strategi ini dapat lebih akurat menilai situasi overbought dan oversold di pasar dengan menggunakan indikator Bollinger Bands, sehingga meningkatkan probabilitas memasuki pasar.

Risiko

Strategi ini terutama bergantung pada Bollinger Bands untuk menentukan osilasi pasar dan kondisi overbought/oversold. Ketika Bollinger Bands menyimpang atau berkontraksi secara abnormal, hal itu dapat menyebabkan sinyal yang salah. Selain itu, titik stop loss dekat, sehingga satu stop loss bisa relatif besar.

Optimalisasi

Kami dapat mempertimbangkan menggabungkan indikator lain untuk menyaring sinyal masuk, seperti RSI dan osilator lainnya, untuk meningkatkan akurasi masuk. Selain itu, mengoptimalkan strategi stop loss juga sangat penting untuk menghindari satu stop loss besar. Kami juga dapat memilih varietas perdagangan yang lebih cocok untuk strategi ini, seperti koin dengan kapitalisasi pasar rendah.

Kesimpulan

Secara umum, strategi ini cocok untuk pasar osilasi dan dapat digunakan ketika strategi tren gagal. Tapi masih ada ruang untuk meningkatkan efektivitasnya dengan menilai keadaan pasar dengan indikator. Kita dapat lebih meningkatkan strategi ini dengan metode seperti kombinasi multi-indikator, manajemen uang, dll untuk membuatnya lebih stabil dan menguntungkan.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))


Lebih banyak