Strategi ini memanfaatkan prinsip crossover rata-rata bergerak eksponensial (EMA), dikombinasikan dengan indikator RSI, untuk menentukan arah tren untuk entri dan keluar.
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:
Kondisi penjualan adalah:
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.
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.
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.
Pertimbangkan untuk menambahkan validasi pada kerangka waktu yang lebih tinggi untuk menghindari kebisingan.
Tunggu uji ulang garis EMA sebelum memasuki perdagangan untuk memvalidasi sinyal.
Masukkan indikator lain seperti MACD, Bollinger Bands untuk konfirmasi sinyal gabungan.
Gunakan pembelajaran mesin untuk mengoptimalkan parameter untuk ketahanan.
Pertimbangkan untuk menambahkan stop loss untuk keluar dari tren yang tidak pasti dengan cepat.
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)