La stratégie de rupture du RSI est une stratégie de trading quantitative basée sur l'indicateur d'indice de force relative (RSI). La stratégie génère des signaux de trading lorsque le RSI dépasse les seuils prédéfinis de surachat et de survente, c'est-à-dire aller long lorsque le RSI est inférieur à 30 et court lorsque le RSI est supérieur à 70.
L'idée de base de la stratégie de rupture du RSI est d'utiliser l'indicateur RSI pour déterminer les conditions de surachat et de survente sur le marché. Le RSI calcule le rapport entre les gains et les pertes de prix moyens sur une période de temps pour refléter la force ou la faiblesse récente d'un stock. Généralement, un RSI inférieur à 30 est considéré comme survendu et un RSI supérieur à 70 est considéré comme suracheté.
La stratégie définit d'abord les valeurs de seuil de survente et de surachat pour le RSI, avec des valeurs par défaut de 30 et 70. Elle surveille ensuite la ligne du RSI en temps réel. Lorsque le RSI traverse en dessous du seuil de 70 de haut en bas, un signal de vente est généré. Cela indique que le marché est entré dans la zone de surachat et qu'il est susceptible de s'inverser vers le bas, de sorte qu'une position courte est prise. Inversement, lorsque le RSI dépasse le seuil de 30, un signal d'achat est généré, indiquant que le marché de survente est susceptible de rebondir, de sorte qu'une position longue est prise.
De cette façon, la stratégie tente de capturer les points d'inversion des prix lors des fluctuations des actions et d'ajuster les positions en conséquence en achetant à bas prix et en vendant à haut prix.
La stratégie de rupture des RSI présente les avantages suivants:
L'indicateur RSI est facile à calculer et à interpréter en observant simplement si la ligne de l'indicateur dépasse les valeurs de seuil.
Les transactions sont générées par l'indicateur RSI sans intervention humaine. En même temps, les signaux RSI surachetés et survendus ont tendance à être efficaces, ce qui conduit à des rendements de stratégie décents dans les backtests.
Les traders peuvent ajuster de manière flexible les paramètres de l'indicateur de volatilité, tels que les seuils de surachat/survente, pour qu'ils s'adaptent aux différentes dynamiques des actions et du marché.
La stratégie de rupture des RSI comporte également certains risques:
Les paramètres peuvent être réglés pour filtrer certains signaux de whippy.
Aucun jugement de tendance. RSI ne produit que des signaux basés sur des niveaux de surachat / survente sans bien juger de la tendance globale. La stratégie a tendance à rester coincée dans des marchés agités. Des filtres de tendance peuvent être ajoutés pour éviter les transactions contre-tendance.
Le RSI présente souvent une divergence haussière lorsque le prix continue à augmenter tandis que le RSI tend à baisser.
La stratégie de rupture de l'ISR peut être améliorée de la manière suivante:
Incorporer de multiples indicateurs pour surmonter les limites de l'indice de volatilité, par exemple des moyennes mobiles pour déterminer la tendance du marché, des indicateurs de force et des filtres de volume pour confirmer les signaux.
Optimiser les paramètres du RSI pour une plus grande stabilité, y compris régler les seuils de surachat/survente, définir le filtre de durée du signal, etc. grâce à des tests rigoureux.
Mettez en œuvre un stop-loss et un profit pour contrôler les risques. Par exemple, définissez des pourcentages ou des points d'arrêt. Évitez les pertes de transaction uniques sur les bénéfices globaux. Considérez également les tendances et les points techniques pour la prise de profit.
La stratégie de rupture du RSI est une stratégie quantitative de réversion moyenne basée sur des signaux de surachat et de survente. Elle possède des signaux simples et clairs, des capacités d'automatisation complète et une grande personnalisation, mais souffre de risques de frappe et de retrait. En optimisant avec des combinaisons d'indicateurs et des contrôles de risque, elle peut être ajustée à une stratégie stable.
/*backtest start: 2023-11-21 00:00:00 end: 2023-12-21 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bunghole 2021 strategy(title="My New Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true) //// Stoploss and Take Profit Parameters // Enable Long Strategy enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1") long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2") long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2") long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick // Enable Short Strategy enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3") short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4") short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4") short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick // Plot Stoploss & Take Profit Levels long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100) long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100) short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100) short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100) plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level") plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level") plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level") plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level") // Date Range start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range") start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range") start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range") end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range") end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range") end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range") in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0)) //// Inputs **This is where you enter your indicators for your strategy. For example, I added the RSI indicator.** //RSI rsi = rsi(close, 14) rsi_over_sold = rsi < 30 rsi_over_bought = rsi > 70 //// Strategy **This is where you create your strategy. For example, We have or buy and sell signals.** // Creating Long and Short Strategy buy_signal = rsi_over_sold sell_signal = rsi_over_bought // Long Strategy if buy_signal and in_date_range and enable_long_strategy == true strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position") strategy.exit("Long SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.") strategy.close("Long", when=sell_signal, alert_message="Close Long Position") // Short Strategy if sell_signal and in_date_range and enable_short_strategy == true strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position") strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.") strategy.close("Short", when=buy_signal, alert_message="Close Short Position")