Strategi Hentian Pengangkutan Dinamik Berdasarkan ATR dan SMA

Penulis:ChaoZhang, Tarikh: 2024-03-11 11:55:21
Tag:

img

Ringkasan

Strategi ini menggabungkan penunjuk ATR (Average True Range) dan penunjuk SMA (Simple Moving Average) untuk melaksanakan sistem perdagangan stop trailing dinamik. Apabila harga di atas SMA, ia membuka kedudukan panjang dan menetapkan stop loss dinamik berdasarkan ATR. Harga stop loss akan terus meningkat apabila harga meningkat. Apabila harga jatuh di bawah harga stop loss dinamik, kedudukan ditutup. Idea utama strategi ini adalah untuk mengunci keuntungan dan mengurangkan penarikan di pasaran trend menggunakan stop loss dinamik.

Prinsip Strategi

  1. Hitung SMA 50 hari. Apabila harga penutupan lebih besar daripada SMA 50 hari, buka kedudukan panjang.
  2. Hitung penunjuk ATR dengan tempoh 10, dikalikan dengan nilai kunci (pedefault adalah 3) untuk mendapatkan julat stop loss nLoss.
  3. Mengira harga stop loss dinamik xATRTrailingStop, dengan nilai awal 0.
    • Apabila harga penutupan dan harga penutupan terdahulu sama-sama lebih tinggi daripada harga stop loss terdahulu, harga stop loss baru adalah yang lebih besar daripada harga stop loss terdahulu dan (harga penutupan - nLoss).
    • Apabila harga penutupan dan harga penutupan sebelumnya sama-sama lebih rendah daripada harga stop loss sebelumnya, harga stop loss baru adalah yang lebih kecil daripada harga stop loss sebelumnya dan (harga penutupan + nLoss).
    • Dalam kes lain, harga stop loss baru adalah (harga penutupan - nLoss) atau (harga penutupan + nLoss).
  4. Apabila harga penutupan jatuh di bawah harga stop loss dinamik, tutup kedudukan.
  5. Titik stop loss ditandakan dengan warna yang berbeza: hijau untuk stop loss panjang, merah untuk stop loss pendek, dan biru untuk kes lain.

Analisis Kelebihan

  1. Mekanisme stop loss dinamik boleh melindungi keuntungan dan mengurangkan risiko penarikan di pasaran trend. Berbanding dengan stop loss tetap, stop loss dinamik lebih fleksibel dan boleh menyesuaikan diri dengan keadaan pasaran yang berbeza.
  2. Jarak stop loss dikira berdasarkan penunjuk ATR. ATR boleh mencerminkan saiz turun naik pasaran, jadi jarak stop loss akan menyesuaikan diri secara automatik mengikut turun naik keadaan pasaran baru-baru ini. Ia meningkatkan ruang stop loss apabila turun naik meningkat dan mengurangkan ruang stop loss apabila turun naik menurun.
  3. Menggunakan SMA sebagai asas penilaian trend boleh menangkap pasaran trend yang agak jelas. Pembukaan kedudukan panjang di atas SMA boleh campur tangan pada peringkat awal trend dan bertujuan untuk ruang keuntungan yang lebih besar.
  4. Membolehkan pengguna menetapkan tempoh ATR dan parameter nilai utama, yang boleh menyesuaikan parameter strategi dengan fleksibel untuk menyesuaikan diri dengan ciri-ciri pelbagai jenis dan kitaran.

Analisis Risiko

  1. Dalam pasaran yang tidak jelas atau berayun, strategi ini mungkin mengalami pembukaan dan penutupan kedudukan yang kerap, yang membawa kepada peningkatan kos urus niaga dan keuntungan yang berkurangan.
  2. Strategi ini hanya mempunyai logik panjang dan tidak boleh mendapat keuntungan dalam trend menurun, menghadapi risiko pasaran satu sisi.
  3. Titik stop loss adalah berdasarkan pengiraan ATR. Apabila pasaran turun naik secara ganas, ruang stop loss mungkin terlalu besar, yang membawa kepada peningkatan risiko. Pertimbangkan untuk menetapkan julat stop loss maksimum untuk mengawal kerugian maksimum satu urus niaga.
  4. Pemilihan parameter yang tidak betul boleh menyebabkan kegagalan strategi. Sebagai contoh, jika tempoh ATR terlalu kecil, ia boleh membawa kepada kerugian berhenti yang terlalu sensitif dan mencetuskan kerap; jika terlalu besar, ia mungkin tidak menghentikan kerugian dalam masa dan memperkuat kerugian.

Arah pengoptimuman

  1. Tambah logik pendek untuk keuntungan dalam trend menurun dan meningkatkan kebolehan menyesuaikan diri strategi.
  2. Memperkenalkan pengurusan kedudukan panjang dan pendek untuk menyesuaikan saiz kedudukan mengikut kekuatan trend. Meningkatkan kedudukan apabila trend kuat untuk meningkatkan pulangan; mengurangkan kedudukan apabila trend lemah untuk mengawal risiko.
  3. Mengoptimumkan logik stop loss dan menetapkan julat stop loss maksimum untuk mengelakkan kerugian berlebihan dalam situasi yang melampau. Pada masa yang sama, pertimbangkan untuk menetapkan titik mengambil keuntungan untuk menutup kedudukan secara aktif apabila pulangan yang dijangkakan dicapai, dan bukannya memegangnya sehingga stop loss dicetuskan.
  4. Mengoptimumkan parameter dengan melintasi kombinasi parameter yang berbeza untuk mencari tetapan parameter yang terbaik.
  5. Pertimbangkan untuk menambah lebih banyak syarat penapisan, seperti jumlah dagangan dan penunjuk turun naik, untuk menilai lebih baik trend dan risiko dan meningkatkan kebolehpercayaan isyarat.

Ringkasan

Strategi ini melaksanakan sistem perdagangan stop trailing dinamik berdasarkan penunjuk ATR dan SMA, yang dapat menyesuaikan kedudukan stop loss secara automatik di pasaran trend untuk melindungi keuntungan dan mengawal risiko. Logik strategi jelas dan mempunyai kelebihan yang jelas, tetapi juga mempunyai beberapa batasan dan titik risiko. Melalui pengoptimuman dan penambahbaikan yang munasabah, seperti menambah logika pendek, mengoptimumkan pengurusan kedudukan, menetapkan kerugian berhenti maksimum, dan lain-lain, ketahanan dan keuntungan strategi dapat ditingkatkan lagi. Dalam aplikasi praktikal, adalah perlu untuk menyesuaikan parameter strategi dengan fleksibel mengikut pelbagai jenis perdagangan dan kitaran, dan mengawal risiko dengan ketat. Secara umum, strategi ini memberikan idea yang layak untuk perdagangan kuantitatif dan layak untuk penerokaan dan pengoptimuman lanjut.


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

Lebih lanjut