Strategi Pelacakan Tren Dua Arah Berdasarkan Penembusan Range

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

img

Gambaran umum

Strategi ini menghitung harga tertinggi terakhir (lastbull) dan harga terendah terakhir (lastbear). kemudian membandingkan harga saat ini dengan lastbull dan lastbear untuk menentukan apakah harga telah memasuki kisaran tertentu dan dengan demikian menghasilkan sinyal perdagangan.

Logika Strategi

Strategi ini pertama-tama menghitung harga tertinggi terakhir lastbull dan harga terendah terakhir lastbear. kemudian menghitung persentase perubahan ddl dari harga saat ini relatif terhadap lastbull, dan persentase perubahan dds relatif terhadap lastbear.

Ketika ddl lebih rendah dari sinyal ambang sinyal panjang yang dikonfigurasi, sinyal panjang dihasilkan. Ketika dds lebih tinggi dari sinyal ambang sinyal pendek yang dikonfigurasi, sinyal pendek dn dihasilkan.

Setelah menerima sinyal panjang, ia membuka posisi panjang jika parameter needlong benar. Setelah menerima sinyal pendek, ia membuka posisi pendek jika parameter needshort benar. Ukuran modal posisi dihitung dari ekuitas akun.

Hal ini menutup posisi panjang ketika harga naik setelah membuka panjang, dan menutup posisi pendek ketika harga turun setelah membuka pendek.

Analisis Keuntungan

Strategi ini menggabungkan analisis tren dan rentang. Ini dapat menangkap tren dan menghasilkan sinyal perdagangan dari rentang. Dibandingkan dengan strategi pelacakan tren sederhana, ini dapat dengan cepat menangkap arah tren baru setelah rentang pecah.

Parameter sangat dapat dikonfigurasi untuk produk yang berbeda. rentang waktu perdagangan dapat dikonfigurasi untuk menghindari peristiwa signifikan.

Analisis Risiko

Tidak ada mekanisme stop loss dalam strategi ini untuk membatasi kerugian per perdagangan. Ukuran posisi dapat sangat dipengaruhi oleh fluktuasi harga ketika kisaran perdagangan besar.

Stop loss dapat ditambahkan untuk membatasi kerugian per perdagangan. Algoritma ukuran posisi dapat disesuaikan berdasarkan produk untuk menstabilkan ukuran posisi.

Arahan Optimasi

  1. Tambahkan stop loss bergerak ke kontrol per risiko kerugian perdagangan
  2. Meningkatkan algoritma ukuran posisi, misalnya menggunakan ATR, untuk menstabilkan ukuran posisi
  3. Tambahkan penyaringan untuk sinyal masuk, misalnya masukkan hanya ketika golden cross terjadi
  4. Perdagangan beberapa produk dengan korelasi dengan risiko sistemik yang lebih rendah

Ringkasan

Strategi ini menggabungkan analisis tren dan penyebaran kisaran untuk menghasilkan sinyal perdagangan, yang dapat menangkap tren baru dan mengambil keuntungan dari karakteristik yang terikat kisaran. Parameter sangat dapat dikonfigurasi untuk produk yang berbeda. Ada ruang besar untuk optimasi untuk menyesuaikan lingkungan pasar 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 banyak