Strategi ini dirancang berdasarkan indikator Bollinger Bands untuk menciptakan strategi perdagangan breakout yang dinamis. Strategi ini menggabungkan kondisi filter tubuh lilin dan filter warna untuk mencari peluang masuk breakout di sekitar band bawah Bollinger. Keluar didasarkan pada filter tubuh. Strategi ini secara otomatis mengelola ukuran posisi dan risiko.
Pertama, hitung garis dasar dan band bawah Bollinger Bands berdasarkan harga rendah:
src = low
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
Di mana src adalah harga rendah, panjang adalah periode perhitungan, basis adalah moving average, dev adalah standar deviasi, dan lebih rendah adalah band bawah.
mult biasanya ditetapkan menjadi 2, yang berarti band bawah adalah satu standar deviasi jauh.
Strategi ini mencakup dua kondisi filter:
Filter tubuh lilinGunakan ukuran tubuh nbody dan abody rata-rata untuk menentukan, hanya menghasilkan sinyal perdagangan ketika nbody lebih besar dari setengah dari abody.
Filter Warna
Jangan lama ketika lilin menutup positif (close > open).
Menghasilkan sinyal panjang ketika kondisi di bawah ini terpenuhi:
low < lower // price breaks lower band
close < open or usecol == false // color filter
nbody > abody / 2 or usebod == false // body filter
Bila ukuran tubuh melebihi setengah dari rata-rata lagi, posisi dekat:
close > open and nbody > abody / 2
Strategi menghitung ukuran perdagangan secara otomatis untuk pertumbuhan eksponensial posisi:
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
Tambahkan batasan pada tahun, bulan dan tanggal untuk membatasi perdagangan hanya dalam kisaran tanggal tertentu:
when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
Bollinger lower band menyediakan area dukungan dinamis untuk menangkap retracements setelah tren.
Kombinasi dari tubuh lilin dan filter warna mencegah pecahnya palsu secara efektif.
Ukuran posisi meningkat secara eksponensial hingga 100% mengelola risiko secara otomatis.
Menetapkan rentang tanggal mengurangi risiko yang terkait dengan volatilitas pasar pada periode tertentu.
Ketika tren naik yang kuat, BB tengah dan band atas dapat bergeser ke atas dengan cepat, menyebabkan penarikan yang berkepanjangan.
Gabungkan dengan indikator tren, berhenti strategi ketika dinilai sebagai bull market untuk menghindari penarikan yang berkepanjangan.
Penembusan mungkin gagal dengan mundur dan uji ulang band bawah.
Tambahkan stop loss di bawah level support atau tambahkan logika untuk mendeteksi gagal uji ulang untuk stop loss cepat.
Optimalkan stop loss di bawah support berdasarkan hasil backtest.
Fine tune body filter periode tinggal, COLOR filter dll untuk menemukan yang optimal.
Hentikan strategi ketika dinilai sebagai bull market.
Strategi ini menggabungkan dukungan BB, filter bodi, filter warna dan logika breakout untuk menangkap retracement probabilitas tinggi.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Wizard Strategy v1.0", shorttitle = "Wizard str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period") usebod = input(false, defval = false, title = "Use Body-Filter") usecol = input(false, defval = false, title = "Use Color-Filter") showar = input(false, defval = false, title = "Show Arrows") fromyear = input(1900, defval = 1900, 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") //Bollinger src = low mult = 2 basis = sma(src, length) dev = mult * stdev(src, length) lower = basis - dev plot(lower, color = lime, linewidth = 3, title="Bottom Line") //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 2 or usebod == false //Signals up1 = low < lower and (close < open or usecol == false) and body exit = close > open and nbody > abody / 2 //Arrows needar = up1 and showar plotarrow(needar ? 1 : na) //Trading lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up1 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()