Strategi Zona Transisi

Penulis:ChaoZhang, Tanggal: 2023-12-29 17:03:27
Tag:

img

Gambaran umum

Strategi Zona Transient adalah strategi perdagangan jangka pendek yang didasarkan pada zona fluktuasi harga. Strategi ini menggunakan zona fluktuasi yang terbentuk oleh harga dalam periode waktu tertentu untuk menilai tren pasar dan mengambil posisi ketika zona tersebut terpenetrasi.

Logika Strategi

Strategi ini menghitung harga tertinggi dan terendah dari N candlestick sebelumnya untuk membangun zona fluktuasi harga. Ketika candlestick terbaru menembus zona ini, ia menilai bahwa pembalikan tren telah terjadi dan menghasilkan sinyal perdagangan.

Secara khusus, strategi terus melacak harga tertinggi dan terendah dari N candlestick terakhir (parameter N yang dapat disesuaikan), di mana:

  • Harga terendah = titik terendah di N candlestick sebelumnya
  • Harga tertinggi = titik tertinggi di N candlestick sebelumnya

Ini membangun zona fluktuasi harga.

Ketika harga penutupan candlestick terbaru lebih tinggi dari harga tertinggi zona, itu menandakan bahwa zona telah ditembus, menghasilkan sinyal panjang; ketika harga penutupan lebih rendah dari harga terendah zona, itu menandakan bahwa zona telah ditembus, menghasilkan sinyal pendek.

Selain itu, strategi ini juga menggabungkan filter warna dan tubuh. Filter warna menyaring sinyal berdasarkan warna candlestick; filter tubuh menyaring sinyal berdasarkan ukuran tubuh candlestick. Ini membantu menyaring beberapa sinyal palsu.

Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Mengambil zona harga dan menentukan titik pembalikan tren untuk entri panjang/pendek yang akurat
  2. Filter warna dan tubuh membantu menyaring sinyal palsu
  3. Logika strategi yang sederhana dan jelas, mudah dimengerti dan menyesuaikan parameter
  4. Banyak parameter yang dapat disesuaikan memungkinkan untuk mengoptimalkan strategi

Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Pengaturan parameter yang tidak tepat dapat menyebabkan over-trading dan biaya tinggi
  2. Pengaturan rentang zona yang salah dapat menghasilkan terlalu banyak sinyal pecah palsu
  3. Kekuatan prediksi zona harga yang buruk selama perubahan pasar yang keras
  4. Tidak mampu menangani kesenjangan harga

Risiko ini dapat dikurangi dengan menyesuaikan parameter zona, mengoptimalkan filter sinyal dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam beberapa arah:

  1. Sesuaikan rentang zona harga secara dinamis alih-alih lilin N tetap
  2. Menggabungkan logika stop loss untuk membatasi kerugian
  3. Mengoptimalkan parameter filter untuk meningkatkan kualitas sinyal
  4. Tambahkan logika untuk menangani kesenjangan harga
  5. Gabungkan beberapa kerangka waktu untuk menilai sinyal dan menghindari perangkap

Kesimpulan

Strategi Zona Transisi adalah strategi perdagangan jangka pendek yang mudah digunakan secara keseluruhan. Ini menentukan titik pembalikan tren melalui zona harga dan dapat dengan cepat memanfaatkan peluang pasar. Ini juga memiliki beberapa risiko yang perlu dicatat. Perbaikan lebih lanjut dapat dilakukan melalui penyesuaian parameter dan optimasi untuk meningkatkan profitabilitas.


/*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()

Lebih banyak