Strategi stop loss dinamik penjejakan arah aliran panjang dan pendek kuantitatif

ATR EMA CROSSOVER DYNAMIC STOP-LOSS
Tarikh penciptaan: 2025-04-03 11:34:48 Akhirnya diubah suai: 2025-04-03 11:34:48
Salin: 0 Bilangan klik: 447
2
fokus pada
319
Pengikut

Strategi stop loss dinamik penjejakan arah aliran panjang dan pendek kuantitatif Strategi stop loss dinamik penjejakan arah aliran panjang dan pendek kuantitatif

Gambaran keseluruhan

Ini adalah strategi pengesanan trend multi-udara berdasarkan purata jangkauan pergerakan sebenar (ATR) dan purata bergerak indeks (EMA). Strategi ini menangkap dan menguruskan risiko dengan tepat mengenai trend pasaran melalui stop loss dan penilaian trend yang dinamik.

Prinsip Strategi

Prinsip-prinsip utama strategi ini merangkumi langkah-langkah penting berikut:

  1. Menggunakan ATR untuk mengira titik henti dinamik
  2. Keputusan EMA mengenai arah trend harga
  3. Menentukan isyarat dagangan dengan kedudukan harga berbanding titik henti
  4. Pengiktirafan isyarat pilihan yang dioptimumkan menggunakan peta Heikin Ashi

Logik pengiraan utama:

  • Titik hentian dinamik = harga semasa ± (ATR * faktor sensitif)
  • Penilaian trend berdasarkan persilangan EMA dengan titik hentian
  • Sinyal dagangan dihasilkan apabila harga menembusi titik berhenti dan EMA melintasi

Kelebihan Strategik

  1. Pengurusan risiko dinamik: ATR menyesuaikan diri untuk mengira titik henti, menyesuaikan diri dalam masa nyata mengikut turun naik pasaran
  2. Pengesanan trend: EMA bertindak balas dengan cepat terhadap perubahan harga, menangkap titik perubahan trend
  3. Fleksibiliti tinggi: kitaran ATR dan faktor sensitif yang boleh disesuaikan
  4. Peta pilihan Haiken Achilles untuk mengoptimumkan pengiktirafan isyarat
  5. Perdagangan frekuensi rendah, mengurangkan kos transaksi
  6. Beradaptasi dengan pelbagai pasaran dan pelbagai varieti

Risiko Strategik

  1. Pasaran yang bergolak mungkin menghasilkan isyarat yang salah
  2. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan
  3. Tidak mengambil kira faktor asas dan kesan kejadian yang tidak dijangka
  4. Terdapat perbezaan antara pengesan dan cakera keras

Cadangan kawalan risiko:

  • Parameter pengoptimuman, mengurangkan faktor sensitif
  • Gabungan dengan penunjuk lain
  • Tetapan Stop Loss dan Pengurusan Kedudukan
  • Pemantauan berterusan dan penyesuaian dinamik

Arah pengoptimuman strategi

  1. Masukkan parameter pengoptimuman dinamik algoritma pembelajaran mesin
  2. Tambah pengesahan kitaran masa
  3. Kombinasi Indeks Teknologi Lain
  4. Membangunkan mekanisme pilihan parameter yang sesuai
  5. Tambah modul penyesuaian risiko

Matlamat pengoptimuman: meningkatkan kestabilan strategi, mengurangkan penarikan balik, meningkatkan kecekapan keuntungan

ringkaskan

Ini adalah strategi pengesanan trend yang dinamik berdasarkan ATR dan EMA, yang mencapai penyertaan pasaran yang agak stabil melalui mekanisme penutupan kerugian dan penilaian trend yang fleksibel. Strategi ini mempunyai ciri-ciri adaptasi dan pengurusan risiko yang baik, tetapi masih memerlukan pengoptimuman dan pengesahan yang berterusan.

Kod 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")