Strategi Penembusan kejutan Trend Satu Sisi

Penulis:ChaoZhang, Tarikh: 2024-01-18 14:59:30
Tag:

img

Ringkasan

Strategi Penembusan Kebimbangan Trend Sisi Tunggal adalah strategi penembusan yang menggunakan saluran harga dan penghakiman trend. Ia bertujuan untuk mengenal pasti arah trend, memasuki penembusan semasa tempoh yang terhad, dan keluar apabila sasaran keuntungan dicapai.

Logika Strategi

Strategi ini mengira jalur atas dan bawah saluran harga menggunakan harga tertinggi dan terendah selama N tempoh baru-baru ini. Ia kemudian mengira garis tengah harga. Jarak antara harga dan garis tengah adalah purata untuk mendapatkan jalur saluran.

Untuk pengesanan trend, strategi ini memeriksa sama ada lilin baru-baru ini semua ditutup di atas (bullish) atau di bawah (bearish) saluran.

Penembusan badan melengkapkan isyarat kemasukan apabila panjang badan melebihi kelipatan panjang badan purata.

Analisis Kelebihan

Kelebihan utama strategi ini ialah:

  1. Penapis saluran harga mengurangkan risiko pecah palsu
  2. Pendaftaran terbalik mendapat keuntungan daripada kejutan trend
  3. Penembusan badan meningkatkan ketepatan kemasukan
  4. Sasaran keuntungan membolehkan mengambil keuntungan secara aktif

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Parameter saluran yang tidak betul boleh meluaskan/menyempitkan saluran terlalu banyak
  2. Pembalikan terhadap trend yang kuat boleh membawa kepada kerugian besar
  3. Penembusan badan cenderung menghasilkan isyarat palsu di atas
  4. Sasaran keuntungan yang ketat mungkin meninggalkan keuntungan di atas meja

Ini boleh ditangani melalui penyesuaian parameter, mengelakkan pembalikan semasa trend yang kuat, mengoptimumkan logik keluar dll.

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Tambah penunjuk trend untuk mengesahkan trend
  2. Mengoptimumkan parameter keluar badan untuk mengurangkan isyarat palsu
  3. Penapis tambahan mengenai masa kemasukan
  4. Penyesuaian dinamik sasaran keuntungan

Kesimpulan

Strategi Penembusan Kebimbangan Trend Sisi Tunggal mendapat keuntungan daripada penembusan terhadap trend dalam tempoh yang berbeza. Ia mempunyai kelebihan pengenalan trend dan pengambilan keuntungan aktif, tetapi juga mempunyai beberapa risiko. Risiko ini dapat dikurangkan melalui pengesahan pelbagai faktor, pengoptimuman parameter dan lain-lain. Strategi ini sesuai untuk perdagangan jangka pendek dan boleh melengkapkan strategi trend-mengikut.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.5", shorttitle = "Scalper str 1.5", 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")
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)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Lebih lanjut