Sumber daya yang dimuat... Pemuatan...

Han Yue - Tren Mengikuti Strategi Trading Berdasarkan Multiple EMA, ATR dan RSI

Penulis:ChaoZhang, Tanggal: 2024-05-14 16:37:52
Tag:EMAATRRSI

img

Gambaran umum

Strategi ini menggunakan tiga rata-rata bergerak eksponensial (EMA) dengan periode yang berbeda untuk menentukan tren pasar, dan menggabungkan Indeks Kekuatan Relatif (RSI) dan Rata-rata Jangkauan Benar (ATR) untuk mengidentifikasi titik masuk, stop-loss, dan tingkat mengambil keuntungan. Ketika harga menembus saluran yang dibentuk oleh tiga EMA dan RSI juga menembus rata-rata bergerak, strategi memicu sinyal masuk. ATR digunakan untuk mengontrol ukuran posisi dan menetapkan tingkat stop-loss, sementara rasio risiko-penghargaan (RR) digunakan untuk menentukan tingkat mengambil keuntungan. Keuntungan utama dari strategi ini terletak pada kesederhanaan dan efektivitasnya, karena dapat mengikuti tren pasar dan membatasi potensi kerugian melalui langkah-langkah manajemen risiko yang ketat.

Prinsip Strategi

  1. Menghitung tiga EMA dengan periode yang berbeda (jangka pendek, jangka menengah, dan jangka panjang) untuk menentukan tren pasar secara keseluruhan.
  2. Gunakan indikator RSI untuk mengkonfirmasi kekuatan dan keberlanjutan tren.
  3. Menghasilkan sinyal masuk berdasarkan hubungan antara harga dan saluran EMA, serta sinyal RSI: membuka posisi ke arah tren ketika harga menembus saluran EMA dan RSI juga menembus rata-rata bergerak.
  4. Menggunakan ATR untuk menentukan ukuran posisi dan tingkat stop-loss, mengendalikan eksposur risiko dari setiap perdagangan.
  5. Menetapkan tingkat mengambil keuntungan berdasarkan rasio risiko-manfaat yang telah ditentukan sebelumnya (misalnya, 1,5:1) untuk memastikan profitabilitas strategi.

Analisis Keuntungan

  1. Sederhana dan efektif: Strategi hanya menggunakan beberapa indikator teknis umum, dengan logika yang jelas dan mudah dimengerti dan diterapkan.
  2. Mengikuti tren: Dengan menggabungkan saluran EMA dan RSI, strategi dapat mengikuti tren pasar dan menangkap pergerakan harga yang lebih besar.
  3. Pengendalian risiko: Menggunakan ATR untuk menetapkan tingkat stop loss dan ukuran posisi kontrol secara efektif membatasi eksposur risiko dari setiap perdagangan.
  4. Fleksibilitas: Parameter strategi (seperti periode EMA, periode RSI, multiplier ATR, dll.) dapat disesuaikan sesuai dengan pasar dan gaya perdagangan yang berbeda untuk mengoptimalkan kinerja.

Analisis Risiko

  1. Optimasi parameter: Kinerja strategi sebagian besar tergantung pada pilihan parameter, dan pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan strategi atau kinerja yang buruk.
  2. Risiko pasar: Strategi dapat mengalami kerugian yang signifikan akibat kejadian tak terduga atau kondisi pasar yang ekstrem, terutama selama pembalikan tren atau pasar yang volatile.
  3. Overfitting: Jika strategi overfitted ke data historis selama proses optimasi parameter, itu dapat menyebabkan kinerja yang buruk dalam perdagangan yang sebenarnya.

Arahan Optimasi

  1. Parameter Dinamis: Sesuaikan parameter strategi secara dinamis sesuai dengan perubahan kondisi pasar, seperti menggunakan periode EMA yang lebih lama ketika tren kuat dan periode yang lebih pendek di pasar yang bergolak.
  2. Menggabungkan indikator lain: Memperkenalkan indikator teknis lainnya (seperti Bollinger Bands, MACD, dll.) untuk meningkatkan keandalan dan akurasi sinyal masuk.
  3. Menggabungkan sentimen pasar: Menggabungkan indikator sentimen pasar (seperti Indeks Ketakutan & Keserakahan) untuk menyesuaikan eksposur risiko dan manajemen posisi strategi.
  4. Analisis multi-frame waktu: Menganalisis tren pasar dan sinyal di berbagai kerangka waktu untuk mendapatkan perspektif pasar yang lebih komprehensif dan membuat keputusan perdagangan yang lebih kuat.

