Noro's Bollinger Tracking Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-28 16:57:28
Tag:

img

Ringkasan

Ini adalah strategi penjejakan momentum berdasarkan Bollinger Bands. Ia menggabungkan Bollinger Bands untuk menilai trend pasaran dan titik pembalikan, dan menetapkan kedudukan panjang dan pendek untuk mengesan turun naik pasaran.

Prinsip-prinsip

Indikator utama strategi ini adalah Bollinger Bands, yang terdiri daripada band tengah, band atas dan band bawah. Band tengah adalah purata bergerak selama n hari, dan band atas dan bawah adalah offset dari band tengah ditambah / tolak penyimpangan standard. Apabila harga mendekati band atas / bawah, ia dianggap isyarat overbought / oversold. Strategi ini menggabungkan penyimpangan trend sebagai asas untuk membuka kedudukan, iaitu membuka kedudukan apabila harga menembusi band tengah ke arah yang bertentangan. Untuk mengelakkan kerugian yang disebabkan oleh pecah palsu, strategi memerlukan lebar pecah lebih besar daripada purata. Syarat penutupan adalah bahawa harga berbalik selepas menembusi band tengah.

Strategi ini juga merangkumi kedua-dua entri mengikuti trend dan entri pembalikan purata, yang sepadan dengan peluang perdagangan yang berbeza. entri mengikuti trend memerlukan jalur tengah untuk menjadi rujukan sokongan / rintangan dan membentuk penyimpangan penyimpangan. entri pembalikan purata berbalik secara langsung berhampiran jalur Bollinger atas / bawah. strategi ini menggabungkan kedua-dua jenis isyarat ini dan boleh mengambil operasi penjejakan trend dan pembalikan.

Analisis Kelebihan

Strategi ini menggabungkan ciri-ciri overbought / oversold Bollinger Bands dengan penghakiman titik pembalikan. Ini membolehkan ia digunakan untuk kedua-dua pasaran trend dan julat, menangkap pelbagai jenis peluang perdagangan. Tetapan keluar stop loss menghalang kerugian daripada berkembang. Juga, keupayaan untuk berdagang panjang dan pendek meningkatkan penerapan strategi.

Berbanding dengan strategi Bollinger yang mudah, logik trend tambahan menjadikan entri strategi ini lebih stabil, dan juga menangkap peluang pembalikan. Ini meningkatkan nisbah isyarat ke bunyi.

Analisis Risiko

Strategi ini terutamanya bergantung pada ciri overbought / oversold Bollinger Bands. Oleh itu, apabila terdapat turun naik harga yang melampau, lebar Bollinger Band terus berkembang, yang dengan mudah boleh membawa kepada beberapa perdagangan yang rugi. Ini adalah titik risiko yang berpotensi. Di samping itu, masih ada beberapa ketidakpastian dan kesilapan dalam penghakiman pembalikan, menyebabkan kemasukan dan berhenti yang gagal.

Menentang kegagalan Bollinger Bands, kita boleh memendekkan parameter n untuk menjadikan band lebih sensitif, atau mengurangkan lebar band untuk mengurangkan kemungkinan kerugian.

Arahan pengoptimuman

Arah utama untuk mengoptimumkan strategi ini termasuk:

  1. Parameter Bollinger Bands boleh diselaraskan mengikut pasaran yang berbeza untuk mencari kombinasi yang optimum.
  2. Besarnya penyimpangan dan pengiraan nilai purata boleh diuji dengan pilihan lain.
  3. Tambah lebih banyak penapis untuk menilai isyarat masuk dan mengurangkan positif palsu.
  4. Uji kaedah stop loss lain seperti stop loss jejak.
  5. Parameter boleh dioptimumkan ke arah produk dan jangka masa tertentu.

Kesimpulan

Strategi ini membuat pengembangan dan pengoptimuman yang berkesan kepada strategi Bollinger standard. Penyimpangan trend yang ditambah meningkatkan kestabilan dan memanfaatkan peluang pembalikan dengan baik. Keupayaan untuk berdagang kedua-dua arah dan menghentikan kerugian juga menjadikan strategi lebih kukuh. Penambahbaikan lanjut dapat dicapai melalui pengoptimuman parameter dan menambah lebih banyak penapis.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//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 ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > 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, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, 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()

Lebih lanjut