EMA/MACD/RSI Crossover Strategy adalah pendekatan perdagangan kuantitatif yang menggabungkan beberapa penunjuk teknikal. Strategi ini terutamanya menggunakan isyarat silang dari Exponential Moving Averages (EMA), Moving Average Convergence Divergence (MACD), dan Relative Strength Index (RSI) untuk menilai trend pasaran dan menghasilkan isyarat perdagangan. Strategi ini juga menggabungkan Average True Range (ATR) untuk menetapkan stop-loss dinamik, menguruskan risiko dengan berkesan. Pendekatan multi-penunjuk ini bertujuan untuk meningkatkan ketepatan dan kebolehpercayaan isyarat perdagangan.
Prinsip teras strategi ini adalah untuk menentukan titik masuk dan keluar melalui pelbagai penyambungan dan kombinasi penunjuk:
Syarat beli diaktifkan apabila EMA cepat melintasi di atas EMA perlahan atau apabila garis MACD melintasi di atas garis isyarat, sementara RSI berada di atas tahap oversold. Syarat jual adalah sebaliknya. Strategi ini juga memeriksa status kedudukan semasa untuk mengelakkan entri berulang, meningkatkan kecekapan modal.
EMA/MACD/RSI Crossover Strategy adalah sistem perdagangan analisis teknikal yang komprehensif yang mengenal pasti peluang perdagangan dan menguruskan risiko melalui sinergi pelbagai penunjuk. Kelebihan utama strategi ini terletak pada perspektif analisis pasaran berbilang dimensi dan mekanisme pengurusan risiko yang fleksibel. Walau bagaimanapun, pengguna perlu menyedari perbezaan prestasi strategi dalam pelbagai persekitaran pasaran dan mengoptimumkan parameter untuk instrumen perdagangan dan keadaan pasaran tertentu. Melalui peningkatan dan pengoptimuman yang berterusan, seperti memperkenalkan lebih banyak indikator dan menyempurnakan mekanisme mengambil keuntungan dan menghentikan kerugian, strategi ini berpotensi menjadi alat perdagangan kuantitatif yang kukuh. Dalam aplikasi praktikal, disyorkan untuk menjalankan pengujian balik dan perdagangan simulasi yang menyeluruh, digabungkan dengan wawasan pasaran dan prinsip pengurusan risiko, untuk mencapai hasil perdagangan yang optimum.
/*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)