Strategi stop loss dinamis pelacakan tren kuantitatif panjang dan pendek

ATR EMA CROSSOVER DYNAMIC STOP-LOSS
Tanggal Pembuatan: 2025-04-03 11:34:48 Akhirnya memodifikasi: 2025-04-03 11:34:48
menyalin: 0 Jumlah klik: 447
2
fokus pada
319
Pengikut

Strategi stop loss dinamis pelacakan tren kuantitatif panjang dan pendek Strategi stop loss dinamis pelacakan tren kuantitatif panjang dan pendek

Ringkasan

Ini adalah strategi pelacakan tren multi-area yang didasarkan pada rentang rata-rata pergerakan riil (ATR) dan rata-rata pergerakan indeks (EMA). Strategi ini memungkinkan penangkapan dan manajemen risiko yang akurat dari tren pasar melalui stop loss dan penilaian tren yang dinamis.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini mencakup langkah-langkah penting berikut:

  1. Menggunakan indikator ATR untuk menghitung stop loss dinamis
  2. Hubungan antara EMA dan arah tren harga
  3. Sinyal perdagangan ditentukan oleh posisi relatif harga terhadap titik stop loss
  4. Pemetaan Heikin Ashi untuk identifikasi sinyal optimasi selektif

Logika komputasi utama:

  • Stop loss dinamis = harga saat ini ± (ATR * faktor sensitif)
  • Pengadilan tren berdasarkan persilangan EMA dengan titik henti
  • Sinyal perdagangan dihasilkan ketika harga melewati titik stop loss dan EMA melintasi

Keunggulan Strategis

  1. Manajemen risiko dinamis: ATR beradaptasi dengan hitungan stop loss, menyesuaikan secara real-time dengan volatilitas pasar
  2. Trend Tracking Accuracy: EMA bereaksi cepat terhadap perubahan harga, menangkap titik balik tren
  3. Fleksibel: dapat menyesuaikan siklus ATR dan faktor sensitivitas
  4. Opsional Heikhan Achitra untuk lebih mengoptimalkan identifikasi sinyal
  5. Low-frequency trading, mengurangi biaya transaksi
  6. Beradaptasi dengan berbagai pasar dan varietas

Risiko Strategis

  1. Pasar yang bergoyang dapat menghasilkan sinyal yang salah
  2. Setting parameter yang tidak tepat dapat menyebabkan overtrading
  3. Tidak mempertimbangkan faktor-faktor mendasar dan dampak insiden yang tidak terduga
  4. Ada perbedaan antara deteksi dan hard disk

Saran pengendalian risiko:

  • Parameter optimasi, menurunkan faktor sensitivitas
  • Kombinasi dengan indikator lain
  • Pengaturan Stop Loss dan Manajemen Posisi
  • Pemantauan berkelanjutan dan penyesuaian dinamis

Arah optimasi strategi

  1. Masukkan parameter optimasi dinamis algoritma pembelajaran mesin
  2. Menambahkan verifikasi multi-periode
  3. Kombinasi dengan Indikator Teknis Lainnya
  4. Mengembangkan mekanisme pilihan parameter adaptif
  5. Menambahkan modul penyesuaian risiko

Tujuan optimasi: meningkatkan stabilitas strategi, mengurangi penarikan, dan meningkatkan efisiensi keuntungan

Meringkaskan

Ini adalah strategi pelacakan tren dinamis berdasarkan ATR dan EMA, yang memungkinkan partisipasi pasar yang relatif stabil melalui mekanisme stop loss yang fleksibel dan penilaian tren. Strategi ini memiliki karakteristik adaptasi dan manajemen risiko yang baik, tetapi masih perlu terus dioptimalkan dan diverifikasi.

Kode Sumber Strategi
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-02 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=6
strategy("ducanhmaster v1", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
a = input.int(1, title="Key Value. 'This changes the sensitivity'")
c = input.int(10, title="ATR Period")
h = input.bool(false, title="Signals from Heikin Ashi Candles")

xATR  = ta.atr(c)
nLoss = a * xATR

// Compute Heikin Ashi values
heikinAshiOpen = (open + close) / 2
heikinAshiClose = (open + high + low + close) / 4
heikinAshiHigh = math.max(high, math.max(heikinAshiOpen, heikinAshiClose))
heikinAshiLow = math.min(low, math.min(heikinAshiOpen, heikinAshiClose))

src = h ? heikinAshiClose : close

// Declare xATRTrailingStop as a float variable and initialize it with 'na'
var float xATRTrailingStop = na
if (src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0))
    xATRTrailingStop := math.max(nz(xATRTrailingStop[1]), src - nLoss)
else if (src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0))
    xATRTrailingStop := math.min(nz(xATRTrailingStop[1]), src + nLoss)
else
    xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss

// Declare 'pos' as an integer variable instead of leaving it undefined
var int pos = na
if (src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0))
    pos := 1
else if (src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0))
    pos := -1
else
    pos := nz(pos[1], 0)

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

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop
barsell = src < xATRTrailingStop

// Plot buy/sell signals on the chart
plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.white, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.white, size=size.tiny)

// Change bar color when buy/sell conditions are met
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

// Enter a Long trade when a buy signal appears and exit when a sell signal appears
if (buy)
    strategy.entry("long", strategy.long)

if (sell)
    strategy.close("long")