EMA/MACD/RSI crossover strategi adalah strategi perdagangan kuantitatif yang menggabungkan beberapa petunjuk teknikal. Strategi ini terutamanya menggunakan penyambungan isyarat indeks moving averages (EMA), moving averages convergence dispersion indicators (MACD) dan indeks yang agak lemah (RSI) untuk menilai trend pasaran dan menghasilkan isyarat perdagangan.
Prinsip utama strategi ini adalah untuk menentukan masa masuk dan keluar melalui persilangan dan kerjasama pelbagai petunjuk:
Syarat beli adalah melalui EMA laju melalui EMA perlahan atau MACD melalui garis isyarat, sementara RSI lebih tinggi daripada tahap oversold. Syarat jual sebaliknya. Strategi juga mengelakkan pembukaan kedudukan berulang, meningkatkan kecekapan penggunaan dana dengan memeriksa keadaan kedudukan semasa.
Strategi silang EMA/MACD/RSI adalah sistem perdagangan analisis teknikal yang komprehensif untuk mengenal pasti peluang perdagangan dan menguruskan risiko melalui sinergi pelbagai petunjuk. Kelebihan utama strategi ini adalah perspektif analisis pasaran berbilang dimensi dan mekanisme pengurusan risiko yang fleksibel. Walau bagaimanapun, pengguna perlu memperhatikan perbezaan prestasi strategi dalam pelbagai persekitaran pasaran dan melakukan pengoptimuman parameter untuk jenis perdagangan dan keadaan pasaran tertentu.
/*backtest
start: 2024-10-06 00:00:00
end: 2024-10-13 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Mister Buy / sell signals", overlay=true, shorttitle="Mister Buy / sell signals")
// ─────────────────────────────────────────────────────────────
// Paramètres des EMA et adaptation selon le timeframe
ema_fast_length = input(3, title="EMA Rapide (12)")
ema_slow_length = input(4, title="EMA Lente (26)")
ema_long_length = input(5, title="EMA Longue (50)")
// Paramètres MACD
macd_fast_length = input(1, title="MACD Période Rapide")
macd_slow_length = input(2, title="MACD Période Lente")
macd_signal_length = input(3, title="MACD Signal (9)")
// Paramètres RSI
rsi_length = input(42, title="RSI Période")
rsi_overbought = input(70, title="RSI Zone de surachat")
rsi_oversold = input(30, title="RSI Zone de survente")
// Paramètres ATR
atr_length = input(12, title="ATR Période")
atr_multiplier = input(1.0, title="Multiplicateur ATR pour Stop")
// ─────────────────────────────────────────────────────────────
// Calcul des EMA
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
ema_long = ta.ema(close, ema_long_length)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macdLine, signalLine, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
// Calcul de l'ATR pour gérer les stops
atr_value = ta.atr(atr_length)
// ─────────────────────────────────────────────────────────────
// Conditions d'achat et de vente basées sur MACD, EMA et RSI
buy_condition = (ta.crossover(ema_fast, ema_slow) or ta.crossover(macdLine, signalLine)) and rsi > rsi_oversold
sell_condition = (ta.crossunder(ema_fast, ema_slow) or ta.crossunder(macdLine, signalLine)) and rsi < rsi_overbought
// ─────────────────────────────────────────────────────────────
// Vérification des positions ouvertes pour éviter les doublons
long_position = strategy.position_size > 0 // Position d'achat ouverte
short_position = strategy.position_size < 0 // Position de vente ouverte
// ─────────────────────────────────────────────────────────────
// Gestion des positions et Stop Loss
long_stop = close - atr_value * atr_multiplier
short_stop = close + atr_value * atr_multiplier
// Entrer les positions uniquement si aucune position n'est ouverte dans la même direction
if (buy_condition and not long_position)
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", from_entry="Buy", stop=long_stop)
if (sell_condition and not short_position)
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", from_entry="Sell", stop=short_stop)
// ─────────────────────────────────────────────────────────────
// Affichage des EMA et du MACD sur le graphique
plot(ema_fast, color=color.green, linewidth=2, title="EMA Rapide (12)")
plot(ema_slow, color=color.red, linewidth=2, title="EMA Lente (26)")
plot(ema_long, color=color.blue, linewidth=1, title="EMA Longue (50)")
plot(macdLine, color=color.green, title="MACD Line")
plot(signalLine, color=color.red, title="MACD Signal Line")
// ─────────────────────────────────────────────────────────────
// Signaux graphiques pour les points d'entrée et de sortie
// Affichage des signaux d'achat si aucune position Buy n'est active
plotshape(series=buy_condition and not long_position, title="Signal Achat", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white)
// Affichage des signaux de vente si aucune position Sell n'est active
plotshape(series=sell_condition and not short_position, title="Signal Vente", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white)