Stratégie de cassure bidirectionnelle du RSI


Date de création: 2023-11-08 12:11:03 Dernière modification: 2023-11-08 12:11:03
Copier: 0 Nombre de clics: 669
1
Suivre
1617
Abonnés

Stratégie de cassure bidirectionnelle du RSI

Aperçu

La stratégie est basée sur la conception d’un indicateur RSI relativement faible, utilisant le principe de sur-achat et de survente du RSI pour effectuer des opérations de rupture bidirectionnelles. Faire plus lorsque le RSI traverse la ligne de survente définie et faire moins lorsque le RSI traverse la ligne de survente définie est une stratégie de trading inversée typique.

Principe de stratégie

  1. Les paramètres de l’indicateur RSI sont calculés en fonction des paramètres d’entrée de l’utilisateur, y compris la longueur du cycle RSI, les seuils d’excédent de la ligne d’achat et les seuils d’excédent de la ligne de vente.

  2. La courbe RSI est utilisée pour déterminer si une zone est sur-achetée ou sur-vendue par rapport à la position de la ligne sur-achat et de la ligne sur-vente.

  3. Lorsque l’indicateur RSI franchit la ligne de dépréciation correspondante à partir de la zone de survente, effectuez une opération d’ouverture de position dans la direction opposée. Par exemple, lorsque la zone de survente franchit la ligne de survente, considérez que la tendance s’est inversée et ouvrez alors une position plus élevée; lorsque la zone de survente franchit la ligne de survente, considérez que la tendance s’est inversée et ouvrez alors une position vide.

  4. Après avoir ouvert une position, définissez un stop-loss. Suivez le stop-loss et laissez la position si les conditions sont remplies.

  5. La stratégie offre également la possibilité d’utiliser l’EMA comme filtre. Il est possible de prendre position uniquement si le RSI fait plus de signaux de couverture et que le prix doit franchir l’EMA.

  6. La stratégie offre également la possibilité de négocier uniquement pendant une période de temps spécifique. L’utilisateur peut définir des transactions uniquement pendant une certaine période de temps, après quoi il peut se retirer de la position.

Analyse des avantages

  • Le RSI utilise le principe classique de la rupture pour mieux faire la rétrospective.
  • Il est possible de régler de manière flexible les seuils de survente et de surachat pour les différentes variétés.
  • Il est possible de choisir d’utiliser ou non les signaux de filtrage EMA pour éviter les opérations de clôture fréquentes dues à des secousses de petite portée.
  • La fonction Stop Loss Stop est prise en charge pour améliorer la stabilité de la stratégie.
  • Prise en charge de la définition de périodes de transaction spécifiques, afin d’éviter les transactions à des périodes inappropriées.
  • Il est recommandé d’utiliser plus de courtage et d’options binaires pour profiter des fluctuations binaires de la tendance.

Analyse des risques

  • L’indicateur RSI est sujet à des déviations, et le seul jugement sur l’indicateur RSI peut générer des signaux de négociation inexacts. Il faut combiner la tendance, la courbe et d’autres jugements.
  • Une mauvaise définition des seuils de surachat et de survente peut entraîner des occasions de trading trop fréquentes ou manquées.
  • Une mauvaise configuration de l’arrêt de dommages peut conduire à des stratégies trop radicales ou conservatrices.
  • Une mauvaise configuration du filtre EMA peut également entraîner la perte d’opportunités de négociation ou le filtrage de signaux valides.

Résolution des risques:

  • Optimiser les paramètres RSI et les adapter aux différentes variétés.
  • Les mesures de prévention et de prévention sont souvent utilisées dans le cadre d’une campagne de sensibilisation et de sensibilisation à l’environnement.
  • Tester et optimiser les paramètres de stop-loss pour trouver les meilleurs.
  • Test et optimisation des paramètres EMA pour trouver le niveau de filtration optimal

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimiser les paramètres du RSI pour trouver les meilleures combinaisons de paramètres pour les différentes variétés. Les meilleures seuils de survente et de survente peuvent être trouvés en parcourant le suivi.

  2. Essayez de remplacer ou de combiner différents indicateurs RSI pour former un signal de jugement plus fort. Par exemple, MACD, KD, Brin et ainsi de suite.

  3. Optimiser les stratégies de stop loss et d’arrêt pour améliorer la stabilité des stratégies. Les stratégies peuvent être configurées en fonction de la volatilité du marché ou avec une fonction de suivi des pertes.

  4. Optimisez les paramètres du filtre EMA ou testez d’autres filtres de mesure pour éviter d’être piégé.

  5. Ajout d’un module de jugement de tendance pour éviter de faire des actions inverses à plusieurs têtes ou des actions inverses à plusieurs têtes.

  6. Tester différents paramètres de périodes de négociation pour déterminer les périodes qui conviennent à la stratégie et celles qui doivent être évitées.

Résumer

La stratégie de rupture bidirectionnelle du RSI est clairement décrite et utilise le principe classique du RSI de surachat et de survente pour effectuer des transactions de revers. Il est possible de saisir les opportunités de revers dans les zones de surachat et de survente et de contrôler les risques grâce au filtrage EMA et au stop-loss.

Code source de la stratégie
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N

//@version=4

strategy("RSI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// Strategy Backtesting
startDate  = input(timestamp("2021-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true
// Strategy

Length = input(12, minval=1)
src = input(close, title="Source")
overbought = input(70, minval=1)
oversold = input(30, minval=1)
xRSI = rsi(src, Length)
    
rsinormal = input(true, title="Overbought Go Long & Oversold Go Short")
rsiflipped = input(false, title="Overbought Go Short & Oversold Go Long")

// EMA Filter
noemafilter = input(true, title="No EMA Filter")
useemafilter = input(false, title="Use EMA Filter")
ema_length = input(defval=15, minval=1, title="EMA Length")
emasrc = input(close, title="Source")
ema = ema(emasrc, ema_length)
plot(ema, "EMA", style=plot.style_linebr, color=#cad850, linewidth=2)

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (xRSI > overbought and close > ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and close < ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and close > ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and close < ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI > overbought and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)