EMA/MACD/RSI Crossover Strategy - это количественный торговый подход, который сочетает в себе несколько технических индикаторов. Эта стратегия в основном использует перекрестные сигналы от экспоненциальных скользящих средних (EMA), скользящих средних конвергентных дивергенций (MACD) и индекса относительной силы (RSI) для оценки рыночных тенденций и генерации торговых сигналов. Стратегия также включает средний истинный диапазон (ATR) для установки динамических стоп-лосов, эффективно управляя рисками. Этот многоиндикаторный подход направлен на повышение точности и надежности торговых сигналов.
Основной принцип этой стратегии заключается в определении точек входа и выхода с помощью множества перекрестных показателей и комбинаций:
Условия покупки запускаются, когда быстрая EMA пересекается выше медленной EMA или когда линия MACD пересекается выше линии сигнала, в то время как RSI находится выше уровня перепроданности. Условия продажи являются противоположными. Стратегия также проверяет текущее состояние позиции, чтобы избежать дублирования записей, повышая эффективность капитала.
EMA/MACD/RSI Crossover Strategy - это комплексная торговая система технического анализа, которая идентифицирует торговые возможности и управляет рисками с помощью синергии нескольких индикаторов. Основные преимущества этой стратегии заключаются в ее многомерной перспективе анализа рынка и гибком механизме управления рисками. Однако пользователи должны знать о различиях в производительности стратегии в различных рыночных условиях и оптимизировать параметры для конкретных торговых инструментов и рыночных условий. Благодаря постоянному улучшению и оптимизации, таким как внедрение большего количества индикаторов и совершенствование механизмов получения прибыли и стоп-лосса, эта стратегия имеет потенциал стать надежным количественным торговым инструментом.
/*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)