Trend Saluran Harga Mengikuti Strategi


Tarikh penciptaan: 2023-10-31 17:44:19 Akhirnya diubah suai: 2023-10-31 17:44:19
Salin: 0 Bilangan klik: 636
1
fokus pada
1617
Pengikut

Trend Saluran Harga Mengikuti Strategi

Strategi Usia Spektrum

Gambaran keseluruhan

Strategi spektral adalah strategi pengesanan trend berdasarkan saluran harga. Ia menggunakan saluran yang cepat dan perlahan untuk mengenal pasti arah trend, dan melakukan pembelian rendah dan penjualan tinggi ketika penyesuaian. Keuntungan dari strategi ini adalah bahawa ia dapat mengikuti trend secara automatik, menghentikan kerugian dan membalikkan kedudukan apabila trend berubah.

Prinsip Strategi

Strategi ini mula-mula mentakrifkan kitaran laluan cepat sebagai 20 K garis dan laluan perlahan sebagai 50 K garis. Laluan cepat digunakan untuk menetapkan harga berhenti, dan laluan perlahan digunakan untuk menentukan arah trend dan masa masuk.

Strategi pertama mengira harga tertinggi dan terendah untuk saluran cepat, dan mengambil garis tengah sebagai garis berhenti. Pada masa yang sama, mengira harga tertinggi dan terendah untuk saluran perlahan, sepanjang saluran di atas dan di bawah sebagai garis masuk.

Apabila harga menembusi laluan perlahan di atas, buat lebih banyak; apabila harga menembusi laluan perlahan di bawah, buat kosong. Selepas masuk, titik hentian diletakkan di garis tengah laluan cepat.

Dengan cara ini, saluran perlahan menentukan arah trend besar, saluran cepat mengikuti jarak kecil untuk memecahkan titik penangguhan keputusan. Apabila trend besar berbalik, harga akan terlebih dahulu menembusi garis berhenti saluran cepat, mencapai stop loss.

Kelebihan Strategik

  • Mengikuti trend secara automatik, berhenti tepat pada masanya. Menggunakan struktur saluran dua, anda boleh mengikuti trend secara automatik, berhenti dengan cepat apabila trend berbalik.

  • Pelancaran kembali membuka kedudukan, mempunyai kesan penapis trend tertentu. Hanya membuka kedudukan apabila harga menembusi sempadan saluran, dapat menghapuskan beberapa penembusan palsu yang tidak bergaya.

  • Risiko boleh dikawal. Jarak hentian lebih dekat, boleh mengawal kerugian tunggal.

Risiko Strategik

  • Penarikan diri yang besar. Strategi trend tracking Penarikan diri boleh menjadi besar dan memerlukan persediaan mental.

  • Titik henti terlalu dekat. Kitaran laluan pantas pendek, jarak henti lebih dekat, mudah disekat. Kitaran laluan pantas boleh dilonggarkan dengan sewajarnya.

  • Mudah menghasilkan terlalu banyak transaksi. Struktur saluran ganda menyebabkan lebih banyak tempat membeli dan menjual, yang memerlukan kawalan kedudukan yang wajar.

Arah pengoptimuman

  • Tambah syarat penapisan bukaan kedudukan. Anda boleh memasukkan indikator seperti volatility dalam syarat bukaan kedudukan, penapisan penembusan yang kurang trend.

  • Optimumkan parameter kitaran saluran. Anda boleh mencari kombinasi parameter saluran yang optimum dengan kaedah yang lebih sistematik.

  • Pengambilan keputusan dalam pelbagai kitaran masa. Ia boleh menentukan trend besar dalam kitaran masa yang lebih tinggi dan melakukan perdagangan tertentu dalam kitaran yang lebih rendah.

  • Jarak hentian yang disesuaikan secara dinamik. Jarak hentian boleh disesuaikan secara dinamik mengikut tahap turun naik pasaran.

ringkaskan

Strategi spektral secara keseluruhan adalah strategi pengesanan trend yang lebih standard. Ia menggunakan saluran harga untuk menentukan arah trend dan menetapkan hentian untuk mengawal risiko. Strategi ini mempunyai kelebihan tertentu, tetapi juga terdapat masalah penarikan balik dan titik hentian yang terlalu dekat.

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