EMA RSI Trend-Following dan Momentum Strategy

Penulis:ChaoZhang, Tanggal: 2024-03-29 16:30:42
Tag:

img

Gambaran umum

Strategi Bybit EMA RSI Trend-Following and Momentum adalah strategi perdagangan kuantitatif yang menggabungkan Exponential Moving Averages (EMA) dan Relative Strength Index (RSI). Strategi ini menggunakan dua EMA dengan periode yang berbeda untuk menentukan tren pasar dan indikator RSI untuk mengkonfirmasi keabsahan tren. Ketika EMA cepat melintasi EMA lambat dan RSI berada di bawah ambang batas yang lebih rendah tertentu, strategi menghasilkan sinyal panjang. Sebaliknya, ketika EMA cepat melintasi EMA lambat dan RSI berada di atas ambang batas atas tertentu, strategi menghasilkan sinyal pendek. Strategi ini juga mencakup persentase komisi yang berbeda berdasarkan tingkat akun Bybit dan fungsi profit and stop loss built-in untuk mengelola risiko secara efektif.

Prinsip Strategi

  1. Menghitung EMA cepat dan EMA lambat dengan periode masing-masing 90 dan 300.
  2. Menghitung indikator RSI dengan periode 5.
  3. Membuat sinyal panjang ketika EMA cepat melintasi EMA lambat dan RSI di bawah 45; Membuat sinyal pendek ketika EMA cepat melintasi EMA lambat dan RSI di atas 85.
  4. Tetapkan persentase komisi yang berbeda berdasarkan tingkat akun Bybit, mulai dari 0,075% untuk VIP 0 hingga 0,035% untuk VIP 4.
  5. Menghitung harga masuk dengan komisi termasuk.
  6. Menghitung harga profit dan stop loss berdasarkan persentase yang ditetapkan (5% dan 3%).
  7. Tuliskan harga masuk, ambil garis keuntungan, dan stop loss line pada grafik.
  8. Mengeksekusi perintah masuk berdasarkan sinyal perdagangan.

Keuntungan Strategi

  1. Menggabungkan indikator trend-mengikuti dan momentum untuk menangkap tren pasar secara efektif.
  2. Termasuk built-in mengambil keuntungan dan stop loss fungsi untuk mengelola risiko secara efektif.
  3. Menetapkan persentase komisi yang berbeda berdasarkan tingkat akun Bybit, menyesuaikan dengan kondisi perdagangan pengguna yang berbeda.
  4. Grafik harga masuk, mengambil garis keuntungan, dan garis stop loss pada grafik, memberikan konfirmasi visual dari sinyal perdagangan.

Risiko Strategi

  1. Pemilihan parameter EMA dan RSI mungkin tidak cocok untuk semua kondisi pasar dan mungkin memerlukan optimalisasi berdasarkan situasi aktual.
  2. Di pasar yang bergolak, strategi dapat menghasilkan sinyal perdagangan yang sering, yang mengarah pada biaya perdagangan yang tinggi.
  3. Pengaturan mengambil keuntungan dan stop loss mungkin terlalu konservatif atau agresif dan mungkin perlu disesuaikan berdasarkan preferensi risiko pribadi.

Arah Optimasi Strategi

  1. Mengoptimalkan parameter EMA dan RSI untuk beradaptasi dengan kondisi pasar yang berbeda.
  2. Memperkenalkan indikator teknis lainnya, seperti Bollinger Bands, MACD, dll, untuk meningkatkan keakuratan sinyal perdagangan.
  3. Mengoptimalkan pengaturan mengambil keuntungan dan stop loss, misalnya, dengan menggunakan trailing stop atau metode stop loss dinamis untuk lebih melindungi keuntungan dan mengelola risiko.
  4. Pertimbangkan faktor-faktor seperti volatilitas pasar dan volume perdagangan untuk menyaring sinyal perdagangan dan mengurangi biaya yang terkait dengan perdagangan yang sering.

Ringkasan

