Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

Assimetria de contextos do Profit

Quando se trata de automatização de estratégias no Profit Chart, devemos abordar 3 contextos diferentes: Backtesting (Editor de Estratégias), sinalização em gráficos de tempo real (Estratégias de execução) e Módulo de Automação de Estratégias (robôs operando de forma autônoma).

No segundo vídeo da série, irei demonstrar na prática, dentro do software Profit Chart, como cada tipo de ordem é processada na plataforma em cada contexto. É importante ressaltar novamente que os achados e conclusões desse material baseiam-se na atual versão do Profit Chart, o qual pode apresentar comportamento no futuro diferente em virtude de atualizações.

Reproduzir vídeo

Backtesting: Editor de Estratégias

O ambiente do Editor de Estratégias é onde escrevemos o código fonte das estratégias de execução, as quais são automatizadas para serem executadas como robôs, ou atuam sinalizando operações em gráficos de tempo real.

Em backtesting, a quantidade de dados históricos disponibilizados depende do tempo gráfico desejado, por ex: 1 min, 5 min, 15 min, 1 dia ou tamanho do box no caso de gráficos de renko (4R, 10R, 40R, etc…). Quanto maior a frequência desejada de dados, mais é exigido em termos computacionais, tanto em termos de espaço de armazenamento, quanto poder de processamento para rodar a simulação.

Assim, verifica-se que a quantidade de dados disponibilizados para backtesting, dentro do Profit Chart é diretamente proporcional ao tempo gráfico. Quanto maior o tempo gráfico, mais dados históricos a plataforma fornece para backtesting.

Outro ponto importante é o tipo de dados históricos fornecido, a saber, OHLCV. São dados de abertura, máximo, mínimo, preço de fechamento e volume negociado por candle ou box. Importante entender que não há dados que informem a dinâmica interna de movimentação de preço dentro de cada candle.

Assim, as ordens a mercado enviadas na janela temporal dentro de um determinado candle são executadas com o preço de abertura do próximo candle. Esta é uma premissa bem consistente tendo em vista os dados disponibilizados.

O leitor pode perguntar porque não são disponibilizados mais dados, os dados tick a tick ou dados de negociação. Realmente estes dados seriam bastante interessantes para elaboração de estratégias, principalmente para quem deseja elaborar estratégias de alta frequência (HFT – High frequency trading). No entanto, esses dados não são disponibilizados no Profit Chart Pro.

Como o código fonte das estratégias é processado para cada novo dado, ou seja, fechamento de mais um candle/box, as ordens limitadas e stop são interpretadas em avanço de 1 candle. O que quero dizer com isso? Significa que, se houver uma chamada a uma função de orden limitada ou stop, os preços do próximo candle são análisados e já se posiciona a ordem no preço possível dentro do próximo candle, garantindo, dentro das possibilidades, a adequada execução das ordens limitadas e stop.

Algo a se ressaltar, mas que não gera preocupação, pois este comportamento é igual em todos as plataformas de backtesting, é que os simuladores não levam em consideração a liquidez de mercado para execução das ordens. Ou seja, se você colocar uma ordem de 100 minicontratos futuros de dólar, ou 10 mil minicontratos, eles serão executados em um único nível de preço, desconsiderando o slippage (deslizamento do preço de execução da ordem devido a liquidez do ativo).

Um ponto negativo sobre backtesting é o modo de operação do editor de estratégias, que não conta com um gestor de ordens que simule condições mais próximas da realidade. Assim, o programador é obrigado a “enviar” em todo processamento ordens do tipo limitadas ou stop para garantir a execução dessas ordens.

Gráfico Tempo Real: Estratégias de execução

A principal diferença entre Backtesting e aplicação das estratégias de execução em gráficos de tempo real é o fato de nos gráficos de tempo real haver dados tick a tick. Em outras palavras, sempre que o preço do ativo movimenta-se é gerado um novo dado para o gráfico e o código fonte da estratégia é processado novamente.

Isto nos faria pensar: “Excelente! Agora as ordens à mercado podem ser executadas antes do fechamento do candle!”. Mas não é isto que ocorre…o Profit é padronizado para que o envio das ordens seja realizado apenas no fechamento do Candle.

