Strategi ini menggunakan prinsip persilangan purata bergerak eksponensial (EMA), digabungkan dengan penunjuk RSI, untuk menentukan arah trend untuk kemasukan dan keluar.
Strategi ini menggunakan 3 garis EMA dengan tempoh yang berbeza - garis pantas, sederhana dan perlahan. Isyarat beli dihasilkan apabila EMA pantas melintasi EMA sederhana, dan isyarat jual dihasilkan apabila EMA pantas melintasi EMA sederhana.
Strategi ini juga menggabungkan penunjuk RSI untuk mengukur keadaan overbought dan oversold. RSI mengira nisbah rata-rata hari naik kepada rata-rata hari turun dalam tempoh untuk menunjukkan kekuatan relatif aset. Nilai di atas ambang ambang overbought menandakan keadaan overbought, sementara nilai di bawah ambang oversold menandakan keadaan oversold.
Syarat pembelian untuk strategi adalah:
Syarat jualan adalah:
Menggunakan persilangan EMA untuk menentukan arah trend digabungkan dengan RSI untuk mengenal pasti peluang pembalikan jangka pendek, strategi ini menggunakan kedua-dua konsep trend berikut dan pembalikan purata.
Strategi ini menggabungkan persilangan EMA dan RSI untuk mengukur kedua-dua trend dan tahap overbought / oversold, menapis pecah palsu dan perdagangan bising.
Tetapan RSI membolehkan strategi untuk masuk dan keluar pada kawasan overbought / oversold yang menguntungkan.
Keperluan untuk harga untuk memecahkan semua 3 garis EMA sebelum memasuki perdagangan membantu mengelakkan whipsawed.
Seperti semua strategi backtested, strategi ini menghadapi risiko overfit backtest. Perubahan keadaan pasaran dalam perdagangan langsung boleh menjadikan parameter yang dioptimumkan tidak sesuai.
Dalam pasaran yang berbeza, strategi boleh menghasilkan isyarat palsu dan mengalami kerugian.
Penyesuaian parameter RSI yang buruk boleh menyebabkan peluang yang hilang atau isyarat palsu.
Pertimbangkan untuk menambah pengesahan pada jangka masa yang lebih tinggi untuk mengelakkan bunyi bising.
Tunggu untuk menguji semula garis EMA sebelum memasuki perdagangan untuk mengesahkan isyarat.
Masukkan penunjuk lain seperti MACD, Bollinger Bands untuk pengesahan isyarat gabungan.
Gunakan pembelajaran mesin untuk mengoptimumkan parameter untuk ketahanan.
Pertimbangkan untuk menambah stop loss untuk keluar dari trend yang tidak pasti dengan cepat.
Strategi ini menggabungkan persilangan EMA dan RSI untuk mengenal pasti trend sambil mengambil kesempatan daripada pembalikan jangka pendek. Ia menggunakan kedua-dua konsep trend berikut dan pembalikan purata dengan cekap. Terdapat ruang untuk pengoptimuman melalui pengesahan isyarat, penyesuaian parameter, stop loss dan sebagainya. Tetapi overfit backtest perlu dipertimbangkan, dan prestasi langsung harus dinilai. Secara keseluruhan, ini berfungsi sebagai rujukan yang berguna untuk pembelajaran, tetapi memerlukan pengesahan lanjut di pasaran 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)