La stratégie de double filtrage RSI et EMA est une stratégie de négociation quantitative basée sur un indicateur relativement faible (RSI) et une moyenne mobile indicielle (EMA). Elle utilise l’indicateur RSI pour juger de la survente et de la survente du marché, tout en combinant les deux lignes EMA rapides et lentes pour juger de la tendance, ce qui sert de base à l’entrée et à la sortie.
Les principes fondamentaux de cette stratégie peuvent être divisés en plusieurs parties:
Calcul et application de l’indicateur RSI: la stratégie commence par calculer l’indicateur RSI pour un cycle personnalisé (par défaut 2). Lorsque le RSI est inférieur au seuil de survente (par défaut 10), cela indique que le marché est en survente et un effet de levier peut être envisagé. Lorsque le RSI est supérieur au seuil de survente (par défaut 90), cela indique que le marché est en survente et un effet de levier peut être envisagé.
Détermination de la tendance de la ligne EMA rapide: la stratégie calcule deux lignes EMA, une ligne lente (avec un cycle par défaut de 200) et une ligne rapide (avec un cycle par défaut de 50). Lorsque la ligne rapide est au-dessus de la ligne lente et le prix au-dessus de la ligne lente, le marché est considéré comme en hausse.
Filtrage de tendance: la stratégie offre une option de filtrage de tendance. Si cette option est activée, les positions en survente ne sont ouvertes que si le RSI est survendu et les positions en survente ne sont ouvertes que si le RSI est survendu.
Confirmation du signal de transaction: la stratégie prend en compte les résultats de l’indicateur RSI et des jugements de tendance de l’EMA pour produire le signal de transaction final. Dans une tendance à plusieurs têtes, ouvrez une position supplémentaire lorsque le RSI est inférieur au seuil de survente; dans une tendance à vide, ouvrez une position vide lorsque le RSI est supérieur au seuil de survente.
Gestion des positions: la stratégie utilise un intervalle de négociation minimal (de 5 minutes par défaut) pour contrôler la fréquence des transactions et éviter les transactions excessives. En même temps, la stratégie utilise une combinaison de tracking stop loss et de stop loss fixe pour la gestion des risques, ce qui permet à la fois une bonne continuation des profits et une gestion efficace des pertes.
Le double filtrage RSI/EMA présente les avantages suivants:
Une bonne capacité de suivi des tendances: en détectant rapidement les tendances des lignes EMA, la stratégie permet de saisir efficacement les principales tendances du marché et d’éviter de négocier fréquemment dans des marchés instables.
Filtre efficacement les faux signaux: L’indicateur RSI est plus susceptible de générer de faux signaux, en particulier dans les marchés où la tendance est incertaine. Le filtre de tendance EMA permet d’identifier efficacement les principales tendances et de réduire les faux signaux générés par le RSI.
La stratégie utilise une combinaison de stop loss suivi et stop loss fixe, ce qui permet à la fois une bonne continuité des profits et une maîtrise efficace des pertes. Cette gestion des risques améliore la stabilité de la stratégie et la capacité de contrôle des retraits.
Flexibilité des paramètres: la stratégie offre plusieurs paramètres pour l’ajustement de l’utilisateur, tels que les cycles RSI, les seuils de survente, les cycles EMA, le taux de rupture, etc. Cela permet à la stratégie de s’adapter de manière flexible à différents environnements de marché et habitudes de trading.
Bien que les stratégies de double filtration du RSI et de l’EMA présentent de bons avantages, il existe des risques potentiels:
Risque de renversement de tendance: les lignes EMA peuvent être en retard lors d’un renversement de tendance du marché, ce qui peut entraîner une stratégie à rater l’heure d’entrée optimale ou un retard de sortie.
Risque d’optimisation des paramètres: la performance de la stratégie est sensible aux paramètres, et différentes combinaisons de paramètres peuvent donner des résultats complètement différents. Si les paramètres sont optimisés à l’excès, cela peut entraîner une mauvaise performance de la stratégie sur les marchés futurs.
Risque d’événement Black Swan: la stratégie est analysée et optimisée sur la base des données historiques, mais les données historiques ne peuvent pas refléter complètement les événements extrêmes qui pourraient se produire à l’avenir. Une fois qu’un événement Black Swan se produit, la stratégie peut subir des pertes importantes.
Pour faire face à ces risques, les solutions suivantes peuvent être envisagées:
L’analyse de l’évolution de la tendance peut être combinée à d’autres indicateurs techniques ou à des modèles de comportement des prix pour aider à déterminer le changement de tendance et à effectuer des ajustements précoces.
Optimisation modérée des paramètres, afin d’éviter une adaptation excessive aux données historiques. En même temps, révision et ajustement des paramètres réguliers, adaptés aux dernières caractéristiques du marché.
Il est nécessaire de définir des limites raisonnables de stop-loss et de contrôler les pertes maximales d’une transaction individuelle. En même temps, il est nécessaire de contrôler les risques au niveau du portefeuille, par exemple, les investissements décentralisés, le contrôle des positions, etc.
Introduction de plus d’indicateurs techniques: Sur la base des indicateurs RSI et EMA existants, il est possible d’introduire plus d’indicateurs techniques efficaces, tels que le MACD, les bandes de Brin, etc., pour améliorer la précision et la stabilité du signal de la stratégie.
Optimiser les méthodes de jugement des tendances: en plus d’utiliser les lignes EMA pour juger des tendances, d’autres méthodes de jugement des tendances peuvent être explorées, telles que la méthode des points hauts et bas, le système de ligne uniforme, etc. La combinaison de plusieurs méthodes de jugement des tendances peut améliorer l’adaptabilité de la stratégie.
Amélioration des méthodes de gestion des risques: sur la base des méthodes de gestion des risques plus avancées, telles que les arrêts de suivi et les arrêts fixes, il est possible d’introduire des méthodes de gestion des risques plus avancées, telles que les arrêts de volatilité, les arrêts dynamiques, etc. Ces méthodes peuvent mieux s’adapter aux changements de volatilité du marché, ce qui permet de mieux contrôler les risques.
Ajout du module de gestion de position: la stratégie actuelle adopte la méthode de gestion de position fixe. Il est possible d’envisager l’introduction d’un module de gestion de position dynamique, permettant d’ajuster dynamiquement les positions en fonction de la volatilité du marché, des intérêts des comptes, etc., afin d’améliorer l’efficacité de l’utilisation des fonds.
Adaptation à plusieurs marchés et variétés: étendre la stratégie à plus de marchés et de variétés de négociation pour réduire le risque global en diversifiant les investissements. En même temps, il est possible d’étudier les corrélations entre les différents marchés et variétés et d’utiliser ces informations pour optimiser la disposition des actifs de la stratégie.
La stratégie de double filtrage RSI et EMA capte efficacement les tendances du marché grâce à une combinaison organique d’indicateurs et de moyennes mobiles d’indicateurs relativement faibles, tout en réduisant le risque de faux signaux de l’indicateur RSI. La logique de la stratégie est claire et comprend des mesures de gestion du risque bien intégrées, avec une bonne stabilité et un bon potentiel de profit. Cependant, la stratégie présente également des risques potentiels, tels que le risque de renversement de tendance, le risque d’optimisation des paramètres et le risque d’événements de Black Swan.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("RSI2", overlay=true)
// RSILength input
len = input(2, minval=1, title="RSILength")
// Threshold RSI up input
RSIthreshUP = input(90, title="Threshold RSI up")
// Threshold RSI down input
RSIthreshDWN = input(10, title="Threshold RSI down")
// Slow MA length input
mmlen = input(200, title="Slow MA len")
// Fast MA length input
mmflen = input(50, title="Fast MA len")
// Moving Average type input
machoice = input("EMA", defval="EMA", options=["SMA", "EMA"])
// Ticker size input
tick=input(0.5,title="Ticker size",type=input.float)
// Trend Filter input
filter=input(true,title="Trend Filter",type=input.bool)
// Trailing Stop percentage input
ts_percent = input(1, title="TrailingStop%")
// Stop Loss percentage input
sl_percent = input(0.3, title="Stop Loss %")
// Calculate RSI
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
// Calculate moving averages
mmslow = machoice == "SMA" ? sma(close, mmlen) : ema(close, mmlen)
mmfast = machoice == "SMA" ? sma(close, mmflen) : ema(close, mmflen)
// Plot moving averages
plot(mmslow, color=color.white)
plot(mmfast, color=color.yellow)
// Conditions for entry and exit
var lastLongEntryTime = 0
var lastShortEntryTime = 0
ConditionEntryL = if filter == true
mmfast > mmslow and close > mmslow and rsi < RSIthreshDWN
else
mmfast > mmslow and rsi < RSIthreshDWN
ConditionEntryS = if filter == true
mmfast < mmslow and close < mmslow and rsi > RSIthreshUP
else
mmfast < mmslow and rsi > RSIthreshUP
// Calculate trailing stop and stop loss
ts_calc = close * (1/tick) * ts_percent * 0.01
sl_price = close * (1 - sl_percent / 100)
// Entry and exit management
if ConditionEntryL and time - lastLongEntryTime > 1000 * 60 * 5 // 5 minutes
strategy.entry("RSILong", strategy.long)
lastLongEntryTime := time
if ConditionEntryS and time - lastShortEntryTime > 1000 * 60 * 5 // 5 minutes
strategy.entry("RSIShort", strategy.short)
lastShortEntryTime := time
lastLongEntryTimeExpired = time - lastLongEntryTime >= 1000 * 60 * 5
lastShortEntryTimeExpired = time - lastShortEntryTime >= 1000 * 60 * 5
strategy.exit("ExitLong", "RSILong", when=lastLongEntryTimeExpired, trail_points=0, trail_offset=ts_calc, stop=sl_price)
strategy.exit("ExitShort", "RSIShort", when=lastShortEntryTimeExpired, trail_points=0, trail_offset=ts_calc, stop=sl_price)