Bybit EMA RSI Trend-Following and Momentum Strategy adalah strategi perdagangan kuantitatif yang menggabungkan indikator trend-following dan momentum. Dengan menggunakan EMA dan RSI bersama-sama, strategi ini dapat secara efektif menangkap tren pasar. Strategi ini mencakup built-in take profit dan stop loss fungsi dan menetapkan persentase komisi berdasarkan tingkat akun Bybit, secara efektif mengelola risiko dan beradaptasi dengan kondisi perdagangan pengguna yang berbeda. Namun, masih ada ruang untuk optimasi dalam strategi, seperti optimasi parameter, pengenalan indikator teknis lainnya, dan mengoptimalkan pengaturan take profit dan stop loss. Dengan optimasi dan perbaikan terus-menerus, strategi ini diharapkan untuk mencapai hasil yang lebih baik dalam perdagangan aktual.


/*backtest
start: 2024-03-21 00:00:00
end: 2024-03-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @BryanAaron

//@version=5
strategy("Bybit EMA RSI Strategy", overlay=true)

// Input parameters
fastLength = input(90, title="Fast EMA Length")
slowLength = input(300, title="Slow EMA Length")
rsiLength = input(5, title="RSI Length")
rsiUpperThreshold = input(85, title="RSI Upper Threshold")
rsiLowerThreshold = input(45, title="RSI Lower Threshold")
takeProfitPerc = input(5, title="Take Profit %")
stopLossPerc = input(3, title="Stop Loss %")
bybitAccountLevel = input.string("VIP 0", title="Bybit Account Level", options=["VIP 0", "VIP 1", "VIP 2", "VIP 3", "VIP 4"])

// Calculate moving averages
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Trading conditions
longCondition = (fastMA > slowMA) and (rsi < rsiLowerThreshold)
shortCondition = (fastMA < slowMA) and (rsi > rsiUpperThreshold)

// Set commission based on Bybit account level
commissionPerc = switch bybitAccountLevel
    "VIP 0" => 0.075
    "VIP 1" => 0.065
    "VIP 2" => 0.055
    "VIP 3" => 0.045
    "VIP 4" => 0.035
    => 0.075

// Calculate entry prices with commission
var float longEntryPrice = na
var float shortEntryPrice = na

longEntryPriceWithCommission = close * (1 + commissionPerc / 100)
shortEntryPriceWithCommission = close * (1 - commissionPerc / 100)

// Calculate take profit and stop loss prices
takeProfitPrice(entryPrice) => entryPrice * (1 + takeProfitPerc / 100)
stopLossPrice(entryPrice) => entryPrice * (1 - stopLossPerc / 100)

// Plot entry prices
plotchar(longCondition, title="Long Entry Price", char="LE", location=location.belowbar, color=color.green)
plotchar(shortCondition, title="Short Entry Price", char="SE", location=location.abovebar, color=color.red)

// Draw position on the chart
longColor = color.green
shortColor = color.red
profitColor = color.new(color.green, 80)
lossColor = color.new(color.red, 80)

plotshape(longCondition and strategy.position_size > 0, title="Long Position", text="Long", location=location.belowbar, style=shape.labelup, size=size.small, color=longColor, textcolor=color.white)
plotshape(shortCondition and strategy.position_size < 0, title="Short Position", text="Short", location=location.abovebar, style=shape.labeldown, size=size.small, color=shortColor, textcolor=color.white)

if (strategy.position_size > 0)
    line.new(bar_index, longEntryPrice, bar_index + 1, longEntryPrice, color=longColor, width=2)
    
    longProfitLine = line.new(bar_index, takeProfitPrice(longEntryPrice), bar_index + 1, takeProfitPrice(longEntryPrice), color=profitColor, width=1)
    longLossLine = line.new(bar_index, stopLossPrice(longEntryPrice), bar_index + 1, stopLossPrice(longEntryPrice), color=lossColor, width=1)
    

else if (strategy.position_size < 0)
    line.new(bar_index, shortEntryPrice, bar_index + 1, shortEntryPrice, color=shortColor, width=2)
    
    shortProfitLine = line.new(bar_index, stopLossPrice(shortEntryPrice), bar_index + 1, stopLossPrice(shortEntryPrice), color=profitColor, width=1)
    shortLossLine = line.new(bar_index, takeProfitPrice(shortEntryPrice), bar_index + 1, takeProfitPrice(shortEntryPrice), color=lossColor, width=1)
    


// Entry
if (longCondition)
    strategy.entry("Long", strategy.long)
    longEntryPrice := longEntryPriceWithCommission
else if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortEntryPrice := shortEntryPriceWithCommission

Lebih banyak