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.
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.
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