La stratégie de rupture du RSI est une stratégie de négociation quantitative

Auteur:ChaoZhang est là., Date: 2023-12-22 14:06:45 Je vous en prie.
Les étiquettes:

img

Résumé

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.

La logique de la stratégie

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.

Les avantages

La stratégie de rupture des RSI présente les avantages suivants:

  1. L'indicateur RSI est facile à calculer et à interpréter en observant simplement si la ligne de l'indicateur dépasse les valeurs de seuil.

  2. 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.

  3. 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é.

Les risques

La stratégie de rupture des RSI comporte également certains risques:

  1. Les paramètres peuvent être réglés pour filtrer certains signaux de whippy.

  2. 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.

  3. Le RSI présente souvent une divergence haussière lorsque le prix continue à augmenter tandis que le RSI tend à baisser.

Les domaines d'amélioration

La stratégie de rupture de l'ISR peut être améliorée de la manière suivante:

  1. 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.

  2. 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.

  3. 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.

Conclusion

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")


Plus de