RSI dan EMA Berbasis Tren Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-25 12:19:32
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator teknis Relative Strength Index (RSI) dan Exponential Moving Average (EMA) untuk menerapkan strategi perdagangan kuantitatif berdasarkan tren berikut.

Logika Strategi

Pemilihan Indikator

  • EMA untuk menentukan arah tren saat ini. Strategi ini menggunakan EMA 20 hari, 50 hari dan 200 hari. Ketika harga di atas EMA ini, sebuah uptrend diidentifikasi.
  • RSI untuk mengidentifikasi tingkat overbought/oversold. RSI standar 14 periode, dengan ambang overbought di 70 dan ambang oversold di 30.

Aturan Masuk

Sinyal masuk panjang:

  • RSI di bawah level 30, menunjukkan kondisi oversold di mana harga dapat bangkit kembali
  • Harga di atas EMA 20 hari, 50 hari atau 200 hari, menunjukkan tren pasar naik

Ketika kedua kriteria terpenuhi, posisi panjang dimasukkan.

Manajemen Risiko

Pelanggaran maksimum untuk setiap perdagangan dibatasi hingga 3% dari total nilai akun.

Ukuran posisi pada saat masuk: Max Loss / (Price Entry - Stop Loss Price) = Ukuran Posisi

Ini secara efektif mengontrol risiko per perdagangan.

Peraturan Keluar

Sinyal keluar utama:

  • RSI naik di atas level 70, harga mungkin turun karena kondisi overbought
  • Penurunan harga di bawah EMA 20 hari, 50 hari atau 200 hari, pembalikan tren

Ketika salah satu sinyal terjadi, posisi ditutup.

Analisis Keuntungan

Strategi ini menggabungkan keuntungan dari trend following dan mean reversal. EMA menentukan tren keseluruhan, kemudian sinyal masuk terjadi di zona pembalikan potensial, mendapat manfaat dari kedua tren dan pembalikan untuk stabilitas. Parameter RSI juga dapat dioptimalkan untuk pasar yang berbeda, membuat strategi yang kuat.

Kerugian maksimum tetap per perdagangan melindungi modal dengan mengontrol secara langsung tingkat risiko perdagangan.

Analisis Risiko

Strategi ini bekerja dengan baik di pasar tren yang jelas. Dalam lingkungan yang kompleks dan volatile, menggunakan EMA untuk tren mungkin memiliki keterbatasan. Juga RSI memiliki beberapa efek keterlambatan, membutuhkan konfirmasi dari tindakan harga yang sebenarnya.

Penempatan stop loss sangat penting untuk PnL, membutuhkan pengujian yang cermat untuk pasar yang berbeda. Jika terlalu luas, kerugian tunggal dapat berkembang; jika terlalu ketat, kebisingan dapat memicu berhenti yang tidak diinginkan. pengujian langsung diperlukan untuk optimasi berkelanjutan.

Arahan Optimasi

Mencoba parameter RSI yang berbeda agar sesuai dengan lebih banyak pasar. Menemukan rasio ukuran perdagangan yang optimal. Menambahkan indikator teknis lainnya untuk membangun sistem masuk/keluar yang lebih kuat. Ini semua pilihan yang layak dieksplorasi.

Kesimpulan

Strategi ini mengintegrasikan kekuatan strategi trend following dan mean reversal. Masuk terjadi pada potensi pembalikan sementara mengidentifikasi tren yang lebih besar. Optimasi RSI menyesuaikan dengan lebih banyak rezim pasar. Tingkat risiko perdagangan tetap menjaga operasi stabil dalam jangka menengah hingga panjang. Peningkatan lebih lanjut mungkin melalui penyesuaian dan pengujian ketahanan menggunakan berbagai pasar dan gaya.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stratégie RSI et EMA avec Gestion du Risque", overlay=true)

// Paramètres de la stratégie
rsiLength = input(14, "Longueur du RSI")
rsiOverbought = input(70, "Niveau de Surachat RSI")
rsiOversold = input(30, "Niveau de Survente RSI")

// Calcul du RSI
rsiValue = rsi(close, rsiLength)

// Paramètres des EMA
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// Paramètre du risque par trade
riskPerTrade = input(0.03, "Risque par Trade (3%)")

// Distance du stop-loss en pips (à ajuster selon votre stratégie)
stopLossPips = input(1, "Distance du Stop-Loss en pips")

// Calcul de la taille de position et du stop-loss
calculatePositionSize(entryPrice, stopLossPips) =>
    stopLossPrice = entryPrice - stopLossPips * syminfo.mintick
    riskPerTradeValue = strategy.equity * riskPerTrade
    positionSize = riskPerTradeValue / (entryPrice - stopLossPrice)
    positionSize

// Conditions d'entrée
longCondition = (rsiValue < rsiOversold) and (close > ema20 or close > ema50 or close > ema200)
if longCondition
    strategy.entry("Long", strategy.long, qty=1)

// Conditions de sortie
exitCondition = (rsiValue > rsiOverbought) or (close < ema20 or close < ema50 or close < ema200)
if exitCondition
    strategy.close("Long")

// Affichage des EMA et RSI sur le graphique
plot(ema20, color=color.red)
plot(ema50, color=color.green)
plot(ema200, color=color.blue)
hline(rsiOverbought, "Niveau de Surachat RSI", color=color.red)
hline(rsiOversold, "Niveau de Survente RSI", color=color.blue)
plot(rsiValue, "RSI", color=color.purple)

Lebih banyak