Discussão do artigo "Desenvolvendo um EA multimoeda (Parte 22): Início da transição para substituição dinâmica de configurações"

 

Novo artigo Desenvolvendo um EA multimoeda (Parte 22): Início da transição para substituição dinâmica de configurações foi publicado:

Se decidimos automatizar a execução da otimização periódica, também precisamos cuidar da atualização automática das configurações dos EAs que já estão operando na conta de negociação. Isso também deve permitir rodar o EA no testador de estratégias e alterar suas configurações dentro de uma única execução.

Vamos tentar descrever com mais detalhes, em palavras, o que queremos alcançar. No cenário ideal, o funcionamento do sistema deve se parecer com isto:

  1. Um projeto é gerado com a data atual como data de término do período de otimização. 
  2. O projeto é iniciado no pipeline. Sua execução leva algum tempo, variando de alguns dias a algumas semanas.
  3. Os resultados são carregados no EA final. Se o EA final ainda não estiver operando, ele é iniciado na conta real. Se ele já estiver rodando na conta, então seus parâmetros são substituídos pelos novos, obtidos após a conclusão da execução do pipeline pelo último projeto.
  4. Retornamos ao item 1.

Vamos analisar cada um desses pontos. Para implementar o primeiro item, já temos o EA-script de geração de projeto da parte anterior, no qual podemos, usando parâmetros, escolher a data de término da otimização. Mas ele ainda é iniciado apenas manualmente. Isso pode ser corrigido com a adição de uma etapa extra no pipeline de execução do projeto, que gera um novo projeto após o término de todas as etapas do projeto atual. Assim, manualmente, só precisamos iniciá-lo uma única vez.

Para o segundo item, basta termos um terminal com o EA Optimization.ex5 instalado, com os parâmetros configurados apontando para o banco de dados desejado. Assim que surgirem novas tarefas de projeto ainda não executadas no banco, elas serão iniciadas automaticamente, conforme a ordem de fila. A última etapa, anterior à criação de um novo projeto, deve de alguma forma transferir os resultados da otimização do projeto para o EA final.

O terceiro item é o mais complexo. Já fizemos uma versão da transferência de parâmetros para o EA final, mas ela ainda exige operações manuais: é necessário iniciar um EA separado que exporta a biblioteca de parâmetros para um arquivo, depois copiar esse arquivo para a pasta do projeto, e então recompilar o EA final. Embora agora possamos automatizar essas etapas via código, a estrutura como um todo começa a parecer exageradamente complicada. Seria desejável ter algo mais simples e confiável.


Autor: Yuriy Bykov