Utilisation de la stratégie de cassure RSI bidirectionnelle


Date de création: 2023-12-27 14:33:15 Dernière modification: 2023-12-27 14:33:15
Copier: 0 Nombre de clics: 974
1
Suivre
1623
Abonnés

Utilisation de la stratégie de cassure RSI bidirectionnelle

Aperçu

La stratégie de rupture RSI bidirectionnelle est une stratégie de négociation algorithmique qui utilise l’indicateur RSI pour identifier les points de retournement des prix. Elle compare l’indicateur RSI aux valeurs de hausse et de baisse définies pour déterminer si le marché est en sur-achat et en sur-vente et envoie un signal de négociation.

Principe de stratégie

La stratégie repose principalement sur le RSI pour juger de la situation. L’indicateur RSI est calculé sur la base de la variation du cours de clôture sur un certain laps de temps, ce qui reflète la tendance des actions à acheter. Lorsque le RSI dépasse la valeur de la hausse définie (défault 75), cela indique que les actions entrent dans la zone de survente.

Les règles du jugement stratégique:

  1. Le RSI est à la baisse et le RSI est à la baisse.
  2. Il est important de faire plus lorsque le RSI franchit la barre.
  3. Plafonnement après arrêt de perte ou arrêt.

Sa logique de négociation est simple et claire, ses paramètres de référence sont réglés de manière raisonnable, son espace de configuration est grand et il est adapté pour capturer les grandes tendances du marché.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La logique est simple, facile à comprendre et à mettre en œuvre.
  2. Les paramètres de référence sont définis de manière raisonnable et peuvent être personnalisés.
  3. Il est possible de configurer une logique de trading inversée et d’être flexible en cas de besoin.
  4. Le prix de l’or est un indicateur de la valeur de l’or.

Dans l’ensemble, la stratégie a des paramètres de référence raisonnables, une mise en œuvre simple, un retour de cours efficace grâce à l’indicateur RSI, une stratégie de quantification facile à maîtriser et adaptée à la capture des grandes tendances de la marque.

Analyse des risques

Bien que cette stratégie soit simple et fiable, nous ne pouvons pas ignorer les risques potentiels:

  1. L’indicateur RSI est plus susceptible d’émettre des signaux erronés. L’indicateur RSI ne peut pas parfaitement prédire une inversion de prix, ce qui peut entraîner des erreurs de jugement.
  2. Les indicateurs RSI ont du mal à distinguer les ajustements de la gamme normale des retournements de tendance.
  3. Les indices RSI ne sont pas en mesure de juger efficacement la tendance des secousses, ce qui augmente les pertes stratégiques dans cet environnement.

Pour maîtriser les risques, nous devons être attentifs aux points suivants:

  1. Les paramètres doivent être adaptés de manière à éviter des erreurs de calcul trop importantes.
  2. améliorer la précision des signaux de confirmation de transactions en combinaison avec d’autres indicateurs;
  3. Le taux d’arrêt a été augmenté pour réduire les pertes ponctuelles.
  4. Attention à ne pas faire de transactions sur des marchés instables.

Direction d’optimisation

Étant donné que la stratégie est principalement exposée à des risques d’erreurs de jugement inversées et de pertes en cas de choc, nous pouvons l’optimiser dans les domaines suivants:

  1. Il est possible d’effectuer un filtrage des signaux en combinant avec d’autres indicateurs. Des indicateurs tels que KDJ, MACD peuvent jouer un rôle de filtrage et éviter les erreurs de jugement.
  2. Augmentation de la marge d’arrêt unique conditionnelle. Augmentation appropriée de la marge d’arrêt unique pour aider la stratégie à fonctionner avec la grande tendance.
  3. Limiter la fréquence d’ouverture des positions. Ajouter un seuil logique de transaction une ou N fois par cycle pour contrôler l’ouverture de positions trop dense.
  4. La stratégie de jugement fonctionne uniquement dans le cas d’une tendance, évitant les chocs, ce qui permet d’optimiser considérablement le ratio de risque/revenu de la stratégie.

Résumer

La stratégie de rupture RSI bidirectionnelle est généralement une stratégie de quantification simple et pratique. Elle permet un suivi de la tendance simple en jugeant le renversement des prix à l’aide de l’indicateur RSI. Bien qu’il existe un certain risque d’erreur de jugement, elle peut être optimisée par un ajustement des paramètres et un filtrage du signal.

Code source de la stratégie
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)