Aller au contenu

RSI cBot

Aperçu de la stratégie

Le RSI cBot met en œuvre une stratégie de trading de retournement simple basée sur le momentum qui s'appuie sur le Relative Strength Index (RSI) comme indicateur clé.

Le RSI cBot achète et vend automatiquement en fonction des valeurs RSI qui reflètent le momentum du marché et déterminent les conditions de surachat ou de survente. Le cBot est codé pour fermer les positions existantes avant d'en ouvrir de nouvelles, ce qui garantit qu'une seule position pertinente est ouverte à la fois.

Lorsque le RSI tombe en dessous de 30, le marché est considéré comme survendu et le cBot ouvre des positions d'achat. Le signal d'achat est basé sur l'attente que le prix augmentera après que le marché ait atteint une condition de survente.

Lorsque le RSI dépasse 70, le marché est considéré comme suracheté et le cBot ouvre des positions de vente. Le signal de vente est basé sur l'attente que le prix baissera après que le marché soit devenu suracheté.

La stratégie basée sur l'indicateur RSI est la mieux adaptée aux marchés où le cBot peut trader les retournements basés sur les signaux RSI.

Création de cBot

Découvrez comment créer des cBots, en utilisant C# ou Python, dans nos guides étape par étape.

Le code du RSI cBot est disponible dans nos dépôts publics C# et Python. Le même code est fourni comme modèle dans l'assistant de création d'algorithmes dans cTrader Windows ou Mac, ou vous pouvez simplement copier et utiliser l'extrait ci-dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, AddIndicators = true)]
    public class SampleRSIcBot : Robot
    {
        [Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
        public double Quantity { get; set; }

        [Parameter("Source", Group = "RSI")]
        public DataSeries Source { get; set; }

        [Parameter("Periods", Group = "RSI", DefaultValue = 14)]
        public int Periods { get; set; }

        private RelativeStrengthIndex rsi;

        protected override void OnStart()
        {
            rsi = Indicators.RelativeStrengthIndex(Source, Periods);
        }

        protected override void OnTick()
        {
            if (rsi.Result.LastValue < 30)
            {
                Close(TradeType.Sell);
                Open(TradeType.Buy);
            }
            else if (rsi.Result.LastValue > 70)
            {
                Close(TradeType.Buy);
                Open(TradeType.Sell);
            }
        }

        private void Close(TradeType tradeType)
        {
            foreach (var position in Positions.FindAll("SampleRSI", SymbolName, tradeType))
                ClosePosition(position);
        }

        private void Open(TradeType tradeType)
        {
            var position = Positions.Find("SampleRSI", SymbolName, tradeType);
            var volumeInUnits = Symbol.QuantityToVolumeInUnits(Quantity);

            if (position == null)
                ExecuteMarketOrder(tradeType, SymbolName, volumeInUnits, "SampleRSI");
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleRSIcBot():
    def on_start(self):
        self.rsi = api.Indicators.RelativeStrengthIndex(api.Source, api.Periods)

    def on_tick(self):
        if self.rsi.Result.LastValue < 30:
            self.close_position(TradeType.Sell)
            self.open_position(TradeType.Buy)
        elif self.rsi.Result.LastValue > 70:
            self.close_position(TradeType.Buy)
            self.open_position(TradeType.Sell)

    def close_position(self, tradeType):
        for position in api.Positions.FindAll("SampleRSI", api.SymbolName, tradeType):
            api.ClosePosition(position)

    def open_position(self, tradeType):
        position = api.Positions.Find("SampleRSI", api.SymbolName, tradeType)
        volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)
        if position is None:
            api.ExecuteMarketOrder(tradeType, api.SymbolName, volumeInUnits, "SampleRSI")

Intégration de l'indicateur

Le Relative Strength Index (RSI) est l'indicateur principal utilisé dans le RSI cBot. Le RSI est un oscillateur de momentum qui mesure la vitesse et l'évolution des mouvements de prix. Il varie entre 0 et 100 et est utilisé pour identifier les conditions de surachat ou de survente sur le marché.

En fonction de son évaluation des conditions de surachat ou de survente, le RSI détermine si le cBot achète ou vend. Le RSI cBot ne s'appuie sur aucun autre indicateur ou facteur, tel que les moyennes mobiles ou le volume ; il utilise uniquement les niveaux RSI pour les signaux de trading.

Le cBot se concentre sur deux seuils clés :

  • RSI < 30 signale que le marché est survendu et déclenche des ordres d'achat.
  • RSI > 70 signale que le marché est suracheté et déclenche des ordres de vente.

Le cBot surveille en permanence la valeur du RSI en la vérifiant à chaque nouveau tick. Cela garantit que l'algorithme est toujours prêt à agir dès que le RSI entre en territoire survendu ou suracheté.

Logique

Configuration initiale

L'indicateur RSI est initialisé à l'aide des paramètres Source et Periods spécifiés dans la méthode OnStart(), qui est appelée au démarrage du cBot. Les calculs sont effectués à l'aide des formules intégrées de cTrader pour l'indicateur.

Surveillance des conditions

La logique conditionnelle pour les trades est exécutée dans la méthode OnTick(), qui est appelée à chaque fois qu'un nouveau tick (mise à jour du prix) est reçu. Si RSI < 30, un signal d'achat est généré. Si RSI > 70, un signal de vente est généré.

Gestion des positions

Avant que le cBot n'ouvre une nouvelle position basée sur le signal généré, la méthode Close() vérifie et ferme toutes les positions opposées ouvertes avec l'étiquette « SampleRSI ». Cette configuration garantit qu'un seul trade est actif à tout moment pour un symbole donné.

Exécution des trades

La méthode Open() vérifie si une position du même type basée sur le signal généré (achat ou vente) est déjà ouverte. Si aucune position n'est trouvée, le cBot ouvre une nouvelle position avec la quantité spécifiée et d'autres paramètres qui sont transmis à l'intérieur de la méthode.

Paramètre Unité Définition Conseils
Quantité Lot Volume de chaque trade. Les traders conservateurs peuvent opter pour de petits lots afin de minimiser le risque.

Les traders agressifs peuvent opter pour des lots plus importants afin de maximiser les gains potentiels, mais avec un risque plus élevé.
Source — Source de données pour l'indicateur RSI. Les options disponibles incluent le prix de clôture, le prix d'ouverture, le prix haut et le prix bas. Le prix de clôture est souvent utilisé pour les calculs du RSI car il reflète le point de prix le plus important dans une bougie. Cependant, les traders peuvent expérimenter avec différentes séries de données et sélectionner celle qui convient le mieux aux conditions du marché.

Le prix haut ou le prix bas peuvent aider à identifier les mouvements de prix extrêmes, tandis que les prix médians ou typiques offrent une perspective plus équilibrée sur une période.
Périodes — Nombre de périodes (bougies) utilisées pour calculer le RSI. La valeur par défaut, 14, est la valeur standard ou le paramètre populaire pour cet indicateur. Les scalpeurs ou les traders cherchant à profiter des mouvements de prix à court terme (par exemple, sur un graphique de 5 minutes) peuvent opter pour des périodes faibles. Ce paramètre rend le RSI plus réactif, ce qui lui permet de générer des signaux d'achat et de vente plus fréquemment.

Les swing traders ou les traders à long terme (par exemple, sur un graphique d'1 heure) peuvent préférer des périodes RSI plus importantes. Ce paramètre diminue la sensibilité du RSI, le rendant plus lisse et plus résistant aux fluctuations rapides des prix. Le bruit étant filtré, le RSI se concentre sur les principales tendances du marché et génère moins de signaux.

Application

Marchés en range (latéraux)

Dans un marché en range, les prix oscillent entre un niveau de résistance (limite supérieure) et un niveau de support (limite inférieure). De tels événements sont idéaux pour les stratégies basées sur le RSI car ils fournissent de nombreux cas de surachat et de survente. Comme les prix inversent fréquemment leur direction lorsqu'ils atteignent les niveaux de support ou de résistance dans les marchés en range, le RSI est plus susceptible de fournir des signaux précis.

Cas d'utilisation

Considérez un scénario où l'EURUSD évolue de manière répétée entre 1,1000 et 1,1200. Le cBot peut démontrer de bonnes performances en achetant près de la limite inférieure pour la survente (RSI < 30) et en vendant près de la limite supérieure pour le surachat (RSI > 70).

Meilleures pratiques

  • Concentrez-vous sur le trading pendant les périodes de faible volatilité. L'indicateur RSI fonctionne mieux lorsque le marché ne fait pas de mouvements de tendance significatifs.
  • Vérifiez les graphiques de prix pour les périodes où le prix fluctue dans un range clair.
  • Surveillez les cassures. Si le prix sort significativement du range, arrêtez le cBot et réévaluez les conditions du marché.

Marchés à faible volatilité

Les marchés à faible volatilité se caractérisent par de petits mouvements de prix et une absence de tendances majeures. Le RSI est particulièrement utile dans de tels environnements car il peut identifier les déséquilibres de marché à court terme sans être influencé par de fortes tendances directionnelles.

Dans les environnements à faible volatilité, le prix a tendance à osciller entre les niveaux de surachat et de survente, ce qui génère de fréquentes opportunités de trading pour le cBot.

Cas d'utilisation

Un indice boursier tel que le S&P 500 peut présenter des périodes de faible volatilité, où son prix évolue dans des bandes étroites. Pendant ces périodes, le cBot profite de petits retournements. Il entre en positions d'achat lorsque le RSI descend en dessous de 30 et en positions de vente lorsque le RSI dépasse 70.

Meilleures pratiques

  • Utilisez des indicateurs de volatilité pour déterminer quand le marché entre dans une phase de faible volatilité.
  • Ajustez la taille du lot et les périodes RSI pour permettre à l'indicateur de cibler efficacement les petits changements de prix.
  • Utilisez des stratégies de gestion des risques supplémentaires telles qu'un stop loss pour vous protéger contre les mouvements de marché inattendus.

Marchés en consolidation après de fortes tendances

Après une forte tendance haussière ou baissière, les marchés entrent souvent dans une phase de consolidation où le prix se stabilise. Les traders prennent alors leurs bénéfices ou attendent une nouvelle direction du marché, et la période de consolidation devient idéale pour les stratégies de trading basées sur le RSI.

Pendant la période de consolidation qui suit une forte tendance, l'indicateur RSI peut identifier quand le marché est entré en territoire de surachat ou de survente. Le RSI cBot peut alors saisir les points de retournement au sein de la consolidation.

Cas d'utilisation

Considérez un scénario dans lequel une action de premier ordre entre en consolidation après un rallye ou une chute significative. Le prix de l'action commence à osciller dans un range étroit. Le cBot détecte alors les conditions de surachat (RSI > 70) ou de survente (RSI < 30) pendant cette phase et trade en conséquence.

Meilleures pratiques

  • Après une forte tendance, attendez que le marché commence à se consolider avant de lancer le cBot.
  • Surveillez les niveaux de support et de résistance à long terme pour vous assurer que le marché est vraiment entré en consolidation et ne se prépare pas à une nouvelle cassure.

Résumé

L'indicateur RSI est au cœur de la stratégie du cBot et il détermine toutes les décisions d'achat et de vente. Bien que le cBot soit efficace pour utiliser l'indicateur afin de capitaliser sur les retournements dans les marchés survendus et surachetés, sa dépendance à un seul algorithme comporte le risque de faux signaux et d'un contexte de marché limité.

La possibilité de spécifier des valeurs pour les paramètres clés et de sélectionner une source de données permet aux utilisateurs d'adapter le cBot RSI à leurs styles de trading individuels, à leur tolérance au risque et aux conditions du marché. Que vous soyez un scalpeur, un swing trader ou un investisseur à long terme, l'ajustement des paramètres du cBot peut conduire à un meilleur alignement avec votre stratégie et à des chances de succès accrues.

Les traders peuvent backtester le cBot avec différentes valeurs, paramètres et données pour trouver une combinaison de paramètres optimale ou rentable pour le symbole et la période choisis. De plus, les utilisateurs de cTrader peuvent modifier le code du cBot et implémenter des indicateurs de volatilité pour se protéger contre les fortes tendances et filtrer les signaux de non-retournement.