Sumber dimuat naik... memuat...

RSI Multi-Periode Momentum dan Tren EMA Tiga Berikutan Strategi Komposit

Penulis:ChaoZhang, Tarikh: 2024-11-12 15:07:54
Tag:RSIEMA

img

Ringkasan

Strategi ini adalah sistem dagangan komposit yang menggabungkan penunjuk momentum RSI dengan penunjuk trend EMA. Beroperasi pada kedua-dua jangka masa 1 minit dan 5 minit, ia membuat keputusan dagangan berdasarkan isyarat overbought / oversold RSI dan penentuan trend EMA tiga kali. Strategi ini menggabungkan kedua-dua trend berikut dan ciri-ciri pembalikan purata, yang membolehkannya menangkap peluang dagangan dalam persekitaran pasaran yang berbeza.

Prinsip Strategi

Strategi ini menggunakan EMA tiga hari 21/50/200 sebagai penanda aras penilaian trend, digabungkan dengan penunjuk RSI yang diubah suai (dihitung menggunakan kaedah Chebyshev) untuk mengenal pasti keadaan pasaran yang terlalu banyak dibeli / terlalu banyak dijual. Pada jangka masa 1 minit, ia memulakan kedudukan pendek apabila RSI memecahkan di atas 94 dan ditutup apabila jatuh di bawah 4, dengan berhenti impas ditetapkan apabila RSI kembali ke 50. Pada jangka masa 5 minit, ia memulakan kedudukan panjang apabila harga bangkit selepas jatuh di bawah EMA 200 hari, menutup kedudukan apabila RSI terlalu banyak dibeli atau memecahkan di bawah median. Peralihan pengurusan kedudukan dalamPositionLong dan inPositionShort menghalang kemasukan berulang.

Kelebihan Strategi

  1. Analisis jangka masa berbilang meningkatkan kebolehpercayaan isyarat
  2. Menggabungkan penunjuk trend dan momentum untuk faedah pelengkap
  3. Melaksanakan mekanisme stop-loss untuk kawalan risiko
  4. Menggunakan kaedah pengiraan RSI yang lebih baik untuk isyarat yang lebih tepat
  5. Menghalang perdagangan berganda melalui pengurusan kedudukan
  6. Sesuai dengan persekitaran pasaran yang berbeza

Risiko Strategi

  1. Perdagangan yang kerap boleh menimbulkan kos transaksi yang tinggi
  2. Boleh mencetuskan hentian yang kerap di pasaran yang tidak menentu
  3. Indikator RSI boleh menghasilkan isyarat palsu dalam keadaan pasaran tertentu
  4. Strategi pelbagai tempoh mungkin mempunyai kelewatan dalam pengesahan isyarat
  5. Isyarat silang EMA mungkin mengelirukan di pasaran pelbagai

Arahan pengoptimuman

  1. Memperkenalkan penapis turun naik untuk menyesuaikan parameter semasa tempoh turun naik yang tinggi
  2. Tambah mekanisme pengesahan jumlah
  3. Mengoptimumkan ambang RSI dengan penyesuaian dinamik yang berpotensi
  4. Sertakan penunjuk teknikal tambahan untuk pengesahan silang
  5. Melaksanakan mekanisme parameter penyesuaian
  6. Membangunkan mekanisme stop-loss yang lebih canggih

Ringkasan

Strategi ini meningkatkan kestabilan perdagangan dan kebolehpercayaan melalui gabungan beberapa penunjuk teknikal dan analisis jangka masa berbilang. Walaupun terdapat risiko tertentu, mereka dapat dikawal dengan berkesan melalui pengurusan kedudukan yang betul dan mekanisme stop-loss. Strategi ini mempunyai potensi pengoptimuman yang signifikan, dan prestasi dapat ditingkatkan lagi dengan memperkenalkan penunjuk teknikal tambahan dan mengoptimumkan parameter.


/*backtest
start: 2023-11-12 00:00:00
end: 2024-07-10 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined RSI Primed and 3 EMA Strategy", overlay=true)

// Input for EMA lengths
emaLength1 = input(21, title="EMA Length 1")
emaLength2 = input(50, title="EMA Length 2")
emaLength3 = input(200, title="EMA Length 3")

// Input for RSI settings
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(94, title="RSI Overbought Level")
rsiNeutral = input(50, title="RSI Neutral Level")
rsiOversold = input(4, title="RSI Oversold Level")

// Calculate EMAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
ema3 = ta.ema(close, emaLength3)

// Calculate RSI using Chebyshev method from RSI Primed
rsi(source) =>
    up = math.max(ta.change(source), 0)
    down = -math.min(ta.change(source), 0)
    rs = up / down
    rsiValue = down == 0 ? 100 : 100 - (100 / (1 + rs))
    rsiValue

rsiValue = rsi(close)

// Plot EMAs
plot(ema1, color=color.red, title="EMA 21")
plot(ema2, color=color.white, title="EMA 50")
plot(ema3, color=color.blue, title="EMA 200")

// Plot RSI for visual reference
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiNeutral, "Neutral", color=color.gray)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsiValue, color=color.blue, title="RSI")

// Trading logic with position management
var bool inPositionShort = false
var bool inPositionLong = false

// Trading logic for 1-minute timeframe
if (rsiValue > rsiOverbought and not inPositionShort)
    strategy.entry("Sell", strategy.short)
    inPositionShort := true

if (rsiValue < rsiOversold and inPositionShort)
    strategy.close("Sell")
    inPositionShort := false

if (ta.crossover(rsiValue, rsiNeutral) and inPositionShort)
    strategy.exit("Break Even", "Sell", stop=close)

// Trading logic for 5-minute timeframe
var float lastBearishClose = na

if (close < ema3 and close[1] >= ema3) // Check if the current close is below EMA200
    lastBearishClose := close

if (not na(lastBearishClose) and close > lastBearishClose and not inPositionLong)
    strategy.entry("Buy", strategy.long)
    inPositionLong := true

if (rsiValue > rsiOverbought and inPositionLong)
    strategy.close("Buy")
    inPositionLong := false

if (ta.crossunder(rsiValue, rsiNeutral) and inPositionLong)
    strategy.exit("Break Even", "Buy", stop=close)

lastBearishClose := na // Reset after trade execution

Berkaitan

Lebih lanjut