Ir para o conteúdo

Sessões de negociação

Desde o lançamento do cTrader Windows 4.5, a API inclui a interface MarketSessions. Permite-lhe obter informações sobre as sessões de mercado atuais e usar estes dados nos seus cBots e indicadores.

Sessões de negociação no desenvolvimento de algoritmos

O tipo MarketSession é um enum com valores que representam várias sessões de negociação (como Singapore ou London).

Por sua vez, a propriedade MarketSessions é do tipo MarketSession. Para obter todas as sessões de mercado atuais, use-a da seguinte forma.

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

O valor da propriedade MarketSessions deve corresponder às sessões que são exibidas no campo Sessões de negociação no canto inferior esquerdo da interface do cTrader.

Image title

Pode usar o método HasFlag para verificar se as sessões atuais contêm uma sessão específica.

 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;

        }
    }
}

Também pode tratar o evento MarketSessionsChanged para detetar e reagir a quaisquer alterações nas sessões de mercado. A classe MarketSessionChangedEventArgs tem duas propriedades, nomeadamente NewSessions e PreviousSessions, que funcionam da seguinte forma:

  • NewSessions contém todas as sessões atuais, incluindo quaisquer sessões que acabaram de começar. O valor de NewSessions é sempre igual ao valor da propriedade MarketSessions de um cBot ou indicador.
  • PreviousSessions também contém todas as sessões atuais, mas também contém quaisquer sessões passadas que acabaram de terminar. O seu valor é igual ao valor da propriedade MarketSessions de um cBot ou indicador antes de MarketSessionsChanged ser acionado.

Para uma análise mais detalhada de como NewSessions e PreviousSessions funcionam, consulte o exemplo abaixo.

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

No registo, deverá ver duas novas entradas para cada alteração de sessão. Estas entradas irão informá-lo sobre quais eram as sessões de negociação passadas e quais são agora.

Sessões de negociação durante os testes de verificação

A propriedade MarketSessions funciona tanto em ambientes ao vivo como em testes de verificação. Durante os testes de verificação, esta propriedade conterá as sessões relativas aos tempos de teste de verificação escolhidos. Por outras palavras, pode usá-la para aceder às sessões de negociação que estavam ativas durante um período de negociação histórico específico.