Strategi Pengesanan Trend Dua Arah Berdasarkan Penembusan Julat

Penulis:ChaoZhang, Tarikh: 2024-02-01 14:22:26
Tag:

img

Ringkasan

Strategi ini mengira harga tertinggi terakhir (lastbull) dan harga terendah terakhir (lastbear). Ia kemudian membandingkan harga semasa dengan lastbull dan lastbear untuk menentukan sama ada harga telah memasuki julat tertentu dan dengan itu menghasilkan isyarat perdagangan.

Logika Strategi

Strategi pertama mengira harga tertinggi terakhir lastbull dan harga terendah terakhir lastbear. kemudian ia mengira perubahan peratusan ddl harga semasa dekat berbanding lastbull, dan perubahan peratusan dds berbanding lastbear.

Apabila ddl lebih rendah daripada tanda ambang isyarat panjang yang dikonfigurasikan, isyarat panjang dihasilkan. Apabila dds lebih tinggi daripada isyarat ambang isyarat pendek yang dikonfigurasikan, isyarat pendek dn dihasilkan.

Apabila menerima isyarat panjang, ia membuka kedudukan panjang jika parameter needlong benar. Apabila menerima isyarat pendek, ia membuka kedudukan pendek jika parameter needshort benar. Modal saiz kedudukan dikira dari ekuiti akaun.

Ia menutup kedudukan panjang apabila harga meningkat selepas membuka panjang, dan menutup kedudukan pendek apabila harga jatuh selepas membuka pendek.

Analisis Kelebihan

Strategi ini menggabungkan analisis trend dan julat. Ia boleh menangkap trend dan menjana isyarat dagangan dari penembusan julat. Berbanding dengan strategi penjejakan trend yang mudah, ia dapat dengan cepat menangkap arah trend baru selepas penembusan julat.

Parameter sangat boleh dikonfigurasikan untuk produk yang berbeza. Julat masa perdagangan boleh dikonfigurasikan untuk mengelakkan peristiwa penting.

Analisis Risiko

Tidak ada mekanisme stop loss dalam strategi ini untuk mengehadkan kerugian setiap perdagangan. Ukuran kedudukan boleh dipengaruhi oleh turun naik harga apabila julat perdagangan besar.

Stop loss boleh ditambahkan untuk mengehadkan kerugian setiap perdagangan. Algoritma saiz kedudukan boleh disesuaikan berdasarkan produk untuk menstabilkan saiz kedudukan.

Arahan pengoptimuman

  1. Tambah pergerakan stop loss kepada kawalan bagi risiko kerugian perdagangan
  2. Meningkatkan algoritma saiz kedudukan, contohnya menggunakan ATR, untuk menstabilkan saiz kedudukan
  3. Tambah penapisan untuk isyarat masuk, contohnya masuk hanya apabila salib emas berlaku
  4. Perdagangan pelbagai produk dengan korelasi dengan risiko sistemik yang lebih rendah

Ringkasan

Strategi ini menggabungkan analisis trend dan penembusan julat untuk menjana isyarat perdagangan, yang dapat menangkap trend baru dan memanfaatkan ciri-ciri terikat julat. Parameter sangat boleh dikonfigurasi untuk produk yang berbeza. Terdapat ruang yang besar untuk pengoptimuman untuk menyesuaikan diri dengan persekitaran pasaran yang lebih kompleks.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, title = "Long")
needshort = input(true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
signalshort = input(3.0, title = "Short, %")
signallong = input(-3.0, title = "Long, %")
fromyear = input(1900, defval = 1900, 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")

//Levels
bull = close > close[1] ? 1 : 0
bear = close < close[1] ? 1 : 0
lastbull = 0.0
lastbull := bull ? close : lastbull[1]
lastbear = 0.0
lastbear := bear ? close : lastbear[1]

//Signals
ddl = ((close / lastbull) - 1) * 100
up = ddl < signallong
dds = ((close / lastbear) - 1) * 100
dn = dds > signalshort

//Lines
plot(dds, style = plot.style_area, color = color.red, transp = 0)
plot(ddl, style = plot.style_area, color = color.lime, transp = 0)
plot(0, color = color.black, linewidth = 2, transp = 0)

//Background
col = (up and needlong) or (dn and needshort) ? color.yellow : na
bgcolor(col, transp = 20)

//Orders
lot = 0.0
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
truetime = true
if up
    strategy.entry("Long", strategy.long, lot, when = needlong and truetime)
if dn
    strategy.entry("Short", strategy.short, lot, when = needshort and truetime)
if strategy.position_size > 0 and close > open
    strategy.entry("Close", strategy.short, 0)
if strategy.position_size < 0 and close < open
    strategy.entry("Close", strategy.long, 0)

Lebih lanjut