Strategi terobosan guncangan tren unilateral


Tanggal Pembuatan: 2024-01-18 14:59:30 Akhirnya memodifikasi: 2024-01-18 14:59:30
menyalin: 1 Jumlah klik: 614
1
fokus pada
1617
Pengikut

Strategi terobosan guncangan tren unilateral

Ringkasan

Strategi Single Side Trend Shock Breakout adalah strategi penembusan yang memanfaatkan saluran harga dan penilaian tren. Ini bertujuan untuk mengidentifikasi arah tren, masuk ke dalam zona goncangan, dan keluar setelah mencapai target keuntungan yang ditetapkan.

Prinsip Strategi

Strategi ini beroperasi dengan menghitung naik dan turun dari saluran harga untuk menentukan apakah harga telah menembus saluran tersebut. Secara khusus, strategi ini pertama-tama menghitung harga tertinggi dan terendah dari siklus N terakhir, dan menghitung garis tengah harga. Kemudian menghitung jarak rata-rata absolut dari harga dan garis tengah, untuk mendapatkan naik dan turun.

Ketika menilai tren, strategi memeriksa apakah beberapa garis K terbaru semuanya ditutup di atas saluran (sinyal multihead) atau di bawah saluran (sinyal headless). Setelah menilai tren, strategi menunggu harga bergoyang, membentuk sinyal terobosan di dekat saluran atas atau bawah, dan masuk ke dalam lapangan dengan cara masuk terbalik.

Selain itu, strategi juga akan menilai entitas K-line yang terobosan, sebagai sinyal masuk tambahan. Strategi akan menetapkan tujuan untuk mendapatkan keuntungan setelah masuk, dan secara aktif berhenti ketika harga mencapai target.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan saluran harga untuk menentukan arah tren dapat mengurangi probabilitas false breakout
  2. Reverse entry dapat menghasilkan keuntungan saat tren bergoyang
  3. Penembusan entitas sebagai sinyal tambahan untuk meningkatkan akurasi masuk
  4. Tetapkan target penghentian, dan Anda dapat mengaktifkan penghentian

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Parameter saluran harga yang tidak tepat dapat menyebabkan saluran terlalu besar atau terlalu kecil
  2. Operasi berbalik dalam tren yang kuat dapat menyebabkan kerugian besar
  3. Penembusan entitas mudah membentuk sinyal palsu
  4. Stop loss yang tidak tepat dapat menyebabkan kerugian

Untuk mengurangi risiko, parameter dapat disesuaikan untuk mempersempit ruang gerak, menghindari posisi terbalik dalam tren yang kuat, mengoptimalkan logika stop-loss, dan sebagainya.

Arah optimasi

Strategi ini juga dapat dioptimalkan dari beberapa arah:

  1. Meningkatkan indikator penilaian tren untuk memastikan akurasi penilaian tren
  2. Optimalkan parameter untuk menembus entitas, mengurangi tingkat sinyal palsu
  3. Waktu masuk dengan lebih banyak indikator
  4. Dinamiskan posisi stop

Meringkaskan

Strategi terobosan tren sepihak melalui saluran harga dan penilaian tren, metode untuk membangun posisi terbalik di zona goyah menguntungkan. Ini memiliki keuntungan untuk menilai tren, menghentikan inisiatif, tetapi juga ada risiko tertentu. Dengan metode pengesahan multi-indikator, pengoptimalan parameter dan lain-lain, risiko dapat dikurangi untuk meningkatkan ruang keuntungan.

Kode 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)