Strategi henti kerugian mengekori ATR dinamik


Tarikh penciptaan: 2023-12-11 14:24:18 Akhirnya diubah suai: 2023-12-11 14:24:18
Salin: 0 Bilangan klik: 755
1
fokus pada
1621
Pengikut

Strategi henti kerugian mengekori ATR dinamik

Gambaran keseluruhan

Strategi ini adalah mekanisme pengesanan kerugian yang dinamik berdasarkan reka bentuk penunjuk ATR, yang dapat menyesuaikan kedudukan hentian dalam masa nyata, sambil menjamin hentian kerugian, untuk mendapatkan keuntungan yang lebih besar.

Prinsip Strategi

Strategi ini menggunakan ATR kitaran 5 dan ATR kitaran 10 untuk membina dua lapisan dinamik untuk mengesan hentian. Apabila harga bergerak ke arah yang menguntungkan, lapisan cepat akan memulakan pengesanan dan mengetatkan kedudukan hentian; apabila harga berpatah balik, kedudukan hentian lapisan perlahan dapat mengelakkan hentian terlalu awal.

Khususnya, jarak hentian untuk lapisan pantas adalah 0.5 kali 5 ATR kitaran, dan jarak hentian untuk lapisan perlahan adalah 3 kali 10 ATR kitaran. Ia menghasilkan isyarat beli apabila lapisan pantas menembusi lapisan perlahan ke atas; ia menghasilkan isyarat jual apabila lapisan pantas jatuh ke bawah dan menembusi lapisan perlahan. Garis hentian juga dikemas kini dalam masa nyata dan digambar di bawah kurva harga.

Analisis kelebihan

Kelebihan terbesar strategi ini ialah anda boleh menyesuaikan kedudukan hentian secara dinamik, dengan syarat anda menjamin hentian, untuk mendapatkan keuntungan maksimum. Berbanding dengan jarak hentian tetap, garis hentian ATR dinamik dapat disesuaikan dengan tahap turun naik pasaran, mengurangkan kemungkinan penghentian diaktifkan.

Di samping itu, reka bentuk ATR dua lapisan dapat mengimbangi sensitiviti penghentian kerosakan. Lapisan pantas bertindak balas dengan cepat, dan lapisan perlahan dapat menyaring kebisingan jangka pendek untuk mengelakkan penghentian terlalu awal.

Analisis risiko

Risiko utama strategi ini adalah apakah seting jarak terhad adalah munasabah. Jika ATR seting terlalu besar, stop loss tidak akan mengikuti harga. Jika ATR seting terlalu kecil, ia mudah terhalang oleh kebisingan jangka pendek. Oleh itu, parameter perlu disesuaikan dengan ciri-ciri pelbagai jenis.

Di samping itu, dalam keadaan pemulihan, nilai ATR lebih kecil, lebih dekat dengan garis hentian, mudah dihentikan dengan kerap. Oleh itu, strategi ini lebih sesuai untuk jenis yang mempunyai kadar turun naik tertentu.

Arah pengoptimuman

Anda boleh mencuba pelbagai kombinasi parameter kitaran ATR untuk mencari keseimbangan terbaik. Anda juga boleh mempertimbangkan untuk menggunakannya bersama-sama dengan indikator lain, seperti indikator trend yang menentukan tahap pasaran, untuk menyesuaikan ukuran kelipatan ATR secara dinamik.

Kemungkinan untuk menggantikan ATR juga boleh dikaji. Menukar ATR kepada nilai indikator seperti DKVOL, HRANGE atau peratusan ATR, mungkin dapat memperoleh kesan hentikan kerugian yang lebih baik.

ringkaskan

Strategi ini direka bentuk berdasarkan ATR, mekanisme pengesanan dinamik dua hala, untuk mendapatkan keuntungan yang lebih besar dan untuk mengelakkan kerugian yang berlebihan. Ia sesuai untuk pengguna yang mempunyai keperluan yang lebih tinggi untuk menangguhkan kerugian.

Kod sumber strategi
/*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")