Strategi penjejakan henti kerugian dinamik berdasarkan ATR dan SMA


Tarikh penciptaan: 2024-03-11 11:55:21 Akhirnya diubah suai: 2024-03-11 11:55:21
Salin: 0 Bilangan klik: 370
1
fokus pada
1166
Pengikut

Strategi penjejakan henti kerugian dinamik berdasarkan ATR dan SMA

Gambaran keseluruhan

Strategi ini menggabungkan indikator ATR (Average True Range) dan SMA (Simple Moving Average) untuk mewujudkan sistem perdagangan dengan pengesanan stop loss dinamik. Apabila harga dibuka di atas SMA, dan pada masa yang sama menetapkan stop loss dinamik berdasarkan ATR, harga stop loss akan terus meningkat dengan kenaikan harga.

Prinsip Strategi

  1. Hitung SMA 50 hari, buka lebih banyak apabila harga penutupan lebih besar daripada SMA 50 hari.
  2. Hitung indikator ATR, ATR kitaran 10, kalikan dengan nilai kritikal ((default 3) untuk mendapatkan margin stop loss nLoss。
  3. Hitung harga hentian dinamik xATRTrailingStop, dengan nilai awal 0 ◦
    • Apabila kedua-dua harga penutupan dan harga penutupan sebelumnya lebih besar daripada harga penutupan sebelumnya, harga penutupan baru adalah nilai yang lebih besar daripada harga penutupan sebelumnya dan harga penutupan-nLoss.
    • Apabila harga penutupan dan harga penutupan sebelumnya adalah lebih kecil daripada harga penutupan sebelumnya, harga penutupan baru adalah nilai yang lebih kecil daripada harga penutupan sebelumnya dan harga penutupan + nLoss.
    • Dalam kes lain, harga hentian baru adalah ((harga tutup-nLoss) atau ((harga tutup + nLoss)
  4. Apabila harga penutupan jatuh di bawah harga hentian dinamik.
  5. Titik hentian ditandakan dengan warna yang berbeza, hentian berbilang kepala adalah hijau, hentian kepala kosong adalah merah, dan lain-lain adalah biru.

Analisis kelebihan

  1. Mekanisme berhenti dinamik dapat melindungi keuntungan dalam keadaan trend dan mengurangkan risiko penarikan balik. Berbanding dengan berhenti tetap, berhenti dinamik lebih fleksibel dan dapat menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Jarak hentian terhad berdasarkan pengukuran ATR, ATR dapat mencerminkan saiz turun naik pasaran dengan baik, oleh itu jarak hentian terhad akan disesuaikan secara automatik dengan turun naik harga dalam keadaan terkini, meningkatkan ruang hentian apabila turun naik, mengurangkan ruang hentian apabila turun naik.
  3. Menggunakan SMA sebagai asas penilaian trend, dapat menangkap keadaan trend yang agak jelas. Dengan membuat lebih banyak pesanan di atas SMA, anda boleh campur tangan pada awal trend dan mendapat ruang keuntungan yang lebih besar.
  4. Membolehkan pengguna untuk menetapkan parameter ATR dan parameter nilai utama, dan fleksibiliti untuk menyesuaikan parameter strategi untuk menyesuaikan diri dengan ciri-ciri pelbagai jenis dan tempoh.

Analisis risiko

  1. Dalam keadaan trend yang tidak jelas atau bergolak, strategi ini mungkin berlaku dalam keadaan yang sering membuka kedudukan kosong, yang menyebabkan peningkatan kos perdagangan dan penurunan keuntungan.
  2. Strategi ini hanya menggunakan logik ganda, tidak dapat memperoleh keuntungan dalam trend menurun, menghadapi risiko pasaran satu sisi. Anda boleh mempertimbangkan untuk menambah logik shorting, untuk melakukan perdagangan dua hala.
  3. Titik hentian adalah berdasarkan pengiraan ATR, di mana ruang hentian boleh menjadi terlalu besar, menyebabkan risiko meningkat. Anda boleh mempertimbangkan untuk menetapkan margin hentian maksimum untuk mengawal kerugian maksimum dalam satu perdagangan.
  4. Pilihan parameter yang tidak betul boleh menyebabkan strategi tidak berfungsi. Sebagai contoh, pemilihan kitaran ATR yang terlalu kecil boleh menyebabkan stop loss terlalu sensitif dan sering dipicu; terlalu besar mungkin tidak dapat menghentikan kerugian tepat pada masanya, meningkatkan kerugian.

Arah pengoptimuman

  1. Menambah logik shorting, anda juga boleh mendapat keuntungan dalam trend menurun, meningkatkan fleksibiliti strategi. Anda boleh membuka pesanan kosong apabila harga jatuh di bawah SMA, juga menggunakan logik stop loss dinamik.
  2. Memperkenalkan pengurusan kedudukan kosong, menyesuaikan saiz kedudukan mengikut kekuatan trend. Meningkatkan kedudukan apabila trend kuat, meningkatkan keuntungan; mengurangkan kedudukan apabila trend lemah, mengawal risiko.
  3. Mengoptimumkan logik stop loss, menetapkan marjin maksimum untuk mencegah kerugian yang terlalu besar dalam keadaan yang melampau. Anda juga boleh mempertimbangkan untuk menetapkan titik berhenti, secara aktif melonggarkan kedudukan setelah mencapai keuntungan yang dijangkakan, dan bukannya memegangnya sehingga terhenti.
  4. Optimumkan parameter, cari tetapan parameter terbaik dengan menjelajah kombinasi parameter yang berbeza. Kaedah pengoptimuman pintar seperti algoritma genetik boleh digunakan untuk meningkatkan kecekapan pengoptimuman.
  5. Pertimbangkan untuk menambahkan lebih banyak syarat penapis, seperti jumlah dagangan, kadar turun naik dan lain-lain untuk menilai lebih baik trend dan risiko, meningkatkan kebolehpercayaan isyarat.

ringkaskan

Strategi ini berdasarkan ATR dan SMA menunjukkan sistem perdagangan penjejakan berhenti yang dinamik, yang dapat menyesuaikan kedudukan berhenti secara automatik dalam keadaan trend, untuk melindungi keuntungan dan mengawal risiko. Logik strategi jelas, kelebihan jelas, tetapi terdapat juga beberapa batasan dan titik risiko. Dengan pengoptimuman dan penambahbaikan yang munasabah, seperti memasukkan logik kosong, mengoptimumkan pengurusan kedudukan, menetapkan berhenti maksimum, dan lain-lain, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi. Dalam aplikasi sebenar, anda perlu menyesuaikan parameter strategi secara fleksibel mengikut jenis dan tempoh perdagangan yang berbeza, dan mengawal risiko dengan ketat.

Kod sumber strategi
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")