Eventos de barra
Os desenvolvedores de algoritmos frequentemente precisam de se referir a eventos de barra para executar estratégias de negociação a tempo em resposta aos preços atualizados. A API oferece os eventos BarOpened e BarClosed para os criadores de algoritmos ajustarem os cBots e aproveitarem oportunidades em diferentes pontos do ciclo da barra.
Nota
Os eventos de barra só podem ser tratados ao codificar cBots. Os indicadores, em vez disso, têm o método Calculate() que é chamado a cada tick.
Neste guia, explicamos a diferença entre os métodos OnBar() e OnBarClosed() e fornecemos vários casos de uso.
Eventos de barra em um minuto!
- O método
OnBar()é acionado cada vez que uma nova barra é desenhada no gráfico ao qual uma instância é adicionada. É chamado para a barra recém-formada. - O manipulador de eventos
OnBarClosed()também é acionado em cada nova barra. No entanto, é chamado para a última barra fechada (ou seja, anterior à atual). - Referindo-se ao evento de barra correto, você aumenta a precisão da sua análise técnica e seleciona o momento apropriado para as ações do algoritmo.
- Os tipos de gráfico suportados para
BarOpenedeBarClosedsão gráficos de barras de tempo, velas, tick, Renko, intervalo e Heikin Ashi.
Usar o método OnBar()
A ocorrência do evento BarOpened depende de um cronograma de símbolos e da frequência dos preços recebidos. Normalmente, os utilizadores da plataforma podem ajustar a ocorrência de BarClosed com as configurações de prazo do gráfico.
Nota
O método OnBar() pode ser chamado tão frequentemente quanto as configurações de prazo do gráfico permitirem. Uma vez que uma barra se fecha, OnBar() não será acionado até que o próximo tick chegue, o que logicamente aciona a formação de uma nova barra.
O método OnBar() é invocado simultaneamente com cada nova barra desenhada no gráfico ao qual um algoritmo está anexado. Como resultado, o manipulador OnBar() é o lugar perfeito para definir lógica de negociação personalizada que o seu cBot deve repetir regularmente.
No editor de código, pode especificar o manipulador OnBar() da seguinte forma:
override void OnBar()
Usar o método OnBarClosed()
A API Algo também permite executar lógica para a última barra fechada, o que, dependendo da estratégia que deseja implementar, pode ser uma alternativa mais conveniente e precisa ao tratamento do evento BarOpened. Na abertura da barra, a nova barra aparece como uma (vela doji) e não contém dados completos para análise técnica.
O evento BarClosed é um alias do evento BarOpened, o que significa que ocorre apenas no caso de o evento BarOpened acontecer. Por exemplo, o evento BarClosed para a última barra na sexta-feira ocorrerá com a primeira barra aberta na segunda-feira, desde que o símbolo não seja negociado durante o fim de semana.
Nota
O método OnBarClosed() não será chamado até que chegue um tick para formar a nova barra.
O manipulador de eventos OnBarClosed() pode ser declarado da seguinte forma:
override void OnBarClosed()
No corpo do método OnBarClosed(), pode determinar quais ações conectadas os seus cBots irão executar quando o evento BarClosed for acionado (por exemplo, executar uma ordem, delinear um padrão, desenhar elementos visuais de análise técnica, etc.).
Quando acedida neste manipulador de eventos, a coleção Bars não contém a barra atual em tempo real, enquanto outras coleções (como Positions, Symbols, etc.) contêm dados reais.
Os manipuladores de eventos OnBar() e OnBarClosed() funcionam conforme pretendido em testes de verificação e otimização. Ambos os métodos podem ser utilizados em diferentes tipos de gráficos, incluindo barras de tempo, velas, tick, Renko, intervalo e gráficos Heikin Ashi.
Criar cBots de exemplo
O seguinte cBot de exemplo coloca uma ordem de mercado quando cada terceira barra no gráfico EURCHF é aberta.
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 | |
Como o cBot foi lançado num gráfico m1, o intervalo de tempo aproximado entre as ordens de mercado executadas é de três minutos.

Abaixo está um exemplo de cBot com o indicador Directional Movement System (DMS) aninhado, que imprime (Uptrend!) se o valor DI+ (linha verde) exceder o valor DI- (linha vermelha).

Quando DI- é maior que DI+, (Downtrend!) é impresso no evento BarClosed.

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 | |
Resumo
A variedade de eventos de barra existentes na API Algo permite que os desenvolvedores de algoritmos escolham o momento preciso para os métodos chamados. O método OnBar() pode ser invocado com frequência diferente dependendo do calendário do símbolo e das configurações de prazo do gráfico, o que também adiciona funcionalidade aos cBots. O método OnBarClosed() é um alias conveniente de OnBar() para trabalhar com indicadores.