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.
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.
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.
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.
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.
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)))