Hanyue - Trend Mengikuti Strategi Perdagangan Berdasarkan Pelbagai EMA, ATR dan RSI

EMA ATR RSI
Tarikh penciptaan: 2024-05-14 16:37:52 Akhirnya diubah suai: 2024-05-14 16:37:52
Salin: 1 Bilangan klik: 601
1
fokus pada
1617
Pengikut

Hanyue - Trend Mengikuti Strategi Perdagangan Berdasarkan Pelbagai EMA, ATR dan RSI

Gambaran keseluruhan

Strategi ini menggunakan tiga purata bergerak indeks (EMA) untuk menilai trend pasaran, dan menggabungkan indeks kekuatan relatif (RSI) dan purata gelombang sebenar (ATR) untuk menentukan titik masuk dan titik berhenti. Strategi ini akan mencetuskan isyarat pembukaan gudang apabila harga menembusi saluran yang dibentuk oleh tiga EMA, dan RSI juga menembusi rata-rata bergeraknya.

Prinsip Strategi

  1. Mengira EMA untuk tiga kitaran yang berbeza: jangka pendek, pertengahan dan jangka panjang, untuk menilai trend keseluruhan pasaran.
  2. Menggunakan RSI untuk memastikan kekuatan dan kesinambungan trend, RSI menunjukkan perubahan trend apabila ia melepasi purata bergeraknya.
  3. Gabungkan hubungan harga dengan saluran EMA dan isyarat RSI untuk menghasilkan isyarat pembukaan simpanan: apabila harga menembusi saluran EMA dan RSI juga menembusi purata bergeraknya, pembukaan simpanan mengikut arah trend.
  4. Menggunakan ATR untuk menentukan saiz kedudukan dan stop loss, mengawal risiko setiap dagangan.
  5. Berdasarkan risiko keuntungan yang telah ditetapkan (contohnya 1.5:1) untuk meletakkan stop-loss untuk memastikan keuntungan strategi tersebut.

Analisis keunggulan

  1. Sederhana dan berkesan: Strategi ini hanya menggunakan beberapa petunjuk teknikal biasa, logikanya jelas, mudah difahami dan dilaksanakan.
  2. Ikut Trend: Dengan menggabungkan saluran EMA dan RSI, strategi dapat berdagang mengikut trend pasaran dan menangkap turun naik harga yang lebih besar.
  3. Kawalan risiko: Menggunakan ATR untuk menetapkan stop loss dan mengawal skala kedudukan, secara berkesan mengehadkan risiko setiap dagangan.
  4. Fleksibiliti: parameter strategi (seperti kitaran EMA, kitaran RSI, kelipatan ATR, dan lain-lain) boleh disesuaikan mengikut gaya pasaran dan perdagangan yang berbeza untuk meningkatkan prestasi.

Analisis risiko

  1. Optimasi parameter: Prestasi strategi sangat bergantung pada pilihan parameter, penempatan parameter yang tidak betul boleh menyebabkan strategi gagal atau berprestasi buruk.
  2. Risiko pasaran: Strategi mungkin mengalami kerugian yang lebih besar dalam keadaan yang tidak dijangka atau keadaan yang melampau, terutamanya dalam pasaran yang berbalik arah atau bergolak.
  3. Overmatching: Jika data sejarah terlalu banyak disamakan dalam proses pengoptimuman parameter, ia boleh menyebabkan strategi tidak berfungsi dengan baik dalam perdagangan sebenar.

Arah yang lebih baik

  1. Parameter dinamik: Parameter strategi penyesuaian dinamik berdasarkan keadaan pasaran yang berubah, seperti menggunakan kitaran EMA yang lebih lama apabila trend jelas, menggunakan kitaran yang lebih pendek dalam pasaran goyah.
  2. Gabungkan penunjuk lain: Masukkan penunjuk teknikal lain (seperti Brinband, MACD, dan lain-lain) untuk meningkatkan kebolehpercayaan dan ketepatan isyarat pembukaan.
  3. Menggabungkan Sentimen Pasaran: Menggabungkan Indeks Sentimen Pasaran (seperti Indeks Kecemerlangan) untuk Mengatur Strategi Pengurusan Celah dan Stok Risiko.
  4. Analisis pelbagai kerangka masa: menganalisis trend dan isyarat pasaran pada pelbagai kerangka masa untuk mendapatkan pandangan pasaran yang lebih menyeluruh dan keputusan perdagangan yang lebih stabil.

Kesimpulan

Strategi ini membina sistem perdagangan trend yang mudah dan berkesan dengan menggabungkan beberapa petunjuk teknikal biasa seperti EMA, RSI, dan ATR. Ia menggunakan saluran EMA untuk menilai trend pasaran, RSI untuk memastikan kekuatan trend, dan menggunakan ATR untuk mengawal risiko. Kelebihan strategi adalah kesederhanaan dan kesesuaian, yang membolehkan perdagangan trend mengikut keadaan pasaran yang berbeza.

Kod sumber strategi
/*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)