Strategi Trailing Stop berbasis ATR untuk ES

Penulis:ChaoZhang, Tanggal: 2024-01-12 14:52:23
Tag:

img

Gambaran umum

Strategi ini adalah strategi trailing stop yang diterapkan pada E-mini S&P500 futures (ES). Strategi ini menggunakan ATR 10 hari sebagai referensi dan menetapkan rentang stop loss menjadi 3 kali ATR untuk mendefinisikan garis stop panjang dan pendek. Strategi ini menilai tren dengan perubahan arah garis ATR dan menghasilkan sinyal masuk pada titik balik tren. Setelah dimasukkan, akan menyesuaikan garis stop loss secara real time untuk melacak pergerakan harga, melindungi keuntungan.

Logika Strategi

Strategi ini menggunakan hl2 sebagai sumber harga. Pertama-tama menghitung ATR 10 hari, dan memungkinkan pengguna memilih antara menggunakan metode SMA atau fungsi ATR bawaan untuk menghitung ATR. Setelah mendapatkan ATR, ia menambahkan 3 kali ATR ke atas dan ke bawah untuk membentuk kisaran. Dua garis kisaran adalah garis stop loss.

Metode untuk menilai tren adalah ketika harga melebihi batas atas, itu panjang; ketika harga melanggar batas bawah, itu pendek. Ketika harga kembali ke kisaran, itu mengkonfirmasi pembalikan tren. Pada saat ini, jika diputar dari pendek ke panjang, itu akan menghasilkan sinyal masuk panjang; jika diputar dari panjang ke pendek, itu akan menghasilkan sinyal masuk pendek.

Setelah masuk, garis stop loss panjang diatur ke batas atas dikurangi 1 tik, dan garis stop loss pendek diatur ke batas bawah ditambah 1 tik, menyusul untuk melindungi keuntungan.

Keuntungan

  1. Menggunakan ATR dapat secara otomatis beradaptasi dengan perubahan volatilitas pasar dan mengurangi kemungkinan stop loss dipicu.
  2. Metode pelacakan tren sederhana dan efektif untuk menghindari risiko mengejar puncak dan dasar.
  3. Trailing berhenti mengunci keuntungan dan menghindari memberikan kembali perdagangan yang menguntungkan.

Analisis Risiko

  1. Pengaturan parameter ATR yang tidak benar dapat menyebabkan kisaran stop loss terlalu besar atau terlalu kecil.
  2. Perubahan drastis dalam volatilitas dasar dapat menyebabkan pemicu stop loss yang tidak normal.
  3. PEMANGGUNGAN yang lambat mungkin terlalu konservatif untuk terus mengikuti tren.

Arahan Optimasi

  1. Pertimbangkan untuk mengoptimalkan parameter ATR dikombinasikan dengan metrik volatilitas.
  2. Uji algoritma trailing stop yang berbeda seperti persentase trailing stop dll.
  3. Filter sinyal masuk dikombinasikan dengan indikator tren untuk menghindari sinyal tren palsu.

Kesimpulan

Pada umumnya, ini adalah strategi trend following yang kuat. Ini memecahkan masalah menentukan rentang stop loss dan mengurangi risiko dengan menyesuaikan stop secara dinamis berdasarkan ATR. Pada saat yang sama, trailing stop lock in profit. Tapi masih ada ruang untuk mengoptimalkan parameter seperti periode ATR, stop algorithm dll. Dengan pengujian dan tuning lebih lanjut, strategi ini dapat menjadi strategi trend following dengan ketahanan tinggi.


/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("ATR Based Trailing Stop Strategy on ES! [v4]", overlay=true)

// Given ATR study
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Entry logic based on trend change
longCondition = trend == 1 and trend[1] == -1
shortCondition = trend == -1 and trend[1] == 1

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Trailing stop loss logic
// For long positions, trail 1 point below the up plot
longStopPrice = up - 1

// For short positions, trail 1 point above the dn plot
shortStopPrice = dn + 1

strategy.exit("Trailing Stop Long", "Long", trail_offset=longStopPrice)
strategy.exit("Trailing Stop Short", "Short", trail_offset=shortStopPrice)


Lebih banyak