Strategi kejayaan kejutan trend unilateral


Tarikh penciptaan: 2024-01-18 14:59:30 Akhirnya diubah suai: 2024-01-18 14:59:30
Salin: 1 Bilangan klik: 614
1
fokus pada
1617
Pengikut

Strategi kejayaan kejutan trend unilateral

Gambaran keseluruhan

Strategi Single Side Trend Shock Breakout adalah strategi penembusan yang menggunakan saluran harga dan penghakiman trend. Ia bertujuan untuk mengenal pasti arah trend, masuk ke dalam kawasan yang bergolak, dan keluar setelah mencapai matlamat keuntungan yang ditetapkan.

Prinsip Strategi

Strategi ini beroperasi dengan mengira naik dan turun saluran harga untuk menentukan sama ada harga telah menembusi saluran tersebut. Secara khusus, strategi ini mula mengira harga tertinggi dan terendah dalam kitaran N terakhir dan mengira garis tengah harga. Kemudian menghitung jarak mutlak purata harga dan garis tengah untuk mendapatkan naik dan turun.

Apabila menilai trend, strategi memeriksa sama ada beberapa garis K yang baru-baru ini ditutup di atas saluran (sinyal multihead) atau di bawah saluran (sinyal kosong). Apabila menilai trend, strategi menunggu harga bergoyang, membentuk isyarat pecah di dekat saluran atas atau bawah saluran, mengambil cara masuk ke dalam lapangan dengan cara terbalik.

Selain itu, strategi ini juga akan menilai entiti K-line yang pecah, sebagai isyarat masuk tambahan. Strategi ini akan menetapkan sasaran keuntungan setelah masuk dan secara aktif berhenti apabila harga mencapai sasaran.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan:

  1. Menggunakan saluran harga untuk menentukan arah trend dapat mengurangkan kemungkinan penembusan palsu
  2. Reverse entry boleh menghasilkan keuntungan apabila trend bergoyang
  3. Penembusan entiti sebagai isyarat tambahan untuk meningkatkan ketepatan kemasukan
  4. Tetapkan sasaran penangguhan, anda boleh mengaktifkan penghentian

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Parameter saluran harga yang tidak betul mungkin menyebabkan saluran terlalu besar atau terlalu kecil
  2. Operasi berbalik dalam trend yang kuat boleh menyebabkan kerugian yang besar
  3. Penembusan entiti mudah membentuk isyarat palsu
  4. Penetapan yang tidak betul boleh menyebabkan kerugian

Untuk mengurangkan risiko, parameter boleh disesuaikan untuk mengehadkan ruang laluan, mengelakkan kedudukan terbalik dalam trend yang kuat, mengoptimumkan logik hentian dan sebagainya.

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa arah:

  1. Meningkatkan indikator penilaian trend untuk memastikan ketepatan penilaian trend
  2. Mengoptimumkan parameter penembusan entiti, mengurangkan kadar isyarat palsu kepala
  3. Masa masuk dengan penapisan lebih banyak petunjuk
  4. Dinamik menyesuaikan kedudukan berhenti

ringkaskan

Kaedah penembusan kejatuhan trend unilateral melalui saluran harga dan penilaian trend, kaedah untuk membangunkan kedudukan terbalik di kawasan yang bergolak mendapat keuntungan. Ia mempunyai kelebihan untuk menilai trend, menghentikan inisiatif, tetapi juga ada risiko tertentu.

Kod sumber strategi
/*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)