Strategi penyesuaian henti untung dan henti rugi dinamik berdasarkan ATR dan EMA

ATR EMA
Tarikh penciptaan: 2024-05-28 14:15:56 Akhirnya diubah suai: 2024-05-28 14:15:56
Salin: 1 Bilangan klik: 835
1
fokus pada
1617
Pengikut

Strategi penyesuaian henti untung dan henti rugi dinamik berdasarkan ATR dan EMA

Gambaran keseluruhan

Strategi ini menggunakan ATR (rata-rata gelombang sebenar) dan EMA (rata-rata pergerakan indeks) untuk menyesuaikan diri dengan pergerakan pasaran dengan menyesuaikan titik stop loss secara dinamik. Gagasan utama strategi ini adalah: menggunakan indikator ATR untuk mengukur kadar turun naik pasaran dan menetapkan titik stop loss berdasarkan ukuran kadar turun naik; dan menggunakan indikator EMA untuk menentukan arah perdagangan.

Prinsip Strategi

  1. Mengira ukuran ATR untuk mengukur kadar turun naik pasaran.
  2. Berdasarkan nilai ATR dan parameter kelipatan input, titik berhenti dinamik dikira.
  3. Menggunakan indikator EMA sebagai syarat penapisan, buka lebih banyak pesanan apabila harga menembusi EMA ke atas dan buka kosong apabila harga menembusi EMA ke bawah.
  4. Apabila memegang kedudukan, sentiasa menyesuaikan kedudukan hentian hentian mengikut perubahan harga dan perubahan titik hentian hentian dinamik.
  5. Apabila harga menyentuh titik hentian dinamik, anda akan menutup dan membuka semula kedudukan.

Kelebihan Strategik

  1. Adaptif: Dengan menyesuaikan titik hentian hentian secara dinamik, strategi dapat menyesuaikan diri dengan perubahan kadar turun naik dalam keadaan pasaran yang berbeza, mengawal risiko.
  2. Keupayaan untuk mengesan trend: Menggunakan petunjuk EMA untuk menentukan arah perdagangan, dapat menangkap trend pasaran dengan berkesan.
  3. Parameter boleh disesuaikan: Dengan menyesuaikan parameter kitaran dan kelipatan ATR, risiko dan keuntungan strategi dapat dikawal secara fleksibel.

Risiko Strategik

  1. Risiko tetapan parameter: Tetapan parameter kitaran ATR dan perkalian secara langsung mempengaruhi prestasi strategi. Tetapan parameter yang tidak betul boleh menyebabkan strategi gagal.
  2. Risiko pasaran goyah: Dalam pasaran goyah, pembukaan kedudukan kosong yang kerap boleh menyebabkan kehilangan slippage dan caj yang lebih besar.
  3. Risiko trend reversal: Strategi mungkin mengalami kerugian berturut-turut apabila trend pasaran berbalik.

Arah pengoptimuman strategi

  1. Memperkenalkan lebih banyak petunjuk teknikal seperti MACD, RSI dan lain-lain untuk meningkatkan ketepatan penilaian trend.
  2. Mengoptimumkan kaedah pengiraan titik stop loss, seperti memperkenalkan stop bergerak, stop rasio dinamik dan lain-lain.
  3. Optimumkan parameter untuk mencari kombinasi parameter ATR dan perkalian terbaik untuk meningkatkan kestabilan dan keuntungan strategi.
  4. Tambah modul pengurusan kedudukan, menyesuaikan saiz kedudukan secara dinamik mengikut turun naik pasaran dan tahap risiko akaun.

ringkaskan

Strategi ini menggunakan kedua-dua penunjuk ATR dan EMA, untuk menyesuaikan diri dengan perubahan kadar turun naik pasaran dengan menyesuaikan titik stop loss secara dinamik, dan menggunakan penunjuk EMA untuk menilai arah perdagangan. Strategi ini mempunyai kemampuan penyesuaian dan trend yang kuat, tetapi mungkin menghadapi risiko tertentu ketika menetapkan parameter, pasaran yang bergolak dan perubahan trend.

Kod sumber strategi
/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title='UT MB&SS Bot', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')

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

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATR_trailing_stop[1], 0) and src < nz(xATR_trailing_stop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATR_trailing_stop[1], 0) and src > nz(xATR_trailing_stop[1], 0) ? 1 : iff_3

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

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

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

barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop

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

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))

if pos == 1
    strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
    strategy.exit('Exit Short', 'UT Short', stop=stop_level)





if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)