Particularmente, acho este comportamento ruim, pois esta decisão deveria caber ao programador. No entanto, isto não é possível de fazer da forma como as funções de ordens funcionam no Profit no momento.

Um ponto positivo observado nas demonstrações é que as ordens de cobertura de posição comprada ou vendida, ocorrem no tick. Ou seja, são sinalizadas no momento em que o gatilho é ativado (ordens stop) ou quando o preço negociado atinge o preço da ordem limitada.

Uma questão inusitada observada foi o fato do cálculo do sinal de ordem à mercado ocorrer com um candle de atraso (foi o que se observou na versão do Profit utilizada). Isto gera sinalizações de abertura de posição no preço de abertura do candle, que podem ficar aparecendo e desaparecendo, até que o candle se encerre. O problema é que quando a sinalização fica estável, ou seja, o candle encerra, talvez não seja mais possível abrir uma posição no preço de abertura daquele candle.

Por fim, um ponto positivo é que o código fonte implementado para backtesting não precisa ser modificado em nada para ser executado com estratégia de execução em um gráfico de tempo real.

As estratégias de execução não realizam operações de formas automatizadas. Isto é uma limitação do Profit que abriu espaço para soluções externas que baseiam-se no mapeamento da tela do software para automatizar cliques tornando o comando manual automatizado. Essas soluções exigem que as estratégias sejam apresentadas de uma forma padronizada e também, devido ao funcionamento das ferramentas, limitam a quantidade de estratégias que podem rodar de forma automatizada.

Recomendo o leitor a assistir ao vídeo para entender por meio das demonstrações o que tentei descrever no texto acima.

Módulo de Automação de Estratégias

O Módulo de Automação de Estratégias foi oficialmente lançado em 29 de setembro de 2022. O objetivo desse novo módulo foi permitir a execução de robôs de forma autônoma.

Infelizmente, verificamos por demonstração, que os códigos fontes escritos anteriormente para backtesting e estratégias de execução não são compatíveis com o novo Módulo de Automação de Estratégias. Talvez o pior tenha sido observar que a estratégia ao ser “automatizada” para funcionar no novo módulo não gerava erros. Mas durante a execução no módulo, as posições não eram fechadas, deixando evidente o mal funcionamento do módulo.

As funções de cobertura de posição “ToCoverStop” e “ToCoverLimit” devem ser substituídas pelas funções análogas: Ordens limitadas e stop.

Muito embora também haja dados tick a tick, as ordens à mercado continuam a ser executadas apenas no fechamento do candle, assim como o envio de ordens limitadas e stop.

Uma vez enviadas as ordens limitadas e stop, elas estarão registradas na corretora e bolsa de valores, e assim, o modo de operação das ordens é exatamente o mesmo que o esperado na operação manual. Como tem que ser! Isto é bom, porque desobriga o programador a ter que verificar condições de ordens limitadas e stop em cda processamento da estratégia, tornando a programação mais próxima da realidade.

Uma vez aberta uma posição, o uso das funções de ordens limitadas e stop irá atualizar as ordens pendentes, facilitando a operacionalização de ordens OCO (One close the others), embora essa atualização, como já mencionado, só será realizada no fechamento do candle.

Na minha opinião, o novo módulo de automação trouxe pontos positivos ao permitir rodar robôs de forma autônoma. No entanto, considero um lançamento prematuro, uma vez que deveria ter sido criado o gestor de ordens no Editor de Estratégia para compatibilizar os códigos fontes dos dois contextos do Profit, evitando a geração de assimetrias internas no software. Além disso, verificou-se muitos bugs no Módulo de Automação, bem como no Editor de Estratégias…o que denuncia falhas no processo de teste do software.

Convido o leitor a assistir o vídeo para entender em maiores detalhes todos os aspectos relacionados ao novo módulo de automação.

Conclusão

Este segundo vídeo da série evidencia a existência de assimetrias no tratamento de ordens nos diferentes contextos do Profit: Editor de Estratégias, Gráfico de Tempo Real e Módulo de Automação de Estratégias.

No próximo vídeo da série serão abordadas as melhores práticas para escrever o código fonte de suas estratégias tendo em vista os aspectos observados nas demonstrações realizadas.

Leave a Comment