Strategi Perdagangan Percutian Momentum

Penulis:ChaoZhang, Tarikh: 2023-09-18 21:28:22
Tag:

Ringkasan

Strategi ini menggunakan penunjuk momentum untuk berdagang dengan tali Brin untuk memecahkan titik, terutama untuk menentukan sama ada harga akan keluar dari tali Brin, dan menghantar isyarat beli dan jual.

Prinsip

Strategi ini terutamanya berdasarkan arah trend penghakiman penunjuk tali pinggang. Tali pinggang adalah kawasan berupa tali yang terdiri daripada purata bergerak dan deviasi standardnya. Tali pinggang tengah adalah purata bergerak n hari, uptrack adalah + 2 kali deviasi standard, downtrack adalah + 2 kali deviasi standard. Harga adalah overbought apabila harga mendekati uptrack, oversold apabila mendekati downtrack.

Secara khusus, strategi ini mula-mula mengira harga tertinggi, harga minimum dalam n hari, dan mengira harga pertengahan (((harga tertinggi + harga terendah) / 2) ; kemudian mengira harga penutupan dan jarak pergerakan berlemak dari harga pertengahan yang membentuk garis tengah tali pinggang, dan setiap garis tengah ditambah dua kali perbezaan standard yang membentuk jalur bawah.

Jika harga penutupan menembusi lintasan, ia menunjukkan trend menaik; jika ia menembusi lintasan bawah, ia menunjukkan trend menurun.

Di samping itu, strategi ini juga memperkenalkan mekanisme bukaan belakang. Apabila harga memecahkan jalur Brin, jika MACD menurun, ia akan mengambil tindakan kebalikan pasaran untuk melakukan kosong.

Kelebihan

  1. Dengan menggunakan tali pinggang untuk menentukan arah trend, ia mempunyai keupayaan untuk mengesan trend.

  2. Di samping itu, anda juga boleh membuat keputusan untuk membeli atau menjual saham anda.

  3. Parameter seperti kitaran tali pinggang, penggandaan perbezaan standard, dan lain-lain boleh disesuaikan untuk menyesuaikan transaksi pada kitaran yang berbeza.

  4. Ia boleh menutup kedudukan terbuka terbalik dan mengurangkan risiko.

Risiko dan tindakan balas

  1. Tali pinggang sering digunakan untuk saham yang berfluktuasi tinggi dan mungkin tidak sesuai untuk varieti seperti Sumber atau Indeks jangka panjang; boleh menguji kesan parameter jangka yang berbeza.

  2. Sinyal pecah boleh menyebabkan pecah palsu. Sinyal boleh disaring dengan faktor lain.

  3. Pendahuluan terbalik boleh memperluaskan kerugian lebih lanjut. Modul pembukaan terbalik boleh ditutup.

  4. Pengunduran mungkin lebih besar.

Arah pengoptimuman

  1. Pertimbangkan untuk memasukkan penapisan trend untuk mengelakkan pasaran yang tidak menentu.

  2. Anda boleh menguji perkalian perbezaan standard tali pinggang untuk mencari parameter yang lebih sesuai.

  3. Strategi berhenti kerugian boleh diperkenalkan untuk mengawal kerugian tunggal.

  4. Logika pembukaan dan kenaikan harga boleh dioptimumkan untuk memberi isyarat perdagangan yang lebih jelas.

Ringkasan

Strategi ini menggunakan penunjuk berasaskan Brin untuk menilai penembusan trend harga. Strategi pengesanan trend asas dapat dicapai dengan menggunakan tetapan parameter mudah. Tetapi terdapat risiko penembusan palsu yang perlu disaring dengan penunjuk lain. Tetapan parameter, strategi stop loss, dan lain-lain boleh dioptimumkan lagi untuk mengawal risiko.

Ringkasan

Strategi ini menggunakan penunjuk momentum Bollinger Bands untuk perdagangan breakout, terutamanya menilai sama ada harga menembusi Bollinger Bands atas atau bawah untuk isyarat perdagangan.

Prinsip-prinsip

Strategi ini terutamanya berdasarkan kepada penunjuk Bollinger Bands untuk menentukan arah trend. Bollinger Bands terdiri daripada band tengah berdasarkan purata bergerak dan band atas/bawah yang ditakrifkan oleh penyimpangan standard. Band tengah adalah purata bergerak n-periode, band atas adalah band tengah + 2 penyimpangan standard, dan band bawah adalah band tengah - 2 penyimpangan standard. Apabila harga mendekati band atas ia menunjukkan keadaan overbought, dan apabila ia mendekati band bawah ia menandakan keadaan oversold.

Secara khusus, strategi pertama mengira tertinggi tertinggi dan terendah terendah selama n tempoh terakhir, dan harga tengah ((tinggi tertinggi + terendah terendah) / 2). Ia kemudian mengira jarak antara harga dekat dan harga tengah, menggunakan purata bergerak eksponensial jarak untuk membentuk jalur tengah, dan menambah / mengurangkan 2 kali penyimpangan standard di atas dan di bawah untuk membentuk jalur atas dan bawah.

Apabila harga menutup menembusi jalur atas, ia menandakan trend menaik; apabila ia menembusi jalur bawah, ia menandakan trend menurun.

Di samping itu, strategi ini menggabungkan mekanisme anti-trend. Apabila harga memecahkan band atas tetapi MACD jatuh, ia akan mengambil kedudukan pendek anti-trend.

Kelebihan

  1. Menggunakan Bollinger Bands untuk menentukan arah trend memberikan keupayaan trend tertentu.

  2. Reka bentuk kontra trend membolehkan keuntungan dari pembalikan.

  3. Parameter yang boleh disesuaikan seperti pengganda tempoh dan penyimpangan standard menjadikannya dapat disesuaikan dengan cakrawala perdagangan yang berbeza.

  4. Mematikan perdagangan kontra-trend untuk mengurangkan risiko.

Risiko dan Pengurangan

  1. Bollinger Bands berfungsi dengan baik untuk stok turun naik yang tinggi, mungkin tidak sesuai untuk komoditi atau indeks yang stabil.

  2. Isyarat pecah mungkin mempunyai pecah palsu.

  3. Perdagangan kontra-trend boleh meningkatkan kerugian dan mematikan modul kontra-trend.

  4. Pengurangan boleh menjadi besar, boleh menyesuaikan saiz kedudukan.

Peluang Peningkatan

  1. Pertimbangkan untuk menambah penapis trend untuk mengelakkan whipsaw di pasaran bukan arah.

  2. Uji kelipatan penyimpangan piawai yang berbeza untuk mencari parameter optimum.

  3. Menggabungkan stop loss untuk mengawal kerugian perdagangan tunggal.

  4. Mengoptimumkan logik kemasukan dan tambahan untuk isyarat perdagangan yang lebih jelas.

Ringkasan

Strategi ini menggunakan Bollinger Bands sebagai penunjuk utama dan berdagang berdasarkan trend breakout. Dengan parameter mudah ia menyediakan trend asas berikut keupayaan. Tetapi risiko breakout palsu wujud, memerlukan penapis tambahan. Parameter, stop loss dan kawalan risiko boleh ditingkatkan. Secara keseluruhan ia berfungsi sebagai strategi breakout asas yang munasabah.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bands Scalper Strategy v1.6", shorttitle = "Scalper str 1.6", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
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")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]

//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00)
    strategy.close_all()

Lebih lanjut