Stratégie de trading quantitative basée sur l'indicateur d'indice de force relative (RSI)


Date de création: 2023-12-22 14:06:45 Dernière modification: 2023-12-22 14:06:45
Copier: 4 Nombre de clics: 772
1
Suivre
1623
Abonnés

Stratégie de trading quantitative basée sur l’indicateur d’indice de force relative (RSI)

Aperçu

La stratégie de rupture du RSI est une stratégie de négociation quantitative basée sur un indice relativement faible (le RSI). La stratégie crée un signal de négociation lorsque le RSI franchit ces seuils en fixant des seuils de rupture du RSI au-dessus des zones de vente et de vente, soit en faisant une hausse lorsque le RSI est inférieur à 30 et une baisse lorsque le RSI est supérieur à 70.

Principe de stratégie

L’idée centrale de la stratégie de rupture du RSI est d’utiliser l’indicateur RSI pour juger de la survente du marché. Le RSI reflète la force et la faiblesse récentes d’une action en calculant le rapport entre la hausse et la baisse moyennes d’une action sur une période donnée. En général, un RSI inférieur à 30 est considéré comme une survente et un RSI supérieur à 70 est considéré comme une survente.

La stratégie consiste à définir d’abord une ligne de survente et une ligne de survente du RSI, par défaut 30 et 70. Ensuite, surveiller en temps réel le fonctionnement de la ligne du RSI. Lorsque le RSI franchit le seuil de 70 de haut en bas, un signal de vente est généré.

De cette façon, la stratégie tente de capturer les points de basculement des cours au cours des fluctuations des actions et d’ajuster les positions en temps opportun lorsque des surachats et des surventeurs se produisent, pour atteindre des hauts et des bas.

Avantages stratégiques

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

  1. Les signaux d’opération sont simples et clairs. L’indicateur RSI est facile à calculer et à comprendre, il suffit d’observer la limite supérieure et inférieure de la barre de rupture définie par sa ligne d’indicateur.

  2. La stratégie extrait les signaux de trading de l’indicateur RSI, sans intervention ni jugement humain, permettant de réaliser facilement des transactions automatisées. En même temps, le signal de surachat et de survente du RSI est plus efficace, la stratégie de rétroaction montre également des gains considérables.

  3. La personnalisation est forte. Les traders peuvent adapter les paramètres du RSI, tels que l’ajustement des seuils de survente et de survente, pour s’adapter aux caractéristiques de différents stocks et conditions.

Risque stratégique

Les stratégies de rupture du RSI comportent également des risques, notamment:

  1. Il est facile de former un whipsaw. Lorsque l’indicateur se déplace vers le haut ou vers le bas, il déclenche fréquemment des signaux de rupture.

  2. L’incapacité à déterminer la tendance du marché. Le RSI ne génère des signaux de négociation qu’à partir d’un état d’achat et de vente excessifs. La capacité de jugement des grandes tendances est faible.

  3. Le risque de retrait est plus élevé. Le RSI présente souvent un comportement de déviation à plusieurs niveaux, c’est-à-dire que les prix continuent d’augmenter tandis que l’indicateur RSI descend.

Optimisation de la stratégie

Les stratégies de rupture RSI peuvent être optimisées à partir des dimensions suivantes:

  1. Il est possible de combiner plusieurs indicateurs afin d’éviter les limites d’un seul RSI. Par exemple, il est possible d’utiliser une moyenne mobile pour déterminer les tendances du marché ou d’utiliser un indicateur fort et un indicateur faible pour filtrer les signaux de trading.

  2. Optimiser les paramètres du RSI pour améliorer la stabilité de la stratégie. Cela comprend l’ajustement du seuil de survente et de survente, la définition de la durée du signal de négociation, etc.

  3. Définir des conditions de stop-loss pour contrôler le risque, par exemple, définir un stop-loss en pourcentage ou en points. Éviter que les pertes individuelles aient un impact trop important sur les bénéfices globaux.

Résumer

La stratégie de rupture RSI est une stratégie quantitative qui utilise le phénomène de surachat et de survente pour effectuer des transactions inverses. Les signaux de la stratégie sont simples, clairs, entièrement quantifiables et personnalisables.

Code source de la stratégie
/*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")