Ringkasan

Strategi ini menggunakan saluran EMA untuk menentukan tren pasar, RSI untuk mengkonfirmasi kekuatan tren, dan ATR untuk mengendalikan risiko. Keuntungan strategi terletak pada kesederhanaan dan kemampuan beradaptasi, karena dapat mengikuti tren dan perdagangan di bawah kondisi pasar yang berbeda. Namun, kinerja strategi sebagian besar tergantung pada pilihan parameter, dan pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan atau kinerja yang buruk. Selain itu, strategi dapat menghadapi risiko yang signifikan selama peristiwa yang tidak terduga atau kondisi pasar yang ekstrem. Untuk mengoptimalkan strategi lebih lanjut, seseorang dapat mempertimbangkan untuk memperkenalkan penyesuaian parameter dinamis, menggabungkan indikator lain, menggabungkan analisis sentimen pasar, dan melakukan analisis multi-frame waktu.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hatnxkld

//@version=4
strategy("Win ha", overlay=true)

ss2 = input("0300-1700", title = "Khung thời gian")

t2 = time(timeframe.period,ss2)
c2 = #cacae6

bgcolor(t2 ? c2 : na, transp = 70)


//3ema
emangan=input(title="Ema ngắn", defval = 12)
ngan=ema(close, emangan)
a= plot(ngan, title="EMA ngắn", color=color.yellow)
ematb=input(title="Ema trung bình", defval = 100)
tb=ema(close, ematb)
b= plot(tb, title="EMA trung bình", color=color.blue)
//emadai=input(title="Ema dai", defval = 288)
//dai=ema(close,emadai)
//c= plot(dai, title="EMA dai", color=color.red)




// nhập hệ số nhân ATR
i=input(title="Hệ số nhân với ATR", defval=1.25)

// RSI
rsi=rsi(close, emangan)
marsi=sma(rsi, emangan)

// Kênh keltler
//heso=input(defval=1, title="Hệ số Kênh Keltler")
//atr=atr(emangan)
//tren=ngan+atr*heso
//d=plot(tren, title="Kênh trên", color=color.white)
//duoi=ngan-atr*heso
//e=plot(duoi, title="Kênh dưới", color=color.white)
//fill(d,e, color=color.rgb(48, 58, 53))

ban = ( close[1]>open[1] and (high[1]-close[1])>(close[1]-low[1]) and open>close and close<low[1]   ) 


