Strategi Trend Shock Breakout Satu Sisi

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

img

Gambaran umum

Single Side Trend Shock Breakout Strategy adalah strategi breakout yang memanfaatkan saluran harga dan penilaian tren.

Logika Strategi

Strategi ini menghitung band atas dan bawah saluran harga menggunakan harga tertinggi dan terendah selama N periode terakhir. Kemudian menghitung garis tengah harga. Jarak antara harga dan garis tengah dihitung rata-rata untuk mendapatkan band saluran.

Untuk mendeteksi tren, strategi memeriksa apakah lilin terbaru semua ditutup di atas (bullish) atau di bawah (bearish) saluran. Setelah konfirmasi tren, ia menunggu kejutan harga di dekat band dan memasuki arah sebaliknya.

Penembusan tubuh melengkapi sinyal masuk ketika panjang tubuh melebihi kelipatan dari panjang tubuh rata-rata.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Filter saluran harga mengurangi risiko pecah palsu
  2. Reverse entries mendapat keuntungan dari trend shock
  3. Penembusan tubuh meningkatkan akurasi masuk
  4. Target keuntungan memungkinkan mengambil keuntungan secara aktif

Analisis Risiko

Ada juga beberapa risiko:

  1. Parameter saluran yang tidak benar dapat memperluas/mempersempit saluran secara berlebihan
  2. Pembalikan terhadap tren yang kuat dapat menyebabkan kerugian besar
  3. Penembusan tubuh cenderung menghasilkan sinyal palsu di atas
  4. Target keuntungan yang kaku mungkin meninggalkan keuntungan di atas meja

Ini dapat ditangani melalui penyesuaian parameter, menghindari pembalikan selama tren yang kuat, mengoptimalkan logika keluar dll.

Peluang Peningkatan

Beberapa cara untuk meningkatkan strategi:

  1. Tambahkan indikator tren untuk mengkonfirmasi tren
  2. Mengoptimalkan parameter keluar tubuh untuk mengurangi sinyal palsu
  3. Filter tambahan pada waktu masuk
  4. Penyesuaian target laba secara dinamis

Kesimpulan

Single Side Trend Shock Breakout Strategy menguntungkan dari breakout terhadap tren dalam periode yang bervariasi. Strategi ini memiliki keuntungan dari identifikasi tren dan pengambilan keuntungan aktif, tetapi juga memiliki beberapa risiko. Risiko ini dapat dikurangi melalui konfirmasi multi-faktor, optimasi parameter dll. Strategi ini cocok untuk perdagangan jangka pendek dan dapat melengkapi strategi yang mengikuti tren.


/*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 banyak