Cette stratégie est basée sur l'idée classique de Larry Connors, utilisant un système de moyenne mobile double pour capturer l'oscillation à moyen terme du marché et tirer profit lorsqu'il est suracheté ou survendu.
Utilisez l'indice de volatilité de 2 périodes pour déterminer si le prix est dans la région de survente.
Utilisez la moyenne mobile à long terme (200 périodes) pour déterminer la direction de la tendance principale.
Lorsque le prix est au-dessus de l'AM long et que le RSI est au-dessous de la ligne de survente, ouvrir une position longue au prix du marché.
Lorsque le prix dépasse la courte période de MA (5 périodes) à la hausse, fermer la position longue au prix du marché pour réaliser un profit.
En outre, la stratégie prévoit les options de configuration suivantes:
Paramètres du RSI: durée de la période, niveaux de surachat/survente.
Paramètres de l'AM: longue et courte période.
Filtre RSI MA: ajouter RSI MA pour éviter les fluctuations du RSI.
Stop loss: configurable pour ajouter ou non un stop loss.
Le système de double MA permet de suivre efficacement les tendances à moyen et long terme.
Le RSI évite de manquer le meilleur moment d'entrée lors de fluctuations violentes.
Configuration flexible adaptée à l'optimisation des paramètres.
Une stratégie de percée, pas de risque de manquer les signaux.
La stratégie de double MA est sensible aux paramètres, nécessitant une optimisation pour obtenir les meilleures performances.
Le fait de ne pas avoir de stop loss entraîne un risque d'augmentation des pertes.
Une fausse rupture risque des pertes sur un marché oscillant.
Le risque de suradaptation au test de retour nécessite une validation sur tous les marchés et toutes les périodes.
Tester et optimiser les combinaisons de paramètres RSI et MA pour trouver le meilleur.
Testez des filtres d'entrée supplémentaires comme le pic de volume pour réduire les faux signaux.
Ajoutez un stop-loss de suivi pour contrôler les pertes d'une seule transaction.
Évaluer l'impact des différentes périodes de détention pour trouver l'optimum.
Testez la robustesse sur de plus longues périodes comme tous les jours.
Cette stratégie combine le suivi de la tendance double MA et le RSI suracheté/survendu pour former un système de rupture typique. Avec l'optimisation des paramètres, une gestion stricte des risques et une validation de la robustesse, elle peut devenir un outil de trading quantitatif puissant. Mais les traders doivent se méfier du backtest sur ajustement et continuer à améliorer la stratégie pour s'adapter aux conditions changeantes du marché.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()