Strategi Hentian Kerugian ATR Dinamis

Penulis:ChaoZhang, Tarikh: 2023-12-11 14:24:18
Tag:

img

Ringkasan

Strategi ini berdasarkan mekanisme stop loss yang dinamik yang direka dengan penunjuk ATR untuk menyesuaikan stop loss dalam masa nyata sambil memastikan stop loss yang berkesan untuk memaksimumkan keuntungan.

Logika Strategi

Strategi ini menggunakan tempoh ATR cepat 5 dan tempoh ATR perlahan 10 untuk membina dua lapisan dinamik trailing stop loss. Apabila harga berjalan ke arah yang menguntungkan, lapisan cepat akan mengaktifkan stop trailing terlebih dahulu untuk mengetatkan stop loss; apabila terdapat penarikan balik jangka pendek, stop loss lapisan perlahan dapat mengelakkan stop out awal. Sementara itu, persilangan antara lapisan cepat dan perlahan berfungsi sebagai isyarat perdagangan.

Secara khusus, jarak stop loss lapisan pantas adalah 0.5 kali ATR 5 tempoh, dan jarak stop loss lapisan perlahan adalah 3 kali ATR 10 tempoh. Isyarat beli dihasilkan apabila lapisan pantas memecahkan di atas lapisan perlahan, dan isyarat jual dihasilkan apabila lapisan pantas memecahkan di bawah lapisan perlahan. Garis stop loss juga dikemas kini dalam masa nyata dan digambarkan di bawah kurva harga.

Analisis Kelebihan

Kelebihan terbesar strategi ini ialah ia dapat menyesuaikan kedudukan stop loss secara dinamik untuk memaksimumkan keuntungan sambil memastikan stop loss yang berkesan.

Di samping itu, reka bentuk ATR dua lapisan menyeimbangkan kepekaan kehilangan berhenti. Lapisan cepat bertindak balas dengan cepat dan lapisan perlahan boleh menapis bunyi jangka pendek untuk mengelakkan kehilangan berhenti yang lebih awal.

Analisis Risiko

Risiko utama strategi ini terletak pada sama ada tetapan jarak stop loss adalah munasabah. Jika pengganda ATR ditetapkan terlalu tinggi, julat stop loss tidak akan mengikuti pergerakan harga. Jika pengganda ATR terlalu kecil, ia cenderung untuk dihentikan oleh bunyi jangka pendek. Oleh itu, parameter perlu diselaraskan mengikut ciri-ciri pelbagai jenis.

Di samping itu, dalam pasaran terikat julat, nilai ATR lebih kecil dan garis stop loss lebih dekat, yang boleh dengan mudah membawa kepada stop loss yang kerap.

Arahan pengoptimuman

Kombinasi parameter kitaran ATR yang berbeza boleh dicuba untuk mencari keseimbangan yang optimum. Ia juga boleh mempertimbangkan untuk menggabungkan dengan penunjuk lain, seperti penunjuk trend untuk menilai peringkat pasaran, untuk menyesuaikan saiz pengganda ATR secara dinamik.

Ia juga mungkin untuk mengkaji alternatif kepada penunjuk ATR, menggantikan ATR dengan DKVOL, HRANGE atau Peratusan ATR, dll. boleh mencapai kesan stop loss yang lebih baik.

Ringkasan

Strategi ini merancang mekanisme pengekalan dinamik dua lapisan berdasarkan penunjuk ATR untuk memaksimumkan keuntungan sambil mengelakkan kerugian berhenti yang berlebihan. Ia sesuai untuk pengguna yang mempunyai keperluan yang lebih tinggi untuk kerugian berhenti. Strategi ini dapat menyesuaikan parameter dengan fleksibel mengikut ciri pasaran dan pelbagai untuk mencapai kesan kerugian berhenti yang optimum.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)

/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and        //
// different interpretation.                        //
// This is a fast-reacting system and is better     //
// suited for higher volatility markets             //
//////////////////////////////////////////////////////

SC = input(close, "Source", input.source)

// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer)  // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float)  // ATR Factor
SL1 = AF1 * atr(AP1)  // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))

// Slow Trail //
AP2 = input(10, "Slow ATR period", input.integer)  // ATR Period
AF2 = input(3, "Slow ATR multiplier", input.float)  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))

// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2

// Signals //
Bull = barssince(Green) < barssince(Red)

Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)

TS1 = plot(Trail1, "Fast Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2, display=display.none)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.new(color.green, 90) : color.new(color.red, 90))

plotcolor = input(true, "Paint color on chart", input.bool)

bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")

if Sell
    strategy.close("Buy")


Lebih lanjut