Cette stratégie combine trois indicateurs de classification: RSI, CCI et Williams%R pour générer des signaux de trading efficaces. Elle émettra des signaux d'achat ou de vente lorsque les trois indicateurs affichent simultanément des signaux de surachat ou de survente.
La stratégie s'appelle
La stratégie repose principalement sur les indicateurs suivants pour les décisions commerciales:
Lorsque le RSI est inférieur à 25, il indique un état de survente. Lorsque le RSI est supérieur à 75, il indique un état de surachat. La même logique s'applique aux paramètres CCI et Williams%R.
Lorsque les trois indicateurs affichent simultanément des signaux d'achat, c.-à-d. RSI < 25, CCI < -130, Williams %R < -85, la stratégie sera longue. Lorsque les trois indicateurs affichent simultanément des signaux de vente, c.-à-d. RSI > 75, CCI > 130, Williams %R > -15, la stratégie sera courte.
Cela évite les faux signaux d'un seul indicateur et améliore la fiabilité. Il configure également le stop loss et le take profit pour contrôler les risques et les rendements par transaction.
Filtre les faux signaux avec plusieurs indicateurs
En combinant RSI, CCI et Williams%R, la stratégie filtre certains faux signaux provenant d'indicateurs individuels, améliorant ainsi la précision.
L'arrêt automatique des pertes/des bénéfices gère les risques Les fonctions d'arrêt des pertes et de prise de profit intégrées fixent automatiquement les prix de sortie pour chaque transaction, plafonnant ainsi les pertes dans des limites tolérables.
Traitements à moyen terme La stratégie fonctionne mieux pour les transactions à moyen terme, en identifiant clairement les points d'inflexion à moyen terme via la combinaison d'indicateurs.
Données de backtest solides
La stratégie utilise des barres de 45 minutes de l'EUR/USD, une paire de devises majeure avec une liquidité et des données abondantes, réduisant les risques de surendettement dus à des données insuffisantes.
Identification d'une tendance à long terme faible
La stratégie repose davantage sur des signaux contraires. Ses capacités à évaluer et suivre les tendances à long terme sont limitées.
Manque de variations à court terme Avec les barres de 45 minutes, la stratégie manque des opportunités rentables de fluctuations de prix à court terme plus fréquentes.
Risques systémiques
La stratégie s'applique principalement à l'EUR/USD. En période de grave crise économique qui secoue le marché mondial des changes, ses règles de négociation pourraient échouer, entraînant d'énormes pertes.
Ajout d'indicateurs de tendance
Essayez d'incorporer des métriques de tendance comme MA, Boll, etc. pour aider à la reconnaissance de tendance à long terme.
Optimisation des paramètres stop loss/profit Refaire un backtest de données historiques pour évaluer l'impact des différents paramètres stop loss/profit sur la rentabilité finale, afin de trouver le paramètre optimal.
Élargissement des produits
Nous pouvons essayer de le déployer sur d'autres paires de devises majeures comme GBP, JPY, AUD pour examiner sa stabilité et sa transférabilité.
La stratégie des trois sentiers identifie les points d'inversion des prix pour les signaux de surachat/survente en utilisant une combinaison de RSI, CCI et Williams %R. Par rapport aux indicateurs individuels, cette configuration multi-indicateurs filtre plus de faux signaux et améliore la précision. Les fonctions automatisées de stop loss/profit taking aident également à limiter les risques de trading. Dans l'ensemble, c'est une stratégie stable adaptée au trading à moyen terme et peut être un module précieux dans nos systèmes quantitatifs. Nous devons néanmoins faire attention à ses lacunes dans la détection des tendances à long terme et la capture des oscillations à court terme.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-23 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI CCI Williams %R Strategy with TP and SL", overlay=true) // Input parameters for indicators rsi_period = input(14, title="RSI Period") cci_period = input(20, title="CCI Period") williams_period = input(14, title="Williams %R Period") // Thresholds for overbought and oversold conditions rsi_oversold = input(25, title="RSI Oversold Level") rsi_overbought = input(75, title="RSI Overbought Level") cci_oversold = input(-130, title="CCI Oversold Level") cci_overbought = input(130, title="CCI Overbought Level") williams_oversold = input(-85, title="Williams %R Oversold Level") williams_overbought = input(-15, title="Williams %R Overbought Level") // Take profit and stop loss levels as a percentage take_profit_pct = input(1.2, title="Take Profit (%)") / 100 stop_loss_pct = input(0.45, title="Stop Loss (%)") / 100 // Indicator calculations rsi = ta.rsi(close, rsi_period) cci = ta.cci(close, cci_period) highestHigh = ta.highest(high, williams_period) lowestLow = ta.lowest(low, williams_period) williamsR = (highestHigh - close) / (highestHigh - lowestLow) * -100 // Entry conditions longCondition = rsi < rsi_oversold and cci < cci_oversold and williamsR < williams_oversold and strategy.position_size == 0 shortCondition = rsi > rsi_overbought and cci > cci_overbought and williamsR > williams_overbought and strategy.position_size == 0 // Execute strategy entry orders if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit or Stop Loss Long", "Long", limit=close * (1 + take_profit_pct), stop=close * (1 - stop_loss_pct)) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit or Stop Loss Short", "Short", limit=close * (1 - take_profit_pct), stop=close * (1 + stop_loss_pct)) // Plot the signals on the chart plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, text="BUY") plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, text="SELL") // Plot the indicators for visualization plot(rsi, title="RSI", color=color.blue) plot(cci, title="CCI", color=color.purple) plot(williamsR, title="Williams %R", color=color.orange)