
Ini adalah strategi perdagangan yang menggunakan indikator Bollinger Bands. Strategi ini bertujuan untuk menggunakan indikator Bollinger Bands untuk mengidentifikasi saat harga berfluktuasi tajam dan membuat keputusan membeli atau menjual sesuai dengan itu.
Strategi ini menilai apakah harga saat ini berada dalam zona fluktuasi dengan menghitung garis lintasan atas, tengah, dan bawah Brin Belt, untuk menentukan kapan waktunya untuk melakukan posisi terendah atau terendah. Ketika harga mendekati lintasan atas, dianggap sebagai zona batas multihead, strategi memilih untuk menjual posisi terendah; Ketika harga mendekati lintasan bawah, dianggap sebagai zona batas kosong, strategi memilih untuk membeli posisi terendah.
Selain itu, strategi ini juga memperkenalkan faktor pembalikan tren, yang jika ada sinyal pembalikan, juga akan memicu keputusan membeli atau menjual yang sesuai. Secara khusus, logika strategi adalah sebagai berikut:
Ini adalah logika perdagangan dasar dari strategi ini. Dengan memanfaatkan karakteristik Brin Belt, kombinasi tren dan faktor reversal, strategi ini mencoba untuk menangkap titik reversal dan berdagang ketika volatilitas meningkat.
Strategi ini memiliki beberapa keuntungan dibandingkan dengan strategi rata-rata bergerak biasa:
Secara keseluruhan, strategi ini menggabungkan lebih baik antara Bollinger Bands dan penilaian entitas harga, melakukan perdagangan di titik balik yang masuk akal, memastikan tingkat keuntungan tertentu dan mengendalikan risiko.
Namun, strategi ini juga memiliki beberapa risiko, terutama di:
Dengan demikian, optimasi di masa depan dapat dilakukan dalam beberapa aspek berikut:
Secara keseluruhan, strategi ini adalah model strategi perdagangan Brin Belt yang khas. Strategi ini menghindari kelemahan dari banyak transaksi yang tidak efektif yang mudah dihasilkan hanya dengan menggunakan Brin Belt. Dengan memperkenalkan penilaian pembalikan tren, sinyal penyaringan yang efektif, secara teoritis dapat memperoleh kinerja strategi yang lebih baik. Namun, pengaturan parameter dan penyaringan sinyal masih perlu dioptimalkan dan ditingkatkan lebih lanjut untuk membuat parameter strategi menjadi lebih baik dan mengurangi kemungkinan kesalahan penilaian.
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")
//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Lines
col = showbands ? black : na
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)
//Body
body = abs(close - open)
abody = ema(body, 30)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2
//Trading
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if exit
strategy.close_all()