Strategi adaptif stop-profit dan stop-loss dinamis berdasarkan ATR dan EMA

ATR EMA
Tanggal Pembuatan: 2024-05-28 14:15:56 Akhirnya memodifikasi: 2024-05-28 14:15:56
menyalin: 1 Jumlah klik: 835
1
fokus pada
1617
Pengikut

Strategi adaptif stop-profit dan stop-loss dinamis berdasarkan ATR dan EMA

Ringkasan

Strategi ini menggunakan dua indikator ATR (Average True Range) dan EMA (Index Moving Average) untuk beradaptasi dengan pergerakan pasar dengan menyesuaikan stop loss point secara dinamis. Gagasan utama strategi ini adalah: menggunakan indikator ATR untuk mengukur volatilitas pasar dan mengatur stop loss point sesuai dengan ukuran volatilitas.

Prinsip Strategi

  1. Perhitungan indikator ATR untuk mengukur besarnya volatilitas pasar.
  2. Berdasarkan nilai ATR dan parameter kelipatan input, hitunglah stop loss dinamis.
  3. Menggunakan indikator EMA sebagai kondisi penyaringan, buka overorder saat harga menembus EMA ke atas dan buka kosong saat harga menembus EMA ke bawah.
  4. Ketika memegang posisi, terus menyesuaikan posisi stop loss sesuai dengan perubahan harga dan perubahan titik stop loss dinamis.
  5. Ketika harga mencapai titik stop loss dinamis, posisi ditutup dan posisi dibuka kembali.

Keunggulan Strategis

  1. Adaptif: Dengan mengadaptasi stop loss point secara dinamis, strategi dapat beradaptasi dengan perubahan volatilitas dalam berbagai kondisi pasar, mengendalikan risiko.
  2. Trend tracking: Menggunakan indikator EMA untuk menilai arah perdagangan, dapat menangkap tren pasar secara efektif.
  3. Parameter yang dapat disesuaikan: Dengan menyesuaikan parameter siklus dan kelipatan ATR, risiko dan keuntungan dari strategi dapat dikontrol secara fleksibel.

Risiko Strategis

  1. Risiko pengaturan parameter: pengaturan parameter ATR dan perkalian dapat secara langsung mempengaruhi kinerja strategi, dan pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan strategi.
  2. Risiko pasar yang bergoyang: Dalam pasar yang bergoyang, sering membuka posisi terbuka dapat menyebabkan slippage yang lebih besar dan kehilangan biaya.
  3. Trend Reversal Risk: Strategi dapat mengalami kerugian beruntun ketika tren pasar berbalik.

Arah optimasi strategi

  1. Memperkenalkan lebih banyak indikator teknis seperti MACD, RSI, dan lain-lain untuk meningkatkan akurasi penilaian tren.
  2. Metode penghitungan stop loss optimasi stop loss point, seperti dengan mengintegrasikan mobile stop, dynamic ratio stop, dan lain-lain.
  3. Optimalkan parameter untuk menemukan kombinasi optimal dari siklus ATR dan parameter perkalian untuk meningkatkan stabilitas dan profitabilitas strategi.
  4. Tambahkan modul manajemen posisi untuk menyesuaikan ukuran posisi secara dinamis sesuai dengan volatilitas pasar dan tingkat risiko akun.

Meringkaskan

Strategi ini menggunakan kedua indikator ATR dan EMA untuk beradaptasi dengan perubahan volatilitas pasar dengan menyesuaikan titik stop loss secara dinamis, dan menggunakan indikator EMA untuk menilai arah perdagangan. Strategi ini memiliki kemampuan beradaptasi dan trend tracking yang kuat, tetapi mungkin menghadapi risiko tertentu saat pengaturan parameter, pasar yang bergoyang, dan pergeseran tren.

Kode 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)