
Эта стратегия реализует количественную торговую стратегию, основанную на трендовом отслеживании, путем объединения двух технических показателей: относительно сильного индекса ((RSI) и индексальной движущейся средней ((EMA)). Эта стратегия применяется в основном для трендовых рынков, чтобы получить прибыль, следуя тренду, входя в рынок, когда цены могут измениться.
Посмотрите на знаки входа:
Мы делаем дополнительный вход, когда оба этих условия выполнены одновременно.
На каждую сделку мы ограничиваем максимальный возможный убыток в 3% от чистой стоимости аккаунта.
Размер позиции при входе рассчитывается следующим образом: максимальный убыток / ((входная цена - цена Stop Loss) = размер позиции
Это позволяет эффективно контролировать риски отдельных сделок.
Сигналы о равновесии, как правило, следующие:
Если мы выполним эти условия, мы уйдем.
Эта стратегия сочетает в себе преимущества отслеживания тенденций и обратного трейдинга. С помощью EMA можно определить направление большого тренда, а затем вовремя войти в рынок, когда в зоне перепродажи происходит обратный тренд.
Ограничение максимального убытка на одну сделку позволяет эффективно контролировать риски отдельных сделок и защитить средства счета.
Эта стратегия в основном подходит для рынков с более заметным трендом. Если вы столкнетесь с сложным изменчивым рынком, использование EMA для определения трендового эффекта может быть дисконтировано. Кроме того, RSI имеет определенную отсталость и требует анализа в сочетании с фактическим движением цен.
Настройка стоп-стоп имеет решающее значение для прибыли и убытка стратегии, и ее необходимо устанавливать в соответствии с тщательным тестированием на различных рынках. Если стоп-стоп установлен слишком высоко, то одиночные потери могут увеличиться; если стоп-стоп слишком низко, то он может быть заглушен рынком.
Можно попытаться оптимизировать параметры RSI, чтобы адаптироваться к более широкой рыночной среде. Можно протестировать различные пропорции размеров позиций, чтобы найти оптимальные настройки. Можно протестировать добавление других технических показателей, чтобы создать более устойчивую систему входа и выхода.
Стратегия объединяет преимущества отслеживания тенденций и обратных сделок, одновременно оценивая большие тенденции, вступая на рынок в возможных переломных моментах. Используя оптимизацию параметров показателей, таких как 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)