Strategi zon peralihan


Tarikh penciptaan: 2023-12-29 17:03:27 Akhirnya diubah suai: 2023-12-29 17:03:27
Salin: 1 Bilangan klik: 846
1
fokus pada
1621
Pengikut

Strategi zon peralihan

Gambaran keseluruhan

Strategi rantau peralihan adalah strategi perdagangan garis pendek berdasarkan rantau turun naik harga. Ia menggunakan rantau turun naik yang terbentuk dalam harga dalam tempoh masa tertentu untuk menilai trend pasaran, dan masuk ke dalam rantau apabila rantau itu pecah.

Prinsip Strategi

Strategi ini membina julat pergerakan harga dengan mengira harga tertinggi dan terendah pada N akar K yang lalu. Apabila garis K terkini menembusi julat ini, ia menentukan bahawa trend telah berbalik dan menghasilkan isyarat perdagangan.

Khususnya, strategi terus mengesan harga tertinggi dan terendah pada N akar terakhir K garis ((N parameter yang boleh disesuaikan), di mana:

  • Harga terendah = titik terendah dalam garis N akar K
  • Harga tertinggi = titik tertinggi dalam garis N root K

Ini akan membina satu kawasan untuk turun naik harga.

Apabila harga penutupan garis K terkini lebih tinggi daripada harga tertinggi dalam julat, menandakan pecah julat, menghasilkan isyarat melakukan lebih; apabila harga penutupan garis K terkini lebih rendah daripada harga terendah dalam julat, menandakan pecah julat, menghasilkan isyarat melakukan lebih.

Selain itu, strategi ini juga menambah penapis warna dan penapis entiti. Penapis warna menapis isyarat berdasarkan warna K-garis; penapis entiti menapis isyarat berdasarkan saiz entiti K-garis. Ini dapat menapis beberapa isyarat palsu.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Menerima Julat Harga, Mencari Titik Peralihan Trend, dan Melakukan Leverage dengan Tepat
  2. Penapisan warna dan penapisan entiti yang boleh menapis isyarat palsu
  3. Logik dasar ringkas dan jelas, mudah difahami dan parameter disesuaikan
  4. Lebih banyak parameter yang boleh disesuaikan untuk mengoptimumkan strategi

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Tetapan parameter yang tidak betul boleh menyebabkan terlalu banyak perdagangan dan kos dagangan yang tinggi
  2. Setting ranges yang tidak betul boleh menyebabkan terlalu banyak sinyal palsu yang melanggar ranges
  3. Ramalan Jarak Harga Kurang Berkesan Apabila Keadaan Bergolak
  4. Tidak dapat menangani jurang harga yang melonjak

Risiko ini boleh dikurangkan dengan menyesuaikan parameter jarak dan mengoptimumkan keadaan penapisan isyarat.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Dinamik menyesuaikan julat harga, bukan garisan N-root K tetap
  2. Menambah logik stop loss untuk mengurangkan risiko kerugian
  3. Optimumkan parameter penapis untuk meningkatkan kualiti isyarat
  4. Menambah logik untuk menangani jurang harga
  5. Menggabungkan beberapa isyarat penghakiman jangka masa untuk mengelakkan tersandung

ringkaskan

Strategi julat peralihan secara keseluruhan adalah strategi perdagangan garis pendek yang lebih mudah dan praktikal. Ia dapat menangkap peluang pasaran dengan cepat dengan menilai titik perubahan trend melalui julat harga.

Kod 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()