Эта стратегия сочетает в себе технические индикаторы Relative Strength Index (RSI) и Exponential Moving Average (EMA), чтобы реализовать количественную торговую стратегию, основанную на тренде.
Сигнал длинного входа:
Когда оба критерия выполнены, вводится длинная позиция.
Максимальная потеря для каждой сделки ограничена 3% от общей стоимости счета.
Размер позиции при входе: Максимальная потеря / (цена входа - цена остановки) = размер позиции
Это эффективно контролирует риск по торговле.
Когда появляется один из сигналов, позиция закрывается.
Стратегия сочетает в себе преимущества следующего тренда и средней реверсии. EMA определяет общий тренд, затем сигналы входа происходят в потенциальных зонах переворота, извлекая выгоду как из тренда, так и из переворотов для стабильности. Параметры RSI также могут быть оптимизированы для разных рынков, что делает стратегию надежной.
Фиксированный максимальный убыток на одну сделку защищает капитал, напрямую контролируя уровень риска торговли.
Стратегия хорошо работает на рынках с очевидными тенденциями. В сложных и волатильных условиях использование EMA для тренда может иметь ограничения.
Размещение стоп-лосса имеет решающее значение для PnL, требуя тщательного тестирования на разных рынках. Если слишком широкий, одиночный убыток может расшириться; если слишком тесный, шум может вызвать нежелательные остановки. Для постоянной оптимизации требуется живое тестирование.
Проверка различных параметров RSI для адаптации к большему количеству рынков. Поиск оптимального соотношения размеров торговли. Добавление других технических индикаторов для создания более надежных систем входа / выхода. Все это варианты, которые стоит изучить.
/*backtest start: 2023-10-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Stratégie RSI et EMA avec Gestion du Risque", overlay=true) // Paramètres de la stratégie rsiLength = input(14, "Longueur du RSI") rsiOverbought = input(70, "Niveau de Surachat RSI") rsiOversold = input(30, "Niveau de Survente RSI") // Calcul du RSI rsiValue = rsi(close, rsiLength) // Paramètres des EMA ema20 = ema(close, 20) ema50 = ema(close, 50) ema200 = ema(close, 200) // Paramètre du risque par trade riskPerTrade = input(0.03, "Risque par Trade (3%)") // Distance du stop-loss en pips (à ajuster selon votre stratégie) stopLossPips = input(1, "Distance du Stop-Loss en pips") // Calcul de la taille de position et du stop-loss calculatePositionSize(entryPrice, stopLossPips) => stopLossPrice = entryPrice - stopLossPips * syminfo.mintick riskPerTradeValue = strategy.equity * riskPerTrade positionSize = riskPerTradeValue / (entryPrice - stopLossPrice) positionSize // Conditions d'entrée longCondition = (rsiValue < rsiOversold) and (close > ema20 or close > ema50 or close > ema200) if longCondition strategy.entry("Long", strategy.long, qty=1) // Conditions de sortie exitCondition = (rsiValue > rsiOverbought) or (close < ema20 or close < ema50 or close < ema200) if exitCondition strategy.close("Long") // Affichage des EMA et RSI sur le graphique plot(ema20, color=color.red) plot(ema50, color=color.green) plot(ema200, color=color.blue) hline(rsiOverbought, "Niveau de Surachat RSI", color=color.red) hline(rsiOversold, "Niveau de Survente RSI", color=color.blue) plot(rsiValue, "RSI", color=color.purple)