Stratégie de momentum adaptative multi-états EMA-RSI combinée à un système de filtrage d'indice de volatilité

CI RSI EMA ATR
Date de création: 2024-12-27 14:05:32 Dernière modification: 2024-12-27 14:05:32
Copier: 2 Nombre de clics: 375
1
Suivre
1617
Abonnés

Stratégie de momentum adaptative multi-états EMA-RSI combinée à un système de filtrage d’indice de volatilité

Aperçu

La stratégie est un système d’adaptation qui combine le suivi de la tendance et la négociation intermédiaire pour juger de l’état du marché à travers l’indice de volatilité (CI) et adopter une logique de négociation correspondante en fonction des différentes conditions du marché. Dans les marchés tendance, la stratégie utilise les signaux de survente et de survente EMA et RSI; dans les marchés intermédiaires, la stratégie est principalement basée sur les extrêmes de l’indicateur RSI. La stratégie comprend également un système de stop-loss pour contrôler les risques et bloquer les bénéfices.

Principe de stratégie

Le cœur de la stratégie est de diviser le marché en deux états, le marché tendance (CI<38.2) et le marché intermédiaire (CI>61.8) à l’aide de l’indice de fluctuation (CI). Dans le marché tendance, le bullish est ouvert lorsque l’EMA rapide (cycles 9) traverse l’EMA lente (cycles 21) et que le RSI est inférieur à 70 et le bullish est ouvert lorsque l’EMA lente traverse l’EMA rapide et que le RSI est supérieur à 30. Dans le marché intermédiaire, le bullish est ouvert lorsque le RSI est inférieur à 30 et supérieur à 70.

Avantages stratégiques

  1. Adaptabilité du marché: reconnaissance de l’état du marché par l’indicateur CI, capacité à changer de stratégie de négociation avec souplesse dans différents environnements
  2. Confirmation de signaux multiples: une combinaison de moyennes mobiles, d’indicateurs de masse et d’indices de volatilité améliore la fiabilité des signaux de négociation
  3. Gestion des risques: un mécanisme d’arrêt des pertes pour contrôler efficacement les risques
  4. Logique de négociation claire: distinction entre les tendances et les deux états du marché, règles de négociation claires
  5. Taux de réussite élevé: 70 à 80% de réussite sur une période de 15 minutes

Risque stratégique

  1. Sensibilité aux paramètres: la stratégie utilise plusieurs indicateurs techniques, l’optimisation des paramètres est plus complexe
  2. Risque de fausse percée: des signaux erronés peuvent être générés lors de la transition des conditions du marché
  3. Effets de dérapage: risque de dérapage plus élevé dans un environnement de marché moins fluide
  4. Trop de transactions: les changements fréquents de l’état du marché peuvent conduire à des transactions excessives
  5. Dépendance au marché: la performance de la stratégie peut être fortement influencée par certaines conditions du marché

Orientation de l’optimisation de la stratégie

  1. Optimisation des paramètres dynamiques: les paramètres de l’indicateur peuvent être ajustés en fonction de la dynamique des différents environnements de marché
  2. Augmentation des filtres: ajout de conditions de filtrage telles que la quantité de transfert, la fréquence d’oscillation, etc. pour améliorer la qualité du signal
  3. Optimisation des mécanismes d’arrêt des pertes: on peut envisager l’utilisation d’arrêts dynamiques, tels que les arrêts ATR ou les arrêts de suivi
  4. Amélioration de l’identification des états: décomposition des états de marché plus détaillée, ajout de logiques de traitement pour les marchés neutres
  5. Développement du système de confirmation des signaux: ajouter plus de mécanismes de confirmation des signaux et réduire les faux signaux

Résumer

La stratégie a été conçue en combinant plusieurs indicateurs techniques pour construire un système de négociation auto-adaptatif, capable de maintenir une performance stable dans différents environnements de marché. Le principal avantage de la stratégie réside dans son adaptabilité au marché et son mécanisme de gestion des risques, mais il faut également prêter attention à l’optimisation des paramètres et à la dépendance des conditions de marché.

Code source de la stratégie
/*backtest
start: 2024-12-19 00:00:00
end: 2024-12-26 00:00:00
period: 45m
basePeriod: 45m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nopology

//@version=6

strategy("CI, EMA, RSI", overlay=false)

// Input parameters
lengthCI = input(14, title="CI Length")
lengthRSI = input(14, title="RSI Length")
fastLength = input(9, title="Fast EMA Length")
slowLength = input(21, title="Slow EMA Length")

// Calculate CI
atr = ta.atr(lengthCI)
highLowRange = math.log10(math.max(high[lengthCI], high) - math.min(low[lengthCI], low))
sumATR = math.sum(atr, lengthCI)
ci = 100 * (math.log10(sumATR / highLowRange) / math.log10(lengthCI))

// Calculate RSI
rsi = ta.rsi(close, lengthRSI)

// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Define conditions
trendingMarket = ci < 38.2
rangingMarket = ci > 61.8
bullishSignal = ta.crossover(fastEMA, slowEMA) and rsi < 70
bearishSignal = ta.crossover(slowEMA, fastEMA) and rsi > 30

// Plot indicators for visualization
plot(ci, title="Choppiness Index", color=color.purple, linewidth=2)
plot(fastEMA, title="Fast EMA", color=color.blue)
plot(slowEMA, title="Slow EMA", color=color.red)

// Strategy Execution
if (trendingMarket)
    if (bullishSignal)
        strategy.entry("Long", strategy.long)
    if (bearishSignal)
        strategy.entry("Short", strategy.short)
else if (rangingMarket)
    if (rsi < 30)
        strategy.entry("Long", strategy.long)
    if (rsi > 70)
        strategy.entry("Short", strategy.short)

// Close positions when conditions no longer met or reverse
if (trendingMarket and not bullishSignal)
    strategy.close("Long")
if (trendingMarket and not bearishSignal)
    strategy.close("Short")
if (rangingMarket and rsi > 40)
    strategy.close("Long")
if (rangingMarket and rsi < 60)
    strategy.close("Short")

// Optional: Add stop loss and take profit
stopLossPerc = input.float(2, title="Stop Loss (%)", minval=0.1, step=0.1) / 100
takeProfitPerc = input.float(4, title="Take Profit (%)", minval=0.1, step=0.1) / 100

strategy.exit("Exit Long", "Long", stop=close*(1-stopLossPerc), limit=close*(1+takeProfitPerc))
strategy.exit("Exit Short", "Short", stop=close*(1+stopLossPerc), limit=close*(1-takeProfitPerc))