Obrigado ao autor, artigo relevante. Também estive refletindo sobre esse tópico, mas não cheguei a ler o artigo.
O autor adverte que você deve monitorar cuidadosamente quais instrumentos estão executando o quê. Em vista da escrita de Expert Advisors que podem ser executados em qualquer par, isso é um pouco difícil. Você terá que acompanhar em qual par o EA está sendo executado e ajustar os pares de fluxos paralelos.
Com relação a isso, uma pergunta (não tanto para o autor, mas mais para os desenvolvedores do MQ): é possível introduzir ferramentas personalizadas?
Dessa forma, poderíamos resolver muitas tarefas, começando pela criação de gráficos vazios para cálculos paralelos e terminando com a criação de gráficos de ticks de nossa própria autoria.
Quanto ao buffer de transferência de dados, posso aconselhá-lo a criar uma estrutura global e transferir diferentes tipos de dados pela estrutura. Sei por experiência própria que nem sempre é conveniente retornar o resultado dos cálculos na forma de uma matriz, pois muitas vezes é preciso rastrear alguns contadores e, para não confundir os nomes, é mais fácil passar tudo como uma estrutura e já se referir às variáveis como membros da estrutura. A propósito, a mesma estrutura pode incluir matrizes.
- www.mql5.com
Com relação a isso, uma pergunta (não tanto para o autor, mas mais para os desenvolvedores do MQ): é possível introduzir ferramentas personalizadas?
Talvez eu repita a ideia já expressa aqui sobre ferramentas personalizadas, mas gostaria de acrescentar....
Agora, um Expert Advisor (indicador, script) é iniciado somente em um símbolo específico. Ele tem acesso aos dados atuais de outros símbolos, mas o evento OnTick é gerado somente para o símbolo host, em cujo gráfico o Expert Advisor é iniciado.
Talvez fosse lógico introduzir a possibilidade de criar sua própria"ferramenta personalizada", que é como um complemento. A ferramenta personalizada é uma espécie de superestrutura sobre os Expert Advisors e tem a capacidade de receber e processar ticks de vários símbolos, passando os resultados para programas (partes do programa ou Expert Advisors, indicadores) que trabalham com um símbolo específico em seu próprio tópico. Isso facilitou muito e estimulou a criação da "multimoeda". E o próprio conceito de programação de objetos leva a isso. Por que vincular um Expert Advisor a um símbolo específico se você trabalha com vários símbolos?
P.S. Bem, ou seria bom adicionar às funções SymbolInf... algo como o evento "a new tick for this symbol has arrived".
Agora, o Expert Advisor (indicador, script) é iniciado apenas em um símbolo específico. Ele tem acesso aos dados atuais de outros símbolos, mas o evento OnTick é gerado apenas para o símbolo host, em cujo gráfico o Expert Advisor é iniciado.
É difícil entender por que os desenvolvedores repetiram a muleta. Afinal de contas, quando a arquitetura MQL5 estava sendo desenvolvida, já existia uma API muito forte, na qual o onTick era acionado para qualquer tick de qualquer símbolo assinado.
Em geral, não entendo por que eles escolheram essa arquitetura e aproveitaram tão pouco da API já existente, que era muito competente em termos de arquitetura.
Os desenvolvedores da MQL5 se comportam como se estivessem reinventando a roda: "vamos pensar sobre esse recurso", "sim, você está certo, vamos adicioná-lo" etc.
Foi mencionado várias vezes que mais de um ano foi gasto no desenvolvimento da arquitetura. Portanto, há alguns argumentos que explicam por que eles decidiram fazer isso dessa forma e não de outra.
P.S. Talvez a razão esteja no fato de que os desenvolvedores do MetaTrader têm pouca experiência em corretagem e negociação, mas uma enorme experiência em escrever plataformas. Outros desenvolvedores, ao contrário, tinham grande experiência em corretagem real e negociação de mercado.
P.P.S. Escrevi meus pensamentos, não especulações. É sempre mais fácil criticar do que criar. Os desenvolvedores, apesar dos erros óbvios, merecem respeito.
Talvez fosse lógico introduzir a possibilidade de criar sua própria"ferramenta personalizada" , que é como um complemento dos Expert Advisors e tem a capacidade de receber e processar ticks de vários símbolos, passando os resultados para programas (partes do programa ou Expert Advisors, indicadores que trabalham com um símbolo específico) que é como uma superestrutura sobre os EAs e tem a capacidade de receber e processar ticks de vários símbolos, passando os resultados para programas (partes do programa ou EAs, indicadores) que trabalham com um símbolo específico em seu próprio thread. Isso facilitou muito e estimulou a criação da "multimoeda". E o próprio conceito de programação de objetos leva a isso. Por que vincular um Expert Advisor a um símbolo específico se você trabalha com vários símbolos?
P.S. Bem, ou seria bom adicionar às funções SymbolInf... algo como o evento "chegou um novo tique para esse símbolo".
Esse "complemento" pode ser implementado usando as ferramentas padrão da MQL5: Manipulador de ticks de várias moedas OnTickMarketWatch
Obrigado. Foi esse artigo que me levou às conclusões acima. Mas, como você mesmo observou neste artigo:
Dicas de uso:
1. Essa variante do manipulador de ticks de várias moedas consome muitos recursos. Você pode aliviar a carga no processador aumentando o atraso do tempo de recebimento dos ticks no script, usando a variável delay. Mas, ao mesmo tempo, você pode pular um certo número de ticks.
Se você aumentar o tempo de atraso para até 1 segundo, poderá obter o mesmo efeito usando OnTimer(). Infelizmente, com as mesmas desvantagens.
Ao mesmo tempo, o terminal recebe e processa continuamente os ticks por símbolos da "Janela do Mercado". Temos acesso a esses ticks, mas não temos nenhum sinal de que esses dados foram atualizados. É por isso que temos que fazer a verificação artificialmente. A vantagem da MQL5 é que isso pode ser feito. Mas concordo que seria muito mais elegante ter uma solução incorporada nas funções do terminal. Que seja um evento separado, como OnTrade(), e que o desenvolvedor possa usá-lo a seu critério (ou não).
E sobre "ferramentas personalizadas" ou superestrutura sobre experts.... Percebo que isso é uma espécie de "sonho" e que deveria ter sido pensado na fase de design... É uma pena!
Muito obrigado. Foi esse artigo que me levou às conclusões acima. Mas, como o senhor mesmo observou neste artigo:
Dicas de uso:
1. Essa variante do manipulador de ticks de várias moedas consome muitos recursos. Você pode aliviar a carga no processador aumentando o atraso do tempo de recebimento dos ticks no script, usando a variável delay. Mas, ao mesmo tempo, você pode pular um certo número de ticks.
Se você aumentar o tempo de atraso para até 1 segundo, poderá obter o mesmo efeito usando OnTimer(). Infelizmente, com as mesmas desvantagens.
Ao mesmo tempo, o terminal recebe e processa continuamente os ticks por símbolos da "Janela do Mercado". Temos acesso a esses ticks, mas não temos nenhum sinal de que esses dados foram atualizados. É por isso que temos que fazer a verificação artificialmente. A vantagem da MQL5 é que isso pode ser feito. Mas concordo que seria muito mais elegante ter uma solução incorporada nas funções do terminal. Que seja um evento separado, como OnTrade(), e que o desenvolvedor possa usá-lo a seu critério (ou não).
E sobre "ferramentas personalizadas" ou superestrutura sobre experts.... Percebo que isso é apenas um "sonho" e que deveria ter sido pensado na fase de design... É uma pena!
Muito bem! Agora resta aos desenvolvedores nos ouvir. Seria bom se esse complemento pudesse incluir funções de gerenciamento de thread de uma só vez.
Seria possível executar cada processamento em seu próprio thread. Talvez isso permitisse o processamento de um novo tick enquanto se trabalha com o tick atual.
Artigo útil. Ele abriu novos horizontes.
Tenho uma pergunta: a função OnTick() pode ser transformada em uma função com um parâmetro, como OnTick(EURUSD), de modo que os ticks de diferentes instrumentos possam ser processados em paralelo em um Expert Advisor? É claro, com o processamento de cada instância de uma função de parâmetro único em um thread separado (em um kernel separado).
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Cálculos paralelos no MetaTrader 5 foi publicado:
O tempo tem sido de grande valor por toda a história da humanidade, e tentamos não desperdiçá-lo sem necessidade. Este artigo dirá a você como acelerar o trabalho do seu Expert Advisor se seu computador tiver um processador com vários núcleos. Além disso, a implementação do método proposto não requer conhecimento de nenhuma outra linguagem além de MQL5.
Autor: Andrew