Plusieurs indicateurs suivent de manière dynamique la stratégie de trading des bandes de tendance

EMA RSI ADX ATR TP SL
Date de création: 2025-02-18 14:02:44 Dernière modification: 2025-02-18 14:02:44
Copier: 2 Nombre de clics: 327
1
Suivre
1617
Abonnés

Plusieurs indicateurs suivent de manière dynamique la stratégie de trading des bandes de tendance

Il s’agit d’une stratégie de suivi de tendance basée sur plusieurs indicateurs techniques permettant de négocier des bandes de fréquence en ajustant dynamiquement les positions. La stratégie utilise principalement les moyennes mobiles de l’indice (EMA), l’indice de force relative (RSI) et l’indice de direction de la tendance (ADX) pour analyser les tendances du marché et générer des signaux de négociation, tout en utilisant l’amplitude de fluctuation réelle (ATR) pour définir des objectifs de stop-loss et de gain dynamiques.

Aperçu de la stratégie

La stratégie est un système de trading de suivi de tendance combinant plusieurs indicateurs techniques. Elle détermine principalement la direction de la tendance des prix à l’aide de l’EMA, le RSI détermine l’état de survente du marché, l’ADX vérifie la force de la tendance et, enfin, utilise l’ATR pour ajuster dynamiquement la taille de la position et les paramètres de gestion du risque. La stratégie prend en charge plusieurs méthodes de calcul de la position, notamment en fonction du pourcentage de compte, du montant du capital fixe et du nombre de contrats fixes.

Principe de stratégie

  1. Signaux d’entrée: signal de coupe lorsque le prix est supérieur à l’EMA et que le RSI est supérieur à 50 et que l’ADX est supérieur à la barre définie. Signal de coupe lorsque le prix est inférieur à l’EMA et que le RSI est inférieur à 50 et que l’ADX est supérieur à la barre définie.
  2. Gestion des positions: le montant des positions ouvertes est calculé en fonction de la méthode choisie par l’utilisateur et prend en charge quatre méthodes basées sur le ratio de risque, le ratio de fonds, le montant de fonds fixes et le nombre de contrats fixes.
  3. Contrôle des risques: utilisation de l’ATR pour calculer dynamiquement les objectifs de stop loss et de profit, tout en réalisant un suivi des protections de stop loss et des profits déjà réalisés.

Analyse des avantages

  1. Confirmation de tendance multidimensionnelle: amélioration de la fiabilité des signaux de négociation grâce à la confirmation de tendance par le triple indicateur EMA, RSI et ADX.
  2. Gestion de position flexible: prend en charge plusieurs méthodes de calcul de position pour répondre aux besoins de différents traders.
  3. Gestion dynamique des risques: définition d’objectifs dynamiques de stop loss et de profit basés sur l’ATR, adaptés aux changements de volatilité du marché.
  4. Tracking Stop: Protège les bénéfices déjà réalisés et améliore la rentabilité globale grâce au trailing stop.

Analyse des risques

  1. Risque de retard: les indicateurs techniques ont un certain retard, ce qui peut entraîner un retard dans l’admission.
  2. Risque de marché oscillant: Il est possible de générer de faux signaux fréquents dans un marché oscillant.
  3. Sensitivité des paramètres: le choix de plusieurs paramètres de l’indicateur peut avoir un impact significatif sur la performance de la stratégie.
  4. Risque d’effet de levier: le soutien à un effet de levier élevé peut entraîner un risque financier plus élevé.

Direction d’optimisation

  1. Adaptation aux conditions du marché: il est possible d’ajouter un mécanisme d’identification des conditions du marché et d’ajuster dynamiquement les paramètres en fonction des différentes conditions du marché.
  2. Filtrage du signal: l’introduction d’indicateurs auxiliaires tels que le trafic, améliore la qualité du signal.
  3. Optimisation de l’arrêt des lots: des mécanismes d’arrêt des lots plus flexibles peuvent être conçus pour améliorer la rentabilité.
  4. Renforcement des contrôles des risques: renforcement des mécanismes de gestion des risques tels que les contrôles des retraits maximaux

Résumer

Il s’agit d’une stratégie de suivi de tendance intégrée à l’aide de plusieurs indicateurs techniques, permettant des transactions relativement stables grâce à une reconnaissance de tendance multidimensionnelle et à un mécanisme de gestion des risques amélioré. L’avantage de la stratégie réside dans un mécanisme de reconnaissance de tendance systémique et une gestion de position flexible, mais il faut également tenir compte de problèmes tels que le retard des indicateurs et l’adaptabilité à l’environnement du marché.

