EMA RSI Mengikuti Trend dan Strategi Momentum


Tarikh penciptaan: 2024-03-29 16:30:42 Akhirnya diubah suai: 2024-03-29 16:30:42
Salin: 0 Bilangan klik: 612
1
fokus pada
1617
Pengikut

EMA RSI Mengikuti Trend dan Strategi Momentum

Gambaran keseluruhan

EMA RSI Bybit Strategi trend-tracking dan momentum adalah strategi perdagangan kuantitatif yang menggabungkan purata bergerak indeks (EMA) dan indeks relatif lemah (RSI). Strategi ini menggunakan EMA dua kitaran yang berbeza untuk menilai trend pasaran, sambil menggunakan indikator RSI untuk mengesahkan keberkesanan trend.

Prinsip Strategi

  1. Hitung EMA pantas dan EMA perlahan, dengan kitaran 90 dan 300.
  2. Hitung RSI dengan kitaran 5.
  3. Apabila EMA cepat melintasi EMA perlahan dan RSI lebih rendah daripada 45, ia akan menghasilkan isyarat melakukan banyak; apabila EMA cepat melintasi EMA perlahan dan RSI lebih tinggi daripada 85, ia akan menghasilkan isyarat melakukan kosong.
  4. Peratusan bayaran bayaran yang berbeza ditetapkan mengikut peringkat akaun ByBit, dari 0.075% untuk VIP 0 hingga 0.035% untuk VIP 4.
  5. Harga pembukaan termasuk yuran.
  6. Harga hentian dan harga hentian dikira berdasarkan peratusan hentian dan kerugian yang ditetapkan ((5% dan 3%).
  7. Gambarkan harga bukaan, garis hentian dan garis hentian pada carta.
  8. Operasi pembukaan kedudukan berdasarkan isyarat dagangan.

Kelebihan Strategik

  1. Gabungan trend tracking dan indikator momentum, dapat menangkap trend pasaran dengan lebih baik.
  2. Fungsi penghentian kerosakan yang terbina dalam, dapat mengawal risiko dengan berkesan.
  3. Setkan perkadaran bayaran yang berbeza mengikut peringkat akaun Bybit, sesuai dengan syarat urus niaga pengguna yang berbeza.
  4. Menggambar harga pembukaan, garis hentian dan garis hentian pada carta, memberikan pengesahan isyarat perdagangan yang intuitif.

Risiko Strategik

  1. Pilihan parameter EMA dan RSI mungkin tidak sesuai untuk semua keadaan pasaran dan perlu dioptimumkan mengikut keadaan sebenar.
  2. Dalam pasaran yang bergolak, strategi ini boleh menghasilkan isyarat dagangan yang kerap, menyebabkan kos dagangan yang tinggi.
  3. Tetapan stop loss mungkin terlalu konservatif atau radikal dan perlu disesuaikan dengan keutamaan risiko individu.

Arah pengoptimuman strategi

  1. Parameter EMA dan RSI dioptimumkan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Anda boleh mencari kombinasi parameter yang terbaik melalui pengulangan dan pengimbasan parameter.
  2. Pengenalan penunjuk teknikal lain seperti Brinks, MACD dan lain-lain untuk meningkatkan ketepatan isyarat perdagangan.
  3. Mengoptimumkan tetapan stop loss, seperti menggunakan stop loss bergerak atau stop loss dinamik, untuk melindungi keuntungan dan mengawal risiko dengan lebih baik.
  4. Mempertimbangkan faktor-faktor seperti turun naik pasaran dan jumlah urus niaga, menapis isyarat urus niaga, dan mengurangkan kos yang disebabkan oleh perdagangan yang kerap.

ringkaskan

Strategi Bybit EMA RSI trend tracking dan momentum adalah strategi perdagangan kuantitatif yang menggabungkan trend tracking dan indikator momentum, dengan penggunaan EMA dan RSI yang dikombinasikan, dapat menangkap trend pasaran dengan lebih baik. Strategi ini mempunyai fungsi terbina dalam untuk menghentikan kerugian dan fungsi untuk menetapkan bayaran bayaran mengikut tahap akaun Bybit, yang dapat mengawal risiko dengan berkesan dan menyesuaikan diri dengan keadaan perdagangan yang berbeza. Walau bagaimanapun, strategi ini masih mempunyai ruang untuk pengoptimuman, seperti pengoptimuman parameter, pengenalan petunjuk teknikal lain, pengoptimuman tetapan stop loss, dll.

Kod 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