Strategi Dagangan Osilasi Bollinger Bands Breakout

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

img

Ringkasan

Strategi Perdagangan Oscillasi Bollinger Bands Breakout adalah strategi perdagangan ketika pasaran berada dalam keadaan berayun. Strategi ini menggunakan penunjuk Bollinger Bands untuk menilai keadaan berayun pasaran dan menghantar isyarat perdagangan apabila harga menyentuh rel atas atau bawah Bollinger Bands. Tidak seperti strategi trend tradisional, strategi ini lebih sesuai untuk pasaran sisi yang terikat julat.

Logika Strategi

Strategi ini terutamanya dilaksanakan berdasarkan penunjuk Bollinger Bands. Bollinger Bands terdiri daripada rel tengah, rel atas dan rel bawah. Apabila harga mendekati rel atas atau bawah, ia mewakili terlalu optimis atau terlalu pesimis di pasaran, yang bermaksud kebarangkalian pembalikan yang agak tinggi.

Secara khusus, strategi ini mula-mula menggunakan penunjuk DMI untuk menentukan sama ada pasaran berada dalam keadaan berayun. Apabila perbezaan antara +DMI dan -DMI kurang dari 20, pasaran dianggap berkisar ke sisi. Di bawah keadaan ini, pergi panjang apabila harga pecah di atas rel bawah, dan pergi pendek apabila harga pecah di bawah rel atas. Titik kehilangan berhenti ditetapkan berhampiran rel bertentangan.

Kelebihan

Berbanding dengan strategi trend berikut, strategi ini lebih sesuai untuk persekitaran pasaran yang terikat julat dan tidak akan kehilangan wang mengejar trend. Berbanding dengan strategi perdagangan osilasi tradisional, strategi ini dapat menilai dengan lebih tepat keadaan overbought dan oversold di pasaran dengan menggunakan penunjuk Bollinger Bands, dengan itu meningkatkan kebarangkalian memasuki pasaran.

Risiko

Strategi ini terutamanya bergantung kepada Bollinger Bands untuk menentukan goyangan pasaran dan keadaan overbought / oversold. Apabila Bollinger Bands menyimpang atau kontrak secara tidak normal, ia mungkin membawa kepada isyarat yang salah. Di samping itu, titik stop loss dekat, jadi satu stop loss boleh menjadi agak besar. Adalah disyorkan untuk mengoptimumkan strategi stop loss dengan pengurusan wang.

Pengoptimuman

Kami boleh mempertimbangkan menggabungkan penunjuk lain untuk menapis isyarat kemasukan, seperti RSI dan pengayun lain, untuk meningkatkan ketepatan kemasukan. Di samping itu, mengoptimumkan strategi stop loss juga sangat penting untuk mengelakkan satu stop loss besar. Kami juga boleh memilih jenis perdagangan yang lebih sesuai untuk strategi ini, seperti syiling cap pasaran rendah.

Kesimpulan

Secara amnya, strategi ini sesuai untuk pasaran berayun dan boleh digunakan apabila strategi trend gagal. Tetapi masih ada ruang untuk meningkatkan keberkesanannya dengan menilai keadaan pasaran dengan penunjuk. Kita boleh meningkatkan lagi strategi ini dengan kaedah seperti kombinasi pelbagai penunjuk, pengurusan wang, dll untuk menjadikannya 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 lanjut