RSI EMA Crossover Strategi

Penulis:ChaoZhang, Tanggal: 2023-10-25 11:46:49
Tag:

img

Gambaran umum

Strategi ini memanfaatkan prinsip crossover rata-rata bergerak eksponensial (EMA), dikombinasikan dengan indikator RSI, untuk menentukan arah tren untuk entri dan keluar.

Logika Strategi

Strategi ini menggunakan 3 garis EMA dengan periode yang berbeda - jalur cepat, menengah dan lambat. Sinyal beli dihasilkan ketika EMA cepat melintasi EMA menengah, dan sinyal jual dihasilkan ketika EMA cepat melintasi EMA menengah.

Strategi ini juga menggabungkan indikator RSI untuk mengukur kondisi overbought dan oversold. RSI menghitung rasio rata-rata hari naik ke rata-rata hari turun selama periode untuk menunjukkan kekuatan relatif aset. Nilai di atas ambang batas overbought menandakan kondisi overbought, sementara nilai di bawah ambang batas oversold menandakan kondisi oversold.

Kondisi pembelian untuk strategi adalah:

  1. Penembusan harga di atas garis EMA cepat, menengah dan lambat
  2. RSI melintasi batas oversold

Kondisi penjualan adalah:

  1. EMA cepat melintasi EMA menengah
  2. RSI melintasi di bawah garis menengah

Menggunakan EMA crossover untuk menentukan arah tren dikombinasikan dengan RSI untuk mengidentifikasi peluang pembalikan jangka pendek, strategi ini menggunakan kedua konsep trend berikut dan rata-rata pembalikan.

Analisis Keuntungan

Strategi ini menggabungkan EMA crossover dan RSI untuk mengukur baik tren dan overbought / oversold tingkat, menyaring keluar palsu breakouts dan bising perdagangan.

Pengaturan RSI memungkinkan strategi untuk waktu masuk dan keluar di area yang menguntungkan overbought / oversold.

Persyaratan harga untuk menembus semua 3 garis EMA sebelum memasuki perdagangan membantu menghindari ditipu.

Analisis Risiko

Seperti semua strategi backtested, strategi ini menghadapi risiko overfit backtest. Perubahan kondisi pasar dalam perdagangan langsung dapat membuat parameter yang dioptimalkan tidak cocok.

Di pasar yang bervariatif, strategi dapat menghasilkan sinyal palsu dan mengalami kerugian.

Penyesuaian parameter RSI yang buruk dapat menyebabkan kesempatan yang hilang atau sinyal palsu.

Peluang Peningkatan

  1. Pertimbangkan untuk menambahkan validasi pada kerangka waktu yang lebih tinggi untuk menghindari kebisingan.

  2. Tunggu uji ulang garis EMA sebelum memasuki perdagangan untuk memvalidasi sinyal.

  3. Masukkan indikator lain seperti MACD, Bollinger Bands untuk konfirmasi sinyal gabungan.

  4. Gunakan pembelajaran mesin untuk mengoptimalkan parameter untuk ketahanan.

  5. Pertimbangkan untuk menambahkan stop loss untuk keluar dari tren yang tidak pasti dengan cepat.

Kesimpulan

Strategi ini menggabungkan EMA crossover dan RSI untuk mengidentifikasi tren sambil mengambil keuntungan dari pembalikan jangka pendek. Ini memanfaatkan konsep trend berikut dan mean reverson secara efisien. Ada ruang untuk optimalisasi melalui validasi sinyal, tuning parameter, stop loss dll. Tapi overfit backtest perlu dipertimbangkan, dan kinerja langsung harus dievaluasi. Secara keseluruhan, ini berfungsi sebagai referensi yang berguna untuk belajar, tetapi membutuhkan validasi lebih lanjut di pasar langsung.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
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/
// © chadsadachai

//@version=5
strategy("EMA Cross V1", overlay= true)

//rsi
length = input.int(title = "Rsi Lenght" , defval=26 , minval=1, maxval=50)
overS = input.int(title = "Rsi OVS line" , defval=30 , minval=1, maxval=40)
overB = input.int(title = "Rsi OVB line" , defval=70 , minval=1, maxval=100)
mLine = input.int(title = "Rsi Medium line" , defval=42 , minval=1, maxval=60)
price = close
vrsi = ta.rsi(price, length)
co = vrsi >= mLine and vrsi < overB 
cu = ta.crossunder(vrsi, overB)
//ema
F = input.int(title = "EMA Fast" , defval=17 , minval=1, maxval=50)
M = input.int(title = "EMA Medium" , defval=35, minval=1, maxval=100)
S = input.int(title = "EMA Slow" , defval=142, minval=1, maxval=200)
emaF = ta.ema(price , F)
emaM = ta.ema(price , M)
emaS = ta.ema(price , S)

//plot
plot(emaF , color = color.green , linewidth=1)
plot(emaM , color = color.yellow , linewidth=1)
plot(emaS , color = color.red , linewidth=1)

//Time Stamp
start = timestamp(input.int(title = "Start Year" , defval=2011 , minval=2011, maxval=2025), input.int(title = "Start Month" , defval=1 , minval=1, maxval=12), input.int(title = "Start Day" , defval=1 , minval=1, maxval=31), 0, 0)
end = timestamp(input.int(title = "End Year" , defval=2025 , minval=2011, maxval=2025), input.int(title = "End Month" , defval=1 , minval=1, maxval=12), input.int(title = "End Day" , defval=1 , minval=1, maxval=31), 0, 0)
// years = input.int(title = "Year" , defval=2018 , minval=2011, maxval=2025)
// months = input.int(title = "Month" , defval=1 , minval=1, maxval=12)
// days = input.int(title = "Day" , defval=1 , minval=1, maxval=31)

//longCondition Default
// longCondition1 = EMA_Fast >= EMA_Slow and EMA_Fast >= EMA_Medium//ta.crossover(EMA_Fast, EMA_Slow)  EMA_Fast > EMA_Slow and EMA_Medium > EMA_Slow
// longCondition3 = price >= EMA_Medium and price > EMA_Slow
// longCondition2 = vrsi >= overSold and vrsi <= overBought 

//longCondition & shortCondition ETHUSD
// 1.price > emaF > emaM > emaS
// 2.rsi overcross overS
longC1 = price > emaF and price > emaM and price > emaS 
// longC1 = ta.crossover(emaF, emaM)
longC2 = if longC1
    co
// shortC1 = EMA_Fast < EMA_Medium //and EMA_Fast < EMA_Slow and EMA_Medium < EMA_Slow //and cu
// shortC2 = overBought > vrsi //and vrsi < overBought //overSold < vrsi and vrsi < mediumLine

// exitLong Condition
// 1.price < emaF < emaM < emaS
// 2.rsi overcross mediumLine
exitLong1 = ta.crossunder(emaF, emaM) //or emaF < emaM//and price < emaM and price < emaF
exitLong2 = ta.crossunder(vrsi,mLine)
//exitLong3 = price < emaM
//strategy.entry
if time >=start and time <=end
    strategy.entry("Buy", strategy.long , when = longC1 and longC2)

// if(exitLong1 or exitLong2)
strategy.close("Buy" , when = exitLong1 or exitLong2)
    
// exitShort1 = EMA_Fast > EMA_Medium
// //exitShort2 = ta.crossover(vrsi , mediumLine) 
// exitShort2 = ta.crossunder (vrsi,mediumLine)
// strategy.close("Short" , when = exitShort1 or exitShort2)
// //shortCondition = cu


// //if (shortCondition1 and shortCondition2)
//     //strategy.entry("My Short Entry Id", strategy.short)


Lebih banyak