Sumber dimuat naik... memuat...

Han Yue - Trend Mengikut Strategi Dagangan Berdasarkan Pelbagai EMA, ATR dan RSI

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

img

Ringkasan

Strategi ini menggunakan tiga purata bergerak eksponensial (EMA) dengan tempoh yang berbeza untuk menentukan trend pasaran, dan menggabungkan Indeks Kekuatan Relatif (RSI) dan Julat Benar Purata (ATR) untuk mengenal pasti titik masuk, stop-loss, dan tahap mengambil keuntungan. Apabila harga menembusi saluran yang dibentuk oleh tiga EMA dan RSI juga menembusi purata bergerak, strategi ini mencetuskan isyarat masuk. ATR digunakan untuk mengawal saiz kedudukan dan menetapkan tahap stop-loss, sementara nisbah risiko-balasan (RR) digunakan untuk menentukan tahap mengambil keuntungan. Keuntungan utama strategi ini terletak pada kesederhanaan dan keberkesanannya, kerana ia dapat mengikuti trend pasaran dan mengehadkan potensi kerugian melalui langkah pengurusan risiko yang ketat.

Prinsip Strategi

  1. Mengira tiga EMA dengan tempoh yang berbeza (jangka pendek, jangka sederhana, dan jangka panjang) untuk menentukan trend pasaran secara keseluruhan.
  2. Gunakan penunjuk RSI untuk mengesahkan kekuatan dan kelestarian trend. Apabila RSI memecahkan purata bergerak, ia menunjukkan perubahan dalam trend.
  3. Menghasilkan isyarat kemasukan berdasarkan hubungan antara harga dan saluran EMA, serta isyarat RSI: buka kedudukan ke arah trend apabila harga menembusi saluran EMA dan RSI juga menembusi purata bergerak.
  4. Menggunakan ATR untuk menentukan saiz kedudukan dan tahap stop-loss, mengawal pendedahan risiko setiap perdagangan.
  5. Tetapkan tahap mengambil keuntungan berdasarkan nisbah risiko-balasan yang telah ditentukan (contohnya, 1.5:1) untuk memastikan keuntungan strategi.

Analisis Kelebihan

  1. Sederhana dan berkesan: Strategi ini hanya menggunakan beberapa penunjuk teknikal biasa, dengan logik yang jelas dan mudah difahami dan dilaksanakan.
  2. Mengikuti trend: Dengan menggabungkan saluran EMA dan RSI, strategi dapat mengikuti trend pasaran dan menangkap pergerakan harga yang lebih besar.
  3. Kawalan risiko: Menggunakan ATR untuk menetapkan tahap stop-loss dan kawalan saiz kedudukan dengan berkesan mengehadkan pendedahan risiko setiap perdagangan.
  4. Fleksibiliti: Parameter strategi (seperti tempoh EMA, tempoh RSI, pengganda ATR, dll.) boleh diselaraskan mengikut pasaran dan gaya perdagangan yang berbeza untuk mengoptimumkan prestasi.

Analisis Risiko

  1. Pengoptimuman parameter: Prestasi strategi sebahagian besarnya bergantung pada pilihan parameter, dan tetapan parameter yang tidak betul boleh menyebabkan kegagalan strategi atau prestasi yang buruk.
  2. Risiko pasaran: Strategi boleh mengalami kerugian yang ketara dalam peristiwa yang tidak dijangka atau keadaan pasaran yang melampau, terutamanya semasa pembalikan trend atau pasaran yang tidak menentu.
  3. Overfitting: Jika strategi terlalu sesuai dengan data sejarah semasa proses pengoptimuman parameter, ia boleh membawa kepada prestasi yang buruk dalam perdagangan sebenar.

Arahan pengoptimuman

  1. Parameter dinamik: Sesuaikan parameter strategi secara dinamik mengikut perubahan keadaan pasaran, seperti menggunakan tempoh EMA yang lebih lama apabila trendnya kuat dan tempoh yang lebih pendek di pasaran yang bergelombang.
  2. Menggabungkan penunjuk lain: Memperkenalkan penunjuk teknikal lain (seperti Bollinger Bands, MACD, dll.) untuk meningkatkan kebolehpercayaan dan ketepatan isyarat kemasukan.
  3. Menggabungkan sentimen pasaran: Gabungkan penunjuk sentimen pasaran (seperti Indeks Ketakutan & Keserakahan) untuk menyesuaikan pendedahan risiko strategi dan pengurusan kedudukan.
  4. Analisis pelbagai jangka masa: Menganalisis trend dan isyarat pasaran dalam jangka masa yang berbeza untuk mendapatkan perspektif pasaran yang lebih komprehensif dan membuat keputusan perdagangan yang lebih kukuh.

Ringkasan

Strategi ini membina sistem perdagangan trend-mengikuti yang mudah dan berkesan dengan menggabungkan beberapa penunjuk teknikal yang biasa, seperti EMA, RSI, dan ATR. Ia menggunakan saluran EMA untuk menentukan trend pasaran, RSI untuk mengesahkan kekuatan trend, dan ATR untuk mengawal risiko. Kelebihan strategi terletak pada kesederhanaan dan kebolehsesuaian, kerana ia boleh mengikuti trend dan perdagangan di bawah keadaan pasaran yang berbeza. Walau bagaimanapun, prestasi strategi ini sebahagian besarnya bergantung pada pilihan parameter, dan tetapan parameter yang tidak betul boleh menyebabkan kegagalan strategi atau prestasi yang buruk. Di samping itu, strategi mungkin menghadapi risiko yang signifikan semasa peristiwa yang tidak dijangka atau keadaan pasaran yang melampau. Untuk mengoptimumkan lagi strategi, seseorang boleh mempertimbangkan untuk memperkenalkan penyesuaian parameter dinamik, menggabungkan indikator lain, menggabungkan analisis sentimen pasaran, dan menjalankan pelbagai jangka masa.


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