Hanyue - Strategi Perdagangan Mengikuti Tren Berdasarkan Beberapa EMA, ATR, dan RSI

EMA ATR RSI
Tanggal Pembuatan: 2024-05-14 16:37:52 Akhirnya memodifikasi: 2024-05-14 16:37:52
menyalin: 1 Jumlah klik: 601
1
fokus pada
1617
Pengikut

Hanyue - Strategi Perdagangan Mengikuti Tren Berdasarkan Beberapa EMA, ATR, dan RSI

Ringkasan

Strategi ini menggunakan tiga periode berbeda dari indeks moving averages (EMA) untuk menilai tren pasar, dan menggabungkan relatif kuat-lemah indeks (RSI) dan rata-rata true amplitude (ATR) untuk menentukan titik masuk dan stop loss. Strategi ini akan memicu sinyal pembukaan gudang ketika harga menembus saluran yang dibentuk oleh tiga EMA, dan RSI juga menembus moving averages.

Prinsip Strategi

  1. Menghitung EMA untuk tiga periode yang berbeda: jangka pendek, menengah, dan panjang, untuk menilai tren pasar secara keseluruhan.
  2. Indikator RSI digunakan untuk mengkonfirmasi kekuatan dan kelangsungan tren, menunjukkan perubahan tren ketika RSI menembus rata-rata bergeraknya.
  3. Gabungkan hubungan harga dengan saluran EMA dan sinyal RSI untuk menghasilkan sinyal open stock: ketika harga menembus saluran EMA dan RSI juga menembus rata-rata bergeraknya, buka stock sesuai dengan arah tren.
  4. ATR digunakan untuk menentukan ukuran posisi dan stop loss, dan untuk mengontrol risiko setiap transaksi.
  5. Berdasarkan risiko keuntungan default (misalnya 1.5:1) untuk menempatkan stop loss, untuk memastikan profitabilitas strategi.

Analisis dominasi

  1. Sederhana dan efektif: Strategi ini hanya menggunakan beberapa indikator teknis yang umum, logikanya jelas, mudah dipahami dan diterapkan.
  2. Trend Following: Dengan kombinasi EMA channel dan RSI, strategi dapat berdagang sesuai dengan tren pasar dan menangkap fluktuasi harga yang lebih besar.
  3. Pengendalian risiko: ATR digunakan untuk mengatur stop loss dan mengontrol skala posisi, yang secara efektif membatasi risiko per perdagangan.
  4. Fleksibilitas: Parameter strategi (seperti siklus EMA, siklus RSI, ATR multiples, dll.) dapat disesuaikan dengan berbagai pasar dan gaya perdagangan untuk mengoptimalkan kinerja.

Analisis risiko

  1. Optimasi parameter: kinerja strategi sangat tergantung pada pilihan parameter, pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan atau kinerja yang buruk dari strategi.
  2. Risiko pasar: Strategi dapat mengalami kerugian yang lebih besar dalam peristiwa yang tidak terduga atau situasi ekstrem, terutama dalam pasar yang bergejolak atau bergolak.
  3. Overmatching: Terlalu banyak data historis yang disamakan dalam proses optimasi parameter dapat menyebabkan strategi berkinerja buruk dalam perdagangan nyata.

Perbaikan

  1. Parameter dinamika: Parameter strategi yang menyesuaikan dinamika berdasarkan perubahan kondisi pasar, seperti menggunakan siklus EMA yang lebih panjang ketika tren jelas, menggunakan siklus yang lebih pendek di pasar yang bergoyang.
  2. Menggabungkan indikator lain: memperkenalkan indikator teknis lain (seperti Brinband, MACD, dll) untuk meningkatkan keandalan dan akurasi sinyal penambangan.
  3. Menambahkan sentimen pasar: Menggabungkan indikator sentimen pasar (seperti indeks Fear and Greed) untuk menyesuaikan strategi pengelolaan risiko dan penyimpanan.
  4. Analisis multi-frame: Analisis tren dan sinyal pasar pada berbagai frame waktu untuk mendapatkan pandangan pasar yang lebih komprehensif dan keputusan perdagangan yang lebih stabil.

Kesimpulan

Strategi ini menggunakan saluran EMA untuk menilai tren pasar, RSI untuk mengkonfirmasi kekuatan tren, dan menggunakan ATR untuk mengontrol risiko. Keunggulan strategi ini adalah kesederhanaan dan fleksibilitasnya, yang memungkinkan untuk melakukan perdagangan tren sesuai dengan kondisi pasar yang berbeda. Namun, strategi saat ini sangat bergantung pada pilihan parameter, pengaturan parameter yang tidak tepat dapat menyebabkan kegagalan strategi atau kinerja yang buruk. Selain itu, dalam keadaan darurat atau ekstrim, strategi dapat menghadapi risiko yang lebih besar.

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