Zum Inhalt

Handelszeiten

Seit der Veröffentlichung von cTrader Windows 4.5 enthält die API die Schnittstelle MarketSessions. Sie ermöglicht es Ihnen, Informationen über aktuelle Marktsitzungen zu erhalten und diese Daten in Ihren cBots und Indikatoren zu verwenden.

Handelszeiten in der Algo-Entwicklung

Der Typ MarketSession ist ein enum mit Werten, die verschiedene Handelszeiten darstellen (wie Singapore oder London).

Die Eigenschaft MarketSessions wiederum ist vom Typ MarketSession. Um alle aktuellen Marktsitzungen zu erhalten, verwenden Sie sie wie folgt.

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

Der Wert der Eigenschaft MarketSessions sollte mit den Sitzungen übereinstimmen, die im Feld Handelszeiten in der unteren linken Ecke der cTrader-Benutzeroberfläche angezeigt werden.

Image title

Sie können die Methode HasFlag verwenden, um zu überprüfen, ob die aktuellen Sitzungen eine bestimmte Sitzung enthalten.

 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;

        }
    }
}

Sie können auch das Ereignis MarketSessionsChanged behandeln, um Änderungen in Marktsitzungen zu erkennen und darauf zu reagieren. Die Klasse MarketSessionChangedEventArgs hat zwei Eigenschaften, nämlich NewSessions und PreviousSessions, die wie folgt funktionieren:

  • NewSessions enthält alle aktuellen Sitzungen einschließlich aller Sitzungen, die gerade begonnen haben. Der Wert von NewSessions ist immer gleich dem Wert der Eigenschaft MarketSessions eines cBots oder Indikators.
  • PreviousSessions enthält ebenfalls alle aktuellen Sitzungen, aber es enthält auch alle vergangenen Sitzungen, die gerade beendet wurden. Sein Wert ist gleich dem Wert der Eigenschaft MarketSessions eines cBots oder Indikators, bevor MarketSessionsChanged ausgelöst wurde.

Für einen detaillierteren Blick darauf, wie NewSessions und PreviousSessions funktionieren, siehe das folgende Beispiel.

 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() { }
    }
}

Im Protokoll sollten Sie zwei neue Einträge für jede Sitzungsänderung sehen. Diese Einträge informieren Sie darüber, was die vergangenen Handelszeiten waren und was sie jetzt sind.

Handelszeiten während des Backtestings

Die Eigenschaft MarketSessions funktioniert sowohl in Live- als auch in Backtesting-Umgebungen. Während des Backtestings enthält diese Eigenschaft die Sitzungen relativ zu den gewählten Backtest-Zeitpunkten. Mit anderen Worten, Sie können sie verwenden, um auf Handelszeiten zuzugreifen, die während einer bestimmten historischen Handelsperiode aktiv waren.