Discussão do artigo "Desenvolvendo um EA multimoeda (Parte 3): Revisão da arquitetura"

 

Novo artigo Desenvolvendo um EA multimoeda (Parte 3): Revisão da arquitetura foi publicado:

Nós já avançamos um pouco no desenvolvimento de um EA multimoeda com várias estratégias funcionando em paralelo. Com base na experiência acumulada, vamos revisar a arquitetura da nossa solução e tentar melhorá-la, antes que avancemos muito.

Destacamos um objeto especialista (classe CAdvisor ou seus derivados), que é um agregador de objetos de estratégias de negociação (classe CStrategy ou seus derivados). No início do trabalho do EA no manipulador OnInit(), ocorre o seguinte:

  • Cria-se o objeto especialista.
  • Criam-se objetos de estratégias de negociação e adicionam-se ao especialista no seu array de estratégias de negociação.

No EA, no manipulador de eventos OnTick(), ocorre o seguinte:

  • Chama-se o método CAdvisor::Tick() para o objeto especialista.
  • Este método percorre todas as estratégias e chama seu método CStrategy::Tick().
  • As estratégias, no contexto do CStrategy::Tick(), realizam todas as operações necessárias para abrir e fechar posições de mercado.

Esquematicamente, isso pode ser representado assim:

Fig. 1. Operation mode from the first article

Fig. 1. Esquema de funcionamento do primeiro artigo

A vantagem desse esquema era que, tendo o código-fonte do EA, operando com uma única estratégia de negociação, era possível, com operações não muito complexas, modificá-lo para trabalhar conjuntamente com outros exemplares de estratégias de negociação.

Mas logo se descobriu a principal desvantagem: ao combinar várias estratégias, somos obrigados a reduzir, de alguma forma, o tamanho das posições abertas por cada exemplar de estratégia. Isso pode levar à exclusão completa da negociação de alguns ou até de todos os exemplares de estratégias. Quanto mais exemplares de estratégias incluímos no trabalho paralelo ou quanto menor o depósito inicial escolhido para negociação, mais provável é esse desfecho, já que o tamanho mínimo das posições de mercado abertas é fixo.

Autor: Yuriy Bykov