Strategi hentian jejak ES berdasarkan ATR


Tarikh penciptaan: 2024-01-12 14:52:23 Akhirnya diubah suai: 2024-01-12 14:52:23
Salin: 3 Bilangan klik: 673
1
fokus pada
1617
Pengikut

Strategi hentian jejak ES berdasarkan ATR

Gambaran keseluruhan

Strategi ini adalah strategi berhenti mengikut yang digunakan untuk E-mini S&P500 berjangka ((ES)). Ia menggunakan ATR 10 hari sebagai rujukan untuk menetapkan garis berhenti multi-kepala dan kosong dengan 3 kali ATR sebagai julat berhenti. Strategi ini menilai trend melalui perubahan arah garis ATR dan menghasilkan isyarat masuk pada titik perubahan trend.

Prinsip Strategi

Strategi ini menggunakan hl2 sebagai sumber harga. Pertama, ia mengira ATR 10 hari dan memberi pengguna pilihan sama ada untuk mengira ATR menggunakan kaedah SMA atau fungsi ATR terbina dalam. Selepas mengira ATR, tambahkan 3 kali ATR ke bawah sebagai julat. Kedua-dua garis julat adalah garis stop loss.

Kaedah untuk menilai trend adalah, apabila harga melebihi sempadan atas, maka bermulut; apabila harga jatuh ke bawah sempadan, maka berpusing. Apabila harga kembali masuk ke dalam julat, maka pembalikan trend akan disahkan. Pada masa ini, jika berputar lebih banyak, generate sinyal masuk bermulut; jika berputar lebih banyak, generate sinyal masuk berpusing.

Selepas masuk, garis hentian multihead disetel ke bawah 1 titik di sempadan atas, dan garis hentian kepala kosong disetel ke atas 1 titik di sempadan bawah, untuk perlindungan kebocoran yang tajam.

Kelebihan Strategik

  1. Menggunakan ATR dapat menyesuaikan diri secara automatik dengan perubahan kadar turun naik pasaran, mengurangkan kemungkinan tercetus stop loss
  2. Kaedah untuk mengesan trend adalah mudah dan berkesan, mengelakkan risiko menembusi dan menembusi.
  3. Hentikan kerugian mengikut jaminan perlindungan keuntungan, mengelakkan kerugian selepas keuntungan

Analisis risiko

  1. Tetapan parameter ATR yang tidak betul boleh menyebabkan terhad atau terlalu kecil
  2. Kemerosotan yang tidak normal mungkin berlaku apabila turun naik turun naik
  3. TAILING Stop loss mungkin terlalu konservatif dan gagal untuk mengekalkan trend

Arah pengoptimuman

  1. Anda boleh mempertimbangkan untuk mengoptimumkan parameter ATR dalam kombinasi dengan indikator kadar turun naik
  2. Anda boleh menguji pelbagai algoritma tailing, seperti tailing peratusan baki.
  3. Ia boleh digabungkan dengan indikator trend untuk menyaring isyarat masuk, mengelakkan masuk bukan utama

ringkaskan

Strategi ini secara keseluruhannya merupakan strategi pengesanan trend yang lebih umum. Ia menyelesaikan masalah sukar menentukan ruang berhenti, mengurangkan risiko melalui penyesuaian ATR dinamik. Pada masa yang sama, penutupan kehilangan untuk melindungi keuntungan. Tetapi parameter ATR, algoritma berhenti kehilangan dan sebagainya masih mempunyai ruang untuk pengoptimuman.

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