Sumber daya yang dimuat... Pemuatan...

Strategi Adaptif Take Profit dan Stop Loss Dinamis berbasis ATR dan EMA

Penulis:ChaoZhang, Tanggal: 2024-05-28 14:15:56
Tag:ATREMA

img

Gambaran umum

Strategi ini menggunakan dua indikator, ATR (Average True Range) dan EMA (Exponential Moving Average), untuk menyesuaikan secara dinamis tingkat take profit dan stop loss untuk beradaptasi dengan volatilitas pasar. Ide utama dari strategi ini adalah menggunakan indikator ATR untuk mengukur volatilitas pasar dan menetapkan tingkat take profit dan stop loss berdasarkan besarnya volatilitas. Pada saat yang sama, indikator EMA digunakan untuk menentukan arah perdagangan. Ketika harga melanggar EMA, posisi panjang dibuka, dan ketika harga melanggar EMA, posisi pendek dibuka. Strategi ini dapat secara otomatis menyesuaikan tingkat take profit dan stop loss sesuai dengan perubahan volatilitas pasar, sehingga mencapai tujuan kontrol risiko dinamis.

Prinsip Strategi

  1. Menghitung indikator ATR untuk mengukur besarnya volatilitas pasar.
  2. Menghitung tingkat stop loss dinamis berdasarkan nilai ATR dan parameter multipel input.
  3. Gunakan indikator EMA sebagai kondisi filter. Buka posisi panjang ketika harga melanggar EMA, dan buka posisi pendek ketika harga melanggar EMA.
  4. Sementara memegang posisi, terus menyesuaikan tingkat mengambil keuntungan dan stop loss berdasarkan perubahan harga dan perubahan tingkat stop loss dinamis.
  5. Ketika harga mencapai level stop loss dinamis, tutup posisi dan buka posisi reverse.

Keuntungan Strategi

  1. Kemampuan beradaptasi yang kuat: Dengan menyesuaikan secara dinamis tingkat mengambil keuntungan dan stop loss, strategi dapat beradaptasi dengan perubahan volatilitas di bawah kondisi pasar yang berbeda dan mengendalikan risiko.
  2. Kemampuan mengikuti tren yang kuat: Indikator EMA digunakan untuk menentukan arah perdagangan, yang dapat secara efektif menangkap tren pasar.
  3. Parameter yang dapat disesuaikan: Dengan menyesuaikan periode ATR dan beberapa parameter, risiko dan pengembalian strategi dapat dikontrol secara fleksibel.

Risiko Strategi

  1. Pengaturan risiko parameter: Pengaturan periode ATR dan beberapa parameter akan secara langsung mempengaruhi kinerja strategi. Pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan strategi.
  2. Risiko pasar berosilasi: Di pasar berosilasi, pembukaan dan penutupan posisi yang sering dapat menyebabkan penurunan besar dan kerugian biaya transaksi.
  3. Risiko pembalikan tren: Ketika tren pasar berbalik, strategi dapat mengalami kerugian berturut-turut.

Arah Optimasi Strategi

  1. Memperkenalkan lebih banyak indikator teknis, seperti MACD dan RSI, untuk meningkatkan akurasi penilaian tren.
  2. Mengoptimalkan metode perhitungan tingkat mengambil keuntungan dan stop loss, seperti memperkenalkan metode stop loss trailing dan stop loss rasio dinamis.
  3. Mengoptimalkan parameter untuk menemukan kombinasi terbaik dari periode ATR dan beberapa parameter untuk meningkatkan stabilitas dan profitabilitas strategi.
  4. Tambahkan modul manajemen posisi untuk menyesuaikan ukuran posisi secara dinamis berdasarkan volatilitas pasar dan tingkat risiko akun.

Ringkasan

Strategi ini menggunakan indikator ATR dan EMA untuk secara dinamis menyesuaikan tingkat take profit dan stop loss untuk beradaptasi dengan perubahan volatilitas pasar, sementara menggunakan indikator EMA untuk menentukan arah perdagangan. Strategi ini memiliki kemampuan beradaptasi dan mengikuti tren yang kuat, tetapi dapat menghadapi risiko tertentu dalam pengaturan parameter, pasar osilasi, dan pembalikan tren.


/*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)

Berkaitan

Lebih banyak