Code source de la stratégie
/*backtest
start: 2025-02-10 00:00:00
end: 2025-02-17 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Momentum Scalper", shorttitle="EMS", overlay=true, pyramiding=0)

// === ПАРАМЕТРЫ ===
posSizeMethod = input.string("Capital %", title="Метод расчета позиции", options=["% Based", "Capital %", "Fixed Capital Based", "Fixed Contract Size"])
riskPerTrade = input.float(3, title="Риск на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
capitalPctPerTrade = input.float(10, title="Доля капитала на сделку (%)", minval=0.1, maxval=100, step=0.5) / 100
fixedCapitalAmount = input.float(100, title="Фиксированная сумма капитала", minval=0)
fixedContractSize = input.int(10, title="Фиксированный размер контракта")
atrLength = input.int(14, title="Длина ATR")
atrMultiplierSL = input.float(2.5, title="ATR множитель для SL")
atrMultiplierTP = input.float(1.5, title="ATR множитель для TP")
timeoutBars = input.int(20, title="Выход через X баров, если нет TP/SL")
emaLength = input.int(50, title="Длина EMA")
rsiLength = input.int(14, title="Длина RSI")
rsiOverbought = input.int(70, title="RSI перекупленность")
rsiOversold = input.int(30, title="RSI перепроданность")
adxLength = input.int(14, title="Длина ADX")
adxThreshold = input.float(20, title="Порог ADX для тренда")
leverage = input.int(15, title="Плечо", minval=1, maxval=100)

// === ИНДИКАТОРЫ ===
atr = ta.atr(atrLength)
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)

// === ADX ===
diPlus = ta.rma(math.max(high - high[1], 0), adxLength)
diMinus = ta.rma(math.max(low[1] - low, 0), adxLength)
dx = 100 * math.abs(diPlus - diMinus) / (diPlus + diMinus)
adx = ta.rma(dx, adxLength)

// === УСЛОВИЯ ВХОДА ===
longEntry = ta.crossover(close, ema) and rsi > 50 and adx > adxThreshold
shortEntry = ta.crossunder(close, ema) and rsi < 50 and adx > adxThreshold

// === РАСЧЕТ РАЗМЕРА ПОЗИЦИИ ===
var float qty = na
riskAmount = strategy.equity * riskPerTrade
stopLossDistance = atr * atrMultiplierSL
positionSize = riskAmount / stopLossDistance

if (posSizeMethod == "% Based")
    qty := strategy.equity * riskPerTrade / (atr * atrMultiplierSL)
else if (posSizeMethod == "Capital %")
    qty := strategy.equity * capitalPctPerTrade / close
else if (posSizeMethod == "Fixed Capital Based")
    qty := fixedCapitalAmount / close
else if (posSizeMethod == "Fixed Contract Size")
    qty := fixedContractSize

qty := qty * leverage  // Умножаем на плечо

// === СТОП-ЛОСС И ТЕЙК-ПРОФИТ ===
entryPrice = close
stopLossLong = entryPrice - atrMultiplierSL * atr
stopLossShort = entryPrice + atrMultiplierSL * atr
takeProfit1 = entryPrice + atrMultiplierTP * atr * (longEntry ? 1 : -1)
takeProfit2 = entryPrice + atrMultiplierTP * atr * (longEntry ? 2 : -2) / 1.5

// === ТРЕЙЛИНГ-СТОП ===
trailStopDistance = atr * atrMultiplierSL

if (longEntry)
    strategy.entry("Long", strategy.long, qty=qty)
    strategy.exit("Exit Long", "Long", stop=stopLossLong, limit=takeProfit1, trail_points=trailStopDistance)
    alertMessage = syminfo.ticker + " LONG\n" +
                   "Leverage: Cross " + str.tostring(leverage) + "x\n" +
                   "➡️ Entry: " + str.tostring(entryPrice) + "\n" +
                   "🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
                   "🛑 Stop loss: " + str.tostring(stopLossLong)
    alert(alertMessage, alert.freq_once_per_bar_close)

if (shortEntry)
    strategy.entry("Short", strategy.short, qty=qty)
    strategy.exit("Exit Short", "Short", stop=stopLossShort, limit=takeProfit1, trail_points=trailStopDistance)
    alertMessage = syminfo.ticker + " SHORT\n" +
                   "Leverage: Cross " + str.tostring(leverage) + "x\n" +
                   "➡️ Entry: " + str.tostring(entryPrice) + "\n" +
                   "🟢 Take profit 1: " + str.tostring(takeProfit1) + "\n" +
                   "🛑 Stop loss: " + str.tostring(stopLossShort)
    alert(alertMessage, alert.freq_once_per_bar_close)

// === ВИЗУАЛИЗАЦИЯ ===
plotshape(longEntry, color=color.green, style=shape.labelup, location=location.belowbar, text="BUY")
plotshape(shortEntry, color=color.red, style=shape.labeldown, location=location.abovebar, text="SELL")
plot(ema, color=color.blue, title="EMA")
bgcolor(rsi > rsiOverbought or rsi < rsiOversold ? color.new(color.gray, 80) : na)