//or (    open[1] > close[1] and (high[1]-open[1])>(open[1]-low[1]) and (open[1]-close[1])>(close[1]-low[1]) and open>close and close <low[1]     )   )  //and time(timeframe.period,"2200-1300")
//and (close[1]-open[1])>(open[1]-low[1]) 
//high > ngan and close < ngan and ngan<tb and 
// and time(timeframe.period,"1000-2300")
bgcolor(color = ban ? color.rgb(235, 106, 123) : na)
//bgcolor(color.rgb(82, 255, 154),transp = 100, offset = 1, show_last = 2)
//and time(timeframe.period,"2300-1500") and ((open>ngan and close<ngan) or (open>tren and close<tren))
plotshape(ban , style=shape.arrowdown, location=location.abovebar, color=#ff00ff, size=size.tiny, textcolor=color.rgb(255, 59, 213))
alertcondition(ban, "Ban", "Ban")

mua=  (  open[1]>close[1] and (close[1]-low[1])>(high[1]-close[1]) and close > open and close > high[1]  )  //and time(timeframe.period,"2200-1300")


//or  (  close[1]>open[1] and (open[1]-low[1]) > (high[1]-open[1]) and (close[1]-open[1])>(high[1]-close[1]) and close>open and close>high[1]      ) )
//and (open[1]-close[1])>(high[1]-open[1])
//low < ngan and close > ngan and ngan>tb and
//or  (  close[1]>open[1] and (open[1]-low[1]) > (high[1]-open[1]) and (close[1]-open[1])>(high[1]-close[1]) and close>open and close>high[1]      )

// and time(timeframe.period,"1000-2300")
bgcolor(color= mua? color.rgb(108, 231, 139):na)
//and time(timeframe.period,"2300-1500") and ((open<ngan and close>ngan)or (open<duoi and close>duoi) )
plotshape(mua , style=shape.arrowup, location=location.belowbar, color=#00ff6a, size=size.tiny, textcolor=color.rgb(83, 253, 60))
alertcondition(mua , "Mua", "Mua")


//len1 = ban==true and (high-low)>2*atr
//plotshape(len1 , style=shape.flag, location=location.abovebar, color=#ff00ff, size=size.tiny, title="Sell Signal", text="Xuong 1", textcolor=color.rgb(255, 59, 213))

//bann= ban==true and rsi < marsi and marsi[2]>marsi[1]
//plotshape(bann , style=shape.labeldown, location=location.abovebar, color=#ff00ff, size=size.tiny, title="Sell Signal", text="BAN 2", textcolor=color.rgb(240, 234, 239))

//bannn = mua==true and rsi>marsi and marsi[2]<marsi[1]
//plotshape(bannn , style=shape.labelup, location=location.belowbar, color=#00ff6a, size=size.tiny, title="Buy Signal", text="Mua 2", textcolor=color.rgb(237, 241, 236))

//a1= ban==true and (high - low)<atr 
//plotshape(a1 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text="<atr", textcolor=color.rgb(240, 95, 76))

//a2 = ban ==true and (high - low)>atr and (high - low)<(2*atr) 
//plotshape(a2 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text="<2atr", textcolor=color.rgb(237, 241, 236))

//a3= ban==true and (high - low)>(2*atr) 
//plotshape(a3 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Sell", text=">2atr", textcolor=color.rgb(234, 252, 74))


//b1= mua==true and (high - low)<atr 
//plotshape(b1 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text="<atr", textcolor=color.rgb(237, 241, 236))

//b2 = mua ==true and (high - low)>atr and (high - low)<(2*atr) 
//plotshape(b2 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text="<2atr", textcolor=color.rgb(237, 241, 236))

//b3= mua==true and (high - low)>(2*atr) 
//plotshape(b3 , style=shape.xcross, location=location.bottom, color=#00ff6a, size=size.tiny, title="Buy", text=">2atr", textcolor=color.rgb(237, 241, 236))

// Đặt SL TP ENTRY
risk= input(title="Rủi ro % per Trade", defval=0.5)
rr= input(title="RR", defval=1.5)
onlylong= input(defval=false)
onlyshort=input(defval=false)

stlong = mua and strategy.position_size<=0 ? low[1]:na
stoplong= fixnan(stlong)

stshort = ban and strategy.position_size>=0 ? high[1]:na
stopshort= fixnan(stshort)

enlong = mua and strategy.position_size<=0 ? close:na
entrylong =fixnan(enlong)

enshort = ban and strategy.position_size>=0 ? close:na
entryshort = fixnan(enshort)

amountL = risk/100* strategy.initial_capital / (entrylong - stoplong)
amountS = risk/100* strategy.initial_capital / (stopshort - entryshort)

TPlong= mua and strategy.position_size<=0? entrylong + (entrylong -stoplong)*rr:na
takeprofitlong =fixnan(TPlong)
TPshort = ban and strategy.position_size>=0? entryshort - (stopshort - entryshort)*rr:na 
takeprofitshort = fixnan(TPshort)

strategy.entry("Long", strategy.long , when = enlong and not onlyshort, qty= amountL )
strategy.exit("exitL", "Long", stop = stoplong, limit= takeprofitlong)

strategy.entry("Short", strategy.short , when = enshort and not onlylong, qty= amountS )
strategy.exit("exitS", "Short", stop = stopshort, limit= takeprofitshort)



Berkaitan

Lebih banyak