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