Strategi zona transisi


Tanggal Pembuatan: 2023-12-29 17:03:27 Akhirnya memodifikasi: 2023-12-29 17:03:27
menyalin: 1 Jumlah klik: 846
1
fokus pada
1621
Pengikut

Strategi zona transisi

Ringkasan

Transition zone strategi adalah strategi perdagangan garis pendek yang didasarkan pada zona fluktuasi harga. Ini menggunakan zona fluktuasi yang terbentuk dalam harga dalam jangka waktu tertentu untuk menilai tren pasar, dan masuk ke dalam zona ketika zona tersebut pecah.

Prinsip Strategi

Strategi ini membangun zona fluktuasi harga dengan menghitung harga tertinggi dan terendah dari garis K akar N yang lalu. Ketika garis K terbaru menembus zona ini, maka akan terjadi pergeseran tren dan menghasilkan sinyal perdagangan.

Secara khusus, strategi terus melacak harga tertinggi dan harga terendah pada N akar terakhir K garis ((N parameter yang dapat disesuaikan), di mana:

  • Minimum harga = titik terendah di garis N akar K sebelumnya
  • Harga tertinggi = titik tertinggi di garis N-root K sebelumnya

Dengan demikian, harga bisa berfluktuasi.

Ketika harga penutupan K-line terbaru lebih tinggi dari harga tertinggi dalam kisaran, ini menandakan bahwa kisaran telah pecah, menghasilkan sinyal melakukan lebih banyak. Ketika harga penutupan K-line terbaru lebih rendah dari kisaran harga terendah, ini menandakan bahwa kisaran telah pecah, menghasilkan sinyal melakukan lebih banyak.

Selain itu, kebijakan ini juga menambahkan filter warna dan filter entitas. Filter warna memfilter sinyal berdasarkan warna entitas K; Filter entitas memfilter sinyal berdasarkan ukuran entitas K. Ini dapat memfilter beberapa sinyal palsu.

Keunggulan Strategis

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menangkap kisaran harga, menilai titik balik tren, melakukan lebih banyak shorting dengan tepat
  2. Filter warna dan substansi, dapat memfilter sinyal palsu
  3. Logika kebijakan sederhana dan jelas, parameter mudah dipahami dan disesuaikan
  4. Lebih banyak parameter yang dapat disesuaikan untuk mengoptimalkan strategi

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Setting parameter yang tidak tepat dapat menyebabkan terlalu sering bertransaksi dan menghasilkan biaya transaksi yang terlalu tinggi
  2. Rentang interval yang tidak tepat dapat menyebabkan terlalu banyak sinyal palsu yang melanggar interval
  3. Perkiraan rentang harga tidak efektif pada saat terjadi fluktuasi besar
  4. Tidak dapat menangani kesenjangan harga

Risiko ini dapat dikurangi dengan menyesuaikan parameter interval dan mengoptimalkan kondisi penyaringan sinyal.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Dinamis menyesuaikan rentang harga, bukan garis N-root K tetap
  2. Menambahkan logika stop loss untuk mengurangi risiko kerugian
  3. Optimalkan parameter filter untuk meningkatkan kualitas sinyal
  4. Menambahkan logika penanganan celah harga
  5. Kombinasi sinyal penilaian periode waktu yang berbeda untuk menghindari kecurangan

Meringkaskan

Transition zone strategi secara keseluruhan adalah strategi perdagangan garis pendek yang relatif sederhana dan praktis. Ini dapat menangkap peluang pasar dengan cepat dengan menilai titik balik tren melalui kisaran harga. Namun, ada beberapa risiko yang perlu diperhatikan. Dengan penyesuaian dan pengoptimalan parameter, strategi ini dapat disempurnakan lebih lanjut dan meningkatkan efektivitas keuntungan.

Kode Sumber Strategi
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Transient Zones Strategy v1.0", shorttitle = "TZ str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings 
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")

usecol = input(true, defval = true, title = "Use Color-Filter")
usebod = input(true, defval = true, title = "Use Body-Filter")

h_left = input(title = "H left", defval = 10)
h_right = -1
sample_period = input(title = "Sample bars for % TZ",  defval = 5000)
show_ptz = input(title = "Show PTZ", type = bool, defval = true)
show_channel = input(title = "Show channel", type = bool, defval = true)

fromyear = input(2018, defval = 2018, 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")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//By Jurij w/ TZ percent occurrence by SPYderCrusher

//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
plotshape(newlow and show_ptz, style=shape.triangledown, location=location.belowbar, color=red)
plotshape(newhigh and show_ptz, style=shape.triangleup, location=location.abovebar, color=green)
channel_high = plot(show_channel ? h_left_low : 0, color=silver)
channel_low = plot (show_channel ? h_left_high : 0, color=silver)

//check true TZ back in history
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotarrow(central_bar_is_highest ? -1 : 0, offset=-h_right-1)
plotarrow(central_bar_is_lowest ? 1 : 0, offset=-h_right-1)

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Signals
up1 = central_bar_is_lowest and body and (bar == -1 or usecol == false)
dn1 = central_bar_is_highest and body and (bar == 1 or usecol == false)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()