Strategi Mengikuti Tren Saluran Harga


Tanggal Pembuatan: 2023-10-31 17:44:19 Akhirnya memodifikasi: 2023-10-31 17:44:19
menyalin: 0 Jumlah klik: 636
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Saluran Harga

Strategi Spektrum Umur

Ringkasan

Strategi Spectral Age adalah strategi pelacakan tren yang didasarkan pada saluran harga. Ini menggunakan saluran yang cepat dan lambat untuk mengidentifikasi arah tren, dan melakukan pembelian pada saat rendah dan penjualan pada saat tinggi saat membalikkan. Keuntungan dari strategi ini adalah dapat secara otomatis melacak tren, menghentikan kerugian dan membalikkan posisi ketika tren berubah.

Prinsip Strategi

Strategi ini pertama-tama mendefinisikan siklus jalur cepat sebagai 20 garis K dan jalur lambat sebagai 50 garis K. Jalur cepat digunakan untuk mengatur harga stop loss, dan jalur lambat digunakan untuk menentukan arah tren dan waktu masuk.

Strategi pertama adalah menghitung harga tertinggi dan terendah dari saluran cepat, dan mengambil garis tengah sebagai garis stop loss. Pada saat yang sama, menghitung harga tertinggi dan terendah dari saluran lambat, di sepanjang saluran dan di bawahnya sebagai garis masuk.

Ketika harga menembus jalur lambat, lakukan lebih banyak; ketika harga menembus jalur lambat, lakukan lebih sedikit. Setelah masuk, titik stop loss ditetapkan di garis tengah jalur cepat.

Dengan cara ini, saluran lambat menentukan arah tren besar, saluran cepat mengikuti batas kecil untuk menerobos titik penutupan. Ketika tren besar berbalik, harga akan terlebih dahulu menerobos jalur penutupan saluran cepat, untuk mencapai stop loss.

Keunggulan Strategis

  • Mengikuti tren secara otomatis, berhenti tepat waktu. Dengan menggunakan struktur saluran ganda, Anda dapat mengikuti tren secara otomatis, dan berhenti dengan cepat ketika tren berbalik.

  • Posisi terbuka yang dibalikkan memiliki efek penyaringan tren tertentu. Posisi dibuka hanya ketika harga menembus batas saluran, dapat menghapus beberapa penembusan palsu yang tidak tren.

  • Risiko dapat dikontrol. Stop loss jarak lebih dekat, dapat mengontrol kerugian tunggal.

Risiko Strategis

  • Kemunduran yang lebih besar. Strategi trend tracking Kemunduran bisa lebih besar dan membutuhkan persiapan psikologis.

  • Stop loss terlalu dekat. Periode jalur cepat lebih pendek, jarak stop loss lebih dekat, dan mudah diblokir. Periode jalur cepat dapat dilepaskan dengan tepat.

  • Terlalu banyak transaksi. Struktur saluran ganda menyebabkan lebih banyak titik jual beli, yang memerlukan kontrol posisi yang masuk akal.

Arah optimasi

  • Menambahkan kondisi penyaringan untuk membuka posisi. Anda dapat menambahkan indikator seperti volatilitas dalam kondisi pembukaan posisi, dan menyaring terobosan yang tidak terlalu tren.

  • Optimalkan parameter siklus saluran. Dengan metode yang lebih sistematis, Anda dapat menemukan kombinasi optimal dari parameter saluran.

  • Dengan menggabungkan beberapa siklus waktu, Anda dapat menentukan tren besar pada siklus waktu yang lebih tinggi dan melakukan transaksi spesifik pada siklus yang lebih rendah.

  • Stop loss distance dapat disesuaikan secara dinamis sesuai dengan volatilitas pasar.

Meringkaskan

Strategi spektrum usia secara keseluruhan adalah strategi pelacakan tren yang lebih standar. Strategi ini menggunakan saluran harga untuk menentukan arah tren, dan mengatur stop loss untuk mengendalikan risiko. Strategi ini memiliki beberapa keuntungan, tetapi juga ada masalah dengan penarikan dan stop loss yang terlalu dekat.

Kode Sumber Strategi
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    // la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)