Multi-EMA dan RSI Trend Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-03-01 13:26:24
Tag:

img

Ringkasan

Artikel ini terutamanya menganalisis strategi perdagangan kuantitatif yang dibangunkan oleh Ravikant_sharma berdasarkan purata bergerak eksponensial berganda (EMA) dan indeks kekuatan relatif (RSI). Strategi ini mengenal pasti trend harga dan menentukan titik masuk dan keluar dengan melintasi EMA dengan kitaran dan nilai RSI yang berbeza.

Prinsip Strategi

Pengiraan Penunjuk

Strategi ini menggunakan 5 EMA dengan tempoh yang berbeza, termasuk garis 9 hari, 21 hari, 51 hari, 100 hari dan 200 hari. Hanya 4 EMA pertama yang digambarkan dalam kod. Parameter RSI ditetapkan kepada 14.

Syarat kemasukan

Satu daripada syarat berikut mesti dipenuhi sebelum membeli:

  1. EMA 9 hari melintasi di atas EMA 21 hari
  2. EMA 9 hari melintasi di atas EMA 51 hari
  3. EMA 51 hari menyeberang di bawah EMA 100 hari

Pada masa yang sama, RSI mesti lebih besar daripada 65, yang menunjukkan aliran menaik yang kuat.

Syarat keluar

Satu daripada syarat berikut mesti dipenuhi sebelum menutup kedudukan:

  1. EMA 9 hari melintasi di bawah EMA 51 hari, menunjukkan pembalikan trend
  2. Harga penutupan melebihi 125% daripada harga kemasukan, mencapai sasaran keuntungan
  3. RSI turun di bawah 40, menandakan pembalikan
  4. Harga penutupan jatuh di bawah 98% daripada harga kemasukan, stop loss dicetuskan

Analisis Kelebihan

Ia adalah trend tipikal yang mengikuti strategi dengan kekuatan berikut:

  1. Menggunakan persilangan EMA untuk menentukan arah trend untuk penjejakan trend yang berkesan
  2. Menggabungkan EMA tempoh yang berbeza mengenal pasti isyarat trend yang lebih boleh dipercayai
  3. Penapis RSI mengelakkan isyarat palsu di pasaran terhad julat
  4. Tetapan mengambil keuntungan dan menghentikan kerugian mengunci keuntungan dan mengawal risiko

Risiko dan Penyelesaian

Masih ada beberapa risiko:

  1. Isyarat yang tidak pasti boleh berlaku dengan kerap di pasaran yang terhad pada julat, menyebabkan perdagangan berlebihan.
  2. Isyarat silang EMA mungkin tertunda semasa pembalikan tajam, tidak dapat keluar tepat pada masanya.
  3. Sasaran keuntungan yang tidak betul dan tetapan stop loss membawa kepada stop loss awal atau kegagalan untuk mengunci keuntungan tepat pada masanya. Parameter harus dioptimumkan mengikut produk dan persekitaran pasaran yang berbeza.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dengan cara berikut:

  1. Pengoptimuman parameter untuk produk yang berbeza
  2. Menambah penunjuk teknikal lain untuk membina model pelbagai faktor
  3. Menggabungkan algoritma pembelajaran mesin untuk menilai kualiti isyarat
  4. Menggabungkan analisis sentimen untuk mengelakkan perangkap emosi
  5. Uji strategi mengambil keuntungan / berhenti kerugian yang berbeza untuk mencari yang optimum

Kesimpulan

Kesimpulannya, ini adalah strategi trend berikut yang boleh dipercayai dan mudah dilaksanakan. Dengan persilangan EMA untuk arah trend dan penapis RSI untuk isyarat palsu, hasil backtest yang baik memberikan asas yang kukuh untuk parameter dan pengoptimuman model yang lebih lanjut untuk mendapatkan keuntungan yang mantap. Walau bagaimanapun, peniaga masih harus berhati-hati terhadap pembalikan tajam dan parameter yang tidak tepat yang menimbulkan risiko.


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 3h
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/
// © Ravikant_sharma

//@version=5

strategy('new', overlay=true)

start = timestamp(1990, 1, 1, 0, 0)
end = timestamp(2043, 12, 12, 23, 59)
ema0 = ta.ema(close, 9)
ema1 = ta.ema(close, 21)
ema2 = ta.ema(close, 51)
ema3 = ta.ema(close, 100)
ema4 = ta.ema(close, 200)

rsi2=ta.rsi(ta.sma(close,14),14)
plot(ema0, '9', color.new(color.green, 0))
plot(ema1, '21', color.new(color.black, 0))
plot(ema2, '51', color.new(color.red, 0))
plot(ema3, '200', color.new(color.blue, 0))   

//plot(ema4, '100', color.new(color.gray, 0)) 


//LongEntry = (  ta.crossover(ema0,ema3)  or  ta.crossover(ema0,ema2) or  ta.crossunder(ema2,ema3) ) // ta.crossover(ema0,ema1) //
LongEntry=false
if ta.crossover(ema0,ema1) 
    if rsi2>65
        LongEntry:=true
if ta.crossover(ema1,ema2)
    if rsi2>65
        LongEntry:=true
        
LongExit =  ta.crossunder(ema0,ema2) or close >(strategy.position_avg_price*1.25) or rsi2 <40 or close < (strategy.position_avg_price*0.98)



if time >= start and time <= end 
    if(LongEntry and rsi2>60)
        strategy.entry('Long', strategy.long, 1)
    if(LongExit)
        strategy.close('Long') 



Lebih lanjut