Discussão do artigo "Técnicas do MQL5 Wizard que você deve conhecer (Parte 21): Testando com Dados do Calendário Econômico"

 

Novo artigo Técnicas do MQL5 Wizard que você deve conhecer (Parte 21): Testando com Dados do Calendário Econômico foi publicado:

Os dados do Calendário Econômico não estão disponíveis para testes com Expert Advisors no Strategy Tester, por padrão. Vamos explorar como bancos de dados poderiam ajudar a contornar essa limitação. Portanto, neste artigo, exploramos como os bancos de dados SQLite podem ser usados para arquivar notícias do Calendário Econômico, de modo que os Expert Advisors montados pelo Wizard possam usá-los para gerar sinais de trade.

Os dados econômicos podem ser a fonte de uma vantagem competitiva em um sistema de trade, já que tendem a se basear mais nos ‘fundamentos’ dos ativos, em oposição aos ‘técnicos’ que são mais comuns na forma de indicadores tradicionais, indicadores personalizados e outras ferramentas de ação de preço. Esses ‘fundamentos’ podem incluir taxas de inflação, taxas de juros dos bancos centrais, taxas de desemprego, dados de produtividade e uma série de outros pontos de notícias que geralmente têm um impacto significativo nos preços dos ativos, como evidenciado pela volatilidade sempre que há um lançamento. O mais famoso desses dados provavelmente é o relatório de empregos não-agrícolas (non-farm payroll), que é divulgado quase toda primeira sexta-feira de cada mês. Além disso, certamente há outros dados importantes que não recebem a devida atenção e são, portanto, ignorados por muitos traders. É por isso que testar estratégias com base nesses dados econômicos pode ajudar a descobrir alguns desses fatores e, assim, proporcionar uma vantagem ao trader prospectivo. 


Os bancos de dados SQLite podem ser criados dentro do IDE MetaEditor e, como são repositórios de dados, teoricamente, deveríamos ser capazes de usá-los como uma fonte de dados para um Expert Advisor, de modo que atuem como buffers de indicadores. Além disso, eles podem armazenar os dados econômicos localmente, permitindo testes offline e também o uso no caso de a fonte dos dados de notícias ser corrompida por razões desconhecidas, o que é um risco constante, pois alguns (ou inevitavelmente a maioria) dos pontos de dados ficam desatualizados. Portanto, neste artigo, exploramos como os bancos de dados SQLite podem ser usados para arquivar notícias do Calendário Econômico, de modo que os Expert Advisors montados pelo Wizard possam usá-los para gerar sinais de trade.

Autor: Stephen Njuki

 

O armazenamento em cache do calendário econômico incorporado para testar e otimizar EAs foi descrito no livro algotrading.

Sua implementação de eventos de leitura (CSignalEconData::Read) é ineficiente e pouco prática.

PS. Para trabalhar com o SQLite a partir do testador, deve-se criar/colocar o banco de dados na pasta comum e abri-lo com o sinalizador DATABASE_OPEN_COMMON.

MQL5 Book: Advanced language tools / Economic calendar / Transferring calendar database to tester
MQL5 Book: Advanced language tools / Economic calendar / Transferring calendar database to tester
  • www.mql5.com
The calendar is available for MQL programs only online, and therefore testing news trading strategies poses some difficulties. One of the solutions...
 
Stanislav Korotky #:

Sua implementação de eventos de leitura (CSignalEconData::Read) é ineficiente e pouco útil.

O que está oculto nessa frase? Como a eficiência é medida?

 
Aleksey Vyazmikin #:

O que está oculto nessa frase? Como a eficiência é medida?

A pesquisa de data e hora específicas é implementada por meio de um loop direto em toda a matriz de eventos em cada chamada, o que carregará a CPU em progressão geométrica. Além disso, em cada iteração, StringToTime e StringToDouble são chamados.

Durante um teste com um ano ou mais de milhares de eventos econômicos, haverá uma desaceleração significativa, sem falar na otimização.

 
Stanislav Korotky #:

A busca por uma data e hora específicas é implementada por meio de um loop direto em toda a matriz de eventos em cada chamada, o que carrega o processador exponencialmente. Além disso, StringToTime e StringToDouble são chamados a cada iteração.

Ao testar um ano ou mais de milhares de eventos econômicos, isso causará uma lentidão significativa, para não mencionar a otimização.

Obrigado pelo esclarecimento.