Strategi Mengikuti Tren dan Momentum EMA RSI


Tanggal Pembuatan: 2024-03-29 16:30:42 Akhirnya memodifikasi: 2024-03-29 16:30:42
menyalin: 0 Jumlah klik: 612
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren dan Momentum EMA RSI

Ringkasan

Strategi Bybit EMA RSI trend tracking and momentum adalah strategi perdagangan kuantitatif yang menggabungkan indeks moving average (EMA) dan indeks relatif kuat (RSI). Strategi ini menggunakan dua periode EMA yang berbeda untuk menilai tren pasar, sambil menggunakan indikator RSI untuk mengkonfirmasi efektivitas tren. Strategi ini menghasilkan sinyal ganda ketika EMA lambat melintasi EMA cepat dan RSI berada di bawah batas bawah tertentu; sebaliknya, strategi ini menghasilkan sinyal kosong ketika EMA lambat melintasi EMA cepat dan RSI berada di atas batas atas tertentu.

Prinsip Strategi

  1. Hitung EMA cepat dan EMA lambat, dengan siklus 90 dan 300.
  2. Perhitungan RSI, periode 5 .
  3. Ketika EMA cepat melewati EMA lambat dan RSI lebih rendah dari 45, menghasilkan sinyal do lebih; ketika EMA cepat melewati EMA lambat dan RSI lebih tinggi dari 85, menghasilkan sinyal do kosong.
  4. Rasio biaya yang berbeda diatur berdasarkan tingkat akun Bybit, mulai dari 0,075% untuk VIP 0 hingga 0,035% untuk VIP 4.
  5. Perhitungan harga pembukaan termasuk biaya proses.
  6. Stop loss dan harga stop loss dihitung berdasarkan persentase stop loss yang ditetapkan (< 5% dan < 3%).
  7. Pada grafik, gambarkan harga open, stop loss, dan stop loss.
  8. Operasi pembukaan posisi berdasarkan sinyal perdagangan.

Keunggulan Strategis

  1. Kombinasi dengan trend tracking dan momentum indicator, dapat menangkap tren pasar dengan lebih baik.
  2. Built-in Stop Stop Stop Loss, dapat mengontrol risiko secara efektif.
  3. Sesuai dengan tingkat akun Bybit, setellah rasio biaya yang berbeda untuk menyesuaikan kondisi transaksi pengguna yang berbeda.
  4. Pada grafik ini, Anda dapat memetakan harga open, stop loss, dan stop loss untuk memberikan sinyal konfirmasi perdagangan yang intuitif.

Risiko Strategis

  1. Pilihan parameter EMA dan RSI mungkin tidak berlaku untuk semua lingkungan pasar dan perlu dioptimalkan sesuai dengan situasi aktual.
  2. Dalam pasar yang bergolak, strategi ini dapat menghasilkan sinyal perdagangan yang sering, yang menyebabkan biaya transaksi yang tinggi.
  3. Pengaturan stop loss mungkin terlalu konservatif atau radikal dan perlu disesuaikan dengan preferensi risiko pribadi.

Arah optimasi strategi

  1. Parameter EMA dan RSI dioptimalkan untuk menyesuaikan dengan kondisi pasar yang berbeda. Kombinasi optimal dapat ditemukan melalui retracement dan scan parameter.
  2. Untuk meningkatkan akurasi sinyal perdagangan, indikator teknis lainnya seperti Brinks, MACD dan lain-lain diperkenalkan.
  3. Mengoptimalkan pengaturan stop loss, misalnya menggunakan stop loss bergerak atau stop loss dinamis, untuk lebih melindungi keuntungan dan mengendalikan risiko.
  4. Faktor-faktor seperti volatilitas pasar dan volume transaksi harus diperhitungkan untuk memfilter sinyal perdagangan dan mengurangi biaya yang ditimbulkan oleh perdagangan yang sering terjadi.

Meringkaskan

Strategi Bybit EMA RSI trend tracking dan momentum adalah strategi perdagangan kuantitatif yang menggabungkan trend tracking dan indikator momentum, dengan penggunaan kombinasi EMA dan RSI, dapat menangkap tren pasar dengan lebih baik. Strategi ini memiliki fitur stop loss built-in dan fitur untuk mengatur biaya sesuai dengan tingkat akun Bybit, yang dapat mengontrol risiko secara efektif dan menyesuaikan dengan kondisi perdagangan yang berbeda dari pengguna. Namun, strategi ini masih memiliki ruang untuk optimasi, seperti optimasi parameter, pengenalan indikator teknis lainnya, pengoptimalan pengaturan stop loss, dll.

Kode Sumber Strategi
/*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