Aller au contenu

Sessions de trading

Depuis la sortie de cTrader Windows 4.5, l'API inclut l'interface MarketSessions. Elle vous permet d'obtenir des informations sur les sessions de marché actuelles et d'utiliser ces données dans vos cBots et indicateurs.

Sessions de trading dans le développement d'algo

Le type MarketSession est un enum avec des valeurs représentant diverses sessions de trading (telles que Singapore ou London).

À son tour, la propriété MarketSessions est de type MarketSession. Pour obtenir toutes les sessions de marché actuelles, utilisez-la comme suit.

1
    Print("Current Sessions: {0}", MarketSessions); 

La valeur de la propriété MarketSessions doit correspondre aux sessions affichées dans le champ Sessions de trading dans le coin inférieur gauche de l'interface utilisateur de cTrader.

Image title

Vous pouvez utiliser la méthode HasFlag pour vérifier si les sessions actuelles contiennent une session spécifique.

 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
using cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class MarketSessionsTest : Robot
    {
        [Parameter("Working Session", DefaultValue = MarketSession.London)]
        public MarketSession WorkingSession {get; set;}

        protected override void OnTick()
        {

            MarketSession exampleSession = MarketSession.London;

            if (MarketSessions.HasFlag(exampleSession))
              {

                // Insert your preferred method logic here.

              }
                return;

        }
    }
}

Vous pouvez également gérer l'événement MarketSessionsChanged pour détecter et réagir à tout changement dans les sessions de marché. La classe MarketSessionChangedEventArgs possède deux propriétés, à savoir NewSessions et PreviousSessions, qui fonctionnent comme suit :

  • NewSessions contient toutes les sessions actuelles, y compris les sessions qui viennent de commencer. La valeur de NewSessions est toujours égale à la valeur de la propriété MarketSessions d'un cBot ou d'un indicateur.
  • PreviousSessions contient également toutes les sessions actuelles, mais elle contient aussi toutes les sessions passées qui viennent de se terminer. Sa valeur est égale à la valeur de la propriété MarketSessions d'un cBot ou d'un indicateur avant que MarketSessionsChanged ne soit déclenché.

Pour un aperçu plus détaillé du fonctionnement de NewSessions et PreviousSessions, reportez-vous à l'exemple 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
using cAlgo.API;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class NewcBot : Robot
    {
        protected override void OnStart()
        {
            MarketSessionsChanged += OnMarketSessionsChanged;
            Print($"Starting sessions: {this.MarketSessions}");
        }

        private void OnMarketSessionsChanged(MarketSessionChangedEventArgs obj)
        {
            Print($"Session(s) changed, previous sessions: {obj.PreviousSessions}");
            Print($"Sessions(s) changed, current sessions: {obj.NewSessions}");
        }

        protected override void OnTick() { }

        protected override void OnStop() { }
    }
}

Dans le journal, vous devriez voir deux nouvelles entrées pour chaque changement de session. Ces entrées vous informeront de ce qu'étaient les sessions de trading passées et de ce qu'elles sont maintenant.

Sessions de trading pendant le backtesting

La propriété MarketSessions fonctionne à la fois dans les environnements en direct et de backtesting. Pendant le backtesting, cette propriété contiendra les sessions relatives aux périodes de backtesting choisies. En d'autres termes, vous pouvez l'utiliser pour accéder aux sessions de trading qui étaient actives pendant une période de trading historique spécifique.