English Русский 中文 Español Deutsch 日本語
MQL5 vs QLUA - Por que operações de negociação no MQL5 são até 28 vezes mais rápidas?

MQL5 vs QLUA - Por que operações de negociação no MQL5 são até 28 vezes mais rápidas?

MetaTrader 5Exemplos |
1 516 69
MetaQuotes
MetaQuotes

Você já se perguntou como a sua ordem é entregue tão rápida na bolsa? Também já se perguntou quanto tempo seu terminal precisa para receber o resultado da operação?

Testamos a melhor qualidade de execução da ordem, o recebimento de resposta rápida e o alcance de uma velocidade de transação mais rápida.

12 de setembro de 2016, rodamos simultaneamente três testes de velocidade numa conta real com a corretora "Otkrytie" no terminal MetaTrader 5, versão 1415 e no Quik 7.2.23. Cada teste visa medir características de velocidades específicas, que é importante para a negociação algorítmica:
  1. Teste de operações síncrônicas — é uma série de 10 sincronizações deoperações de Compra consecutivascom a confirmação de uma execução bem-sucedida em cada transação relativa a bolsa. A próxima operação não é executada até que uma resposta seja recebida a partir do servidor de negociação, confirmando se a operação anterior foi ou não executada na bolsa. A velocidade da execução depende de toda a cadeia: terminal — servidor de negociação — bolsa — servidor de negociação — terminal. Quanto menor for o tempo médio da operação de negociação sincronizada, melhor.
  2. Teste de operações sem sincronizar — série de 10 operações de Compra sem qualquer confirmação da execução de transação bem sucedida. É um simples teste de velocidade, que mensura como as ordens são rapidamente enviadas para a bolsa. O melhor terminal é aquele que pode executar 10 operações de Compras sem sincronizar de modo mais rápido.
  3. Teste de atualização do livro de oferta — mensura a rapidez que as ordens do Livro de Ofertas (Profundidade do Mercado) são atualizadas. Esta é uma simples contagem do número de ticks (atualizações) no Livro de Ofertas por uma unidade de tempo. Quanto mais frequentes as cotações são recebidas pelo terminal, a partir da bolsa, mais rápido o livro de ofertas será atualizado. Portanto, quanto mais ticks por segundo é o recebimento da negociação automática, mais rápido é a resposta das mudanças na estrutura de oferta/demanda do mercado. O melhor terminal é aquele com a maior velocidade de atualização do livro de ofertas.


Condições de teste

Os dois terminais estão instalados num VPS em Moscou, assim como os servidores de negociação da corretora "Otkryite". As operações de negociação foram realizadas utilizando a mesma conta real para o Mercado Derivativo da Bolsa de Moscou; o instrumento de negociação foi o ativo Si-9.6.

Selecionamos um vídeo sobre os três testes para facilitar a análise:

  1. As operações de negociação foram realizadas na mesma conta real
  2. O mesmo instrumento financeiro Si-9.16 foi negociado
  3. O mesmo computador foi utilizado
  4. As negociações foram realizadas no mesmo momento
  5. Sobre as mesmas condições de mercado
  6. A atualização da velocidade do Livro de Ofertas (profundidade do mercado), foi calculada pelo mesmo instrumento e ao mesmo tempo
  7. A latência da rede para os servidores da corretora, foi de 2ms

Resultados da Velocidade de Negociação: MetaTrader 5 vs QUIK

Os resultados dos três testes são apresentados num quadro resumido e os resultados adicionais contendo detalhes de cada teste, estão disponíveis em outras seções abaixo.

Teste
MetaTrader 5
QUIK
Vantagem MT5
O tempo médio de uma operação sincronizada
9.59 ms277.80 ms28.96 times
O tempo médio de uma operação sem sincronia0.09 ms0.30 ms 3.33 times
Velocidade de atualização do Livro de Ofertas
42.7 vezes por segundo8.4 vezes por segundo5.08 vezes

Como é possível analisar, o MetaTrader 5 mostra resultados muito melhores, em todos os testes. Você pode reproduzir os mesmos testes usando o código-fonte em anexo. O processo de teste está demonstrado no vídeo abaixo.


Vídeo Comparando a velocidade de Negociação




Conclusão:  As operações do MetaTrader 5 executam negociações até 28 vezes mais rápido que o QUIK

Estes testes demonstram que a linguagem MQL5 é muito mais rápida do que a QLUA, no que se refere a realização de negociações no MICEX-RTS, assim como, na verificação do Livro de Ofertas. Além de realizar cálculos até 50-600 mais rápidos, robôs de negociação MQL5 também negociam até 28 vezes mais rápidos. Além disso, todo o arsenal de ferramentas de desenvolvimento estão disponíveis, sem a necessidade de usar conectores adicionais, DLLs e etc. Você pode usar classes de negociações prontas da Biblioteca Padrão e um grande número de artigos para uma automatização das negociações.

Um robô de negociação robusto deve verificar os resultados de negociação que envia; ou seja, esperar por uma resposta do servidor de negociação. Os testes provaram que o MetaTrader 5 é significativamente mais rápido na realização de operações sincronizadas. Se você precisa usar operações sem sincronias, você faz 3 vezes mais rápido com MetaTrader 5. Se você precisa analisar o livro de ofertas, o MetaTrader 5 irá lhe fornecer uma vantagem 5 vezes mais rápida, indicando fluxo sem capturas instantâneas.

Estes testes também provam que a linguagem MQL5 é uma solução ideal para um desenvolvimento rápido de sistemas de negociação automatizados. Até mesmo conectores complementares ou bibliotecas para o terminal QUIK, que são destinadas a acelerar os cálculos, não ajudam muito, uma vez que o afunilamento é o tempo de desempenho da negociação.

Agora vamos analisar os detalhes ainda importantes do teste.


Detalhando os relatórios de comparação entre o MetaTrader 5 vs QUICK

Uma aplicação em QLUA mensura o tempo chamando o timer do sistema operacional com a resolução do timer padrão de 10…15,6 milissegundos (geralmente 15.6 ms). Melhoramos a precisão da medição do tempo no QLUA, simplesmente reduzindo a resolução do temporizador do sistema para 1 ms. Isso é feito usando o script SpeedupSystemTimer.mq5, que chama a função timeBeginPeriod da biblioteca do sistema Winmm.dll

#import "winmm.dll"
int timeBeginPeriod(uint per);
#import

void OnInit()
  {
   timeBeginPeriod(1);
  }

void OnTick()
  {
  }


Tínhamos executado o script antes de iniciar os testes complementares no MetaTrader 5, permitindo chamadas DLL, o que resultou no erro da medição da operação em QUIK de não mais que 1 ms.

A linguagem MQL5 fornece uma função pronta GetMicrosecondCount(), de modo que a precisão da medição de velocidade no terminal MetaTrader 5 é de 1 microssegundo (1 milissegundo=1000 microssegundos).

#1 Teste de Velocidade de Operações Sicronizadas

O teste implicou na medição da velocidade das negociações sincronizadas, isto é, uma operação de negociação só poderia ser executada após receber uma resposta a partir da confirmação do servidor de negociação que a operação anterior foi executada com sucesso e com uma confirmação completa a partir da bolsa.

Em primeiro lugar, uma série de negociações foram realizadas através do terminal MetaTrader 5, em seguida, a mesma série foi realizada através do terminal QUIK.

O objetivo dos testes foi medir o tempo médio de 10 sincronizações de 1 lote de operações de Compra no mercado:

  • SyncTradeTest.mq5
  • SyncTradeTest.lua

O tempo gasto para executar o funcionamento sincronizado foi medido da seguinte maneira:

  • A linguagem MQL5 fornece a função de sincronização OrderSend e o tempo pode ser facilmente medido no início e no final da série de negociação.

  • A linguagem QLUA não fornece funções de negociação sincronizadas e consequentemnte o status da transação deve ser monitorizado separadamente. O tempo de início da operação foi gravado antes da chamada da sendTransaction() usando a função os.closck(). A conclusão bem executada da transação foi monitorada na versão do handler OnOrder() durante a primeira chamada, quando o evento sobre a execução de negociação relativa a bolsa foi recebida. A diferença entre estes eventos é o tempo necessário para executar uma operação de negociação.
Os resultados das medições mostram que o terminal MetaTrader 5 executa operações sincronizadas até 28 vezes mais rápidas.


#2 Teste de Velocidade de Operações Sem Sincronizar

Este teste é muito mais fácil. Uma ordem de compra para um contrato futuro Si-9.16 foi enviado dez vezes seguidas. Isto nos permite medir o tempo médio de transferência sem sincronizar no QLUA com uma precisão de 1 ms / 10 = 0,10 ms. O MetaTrader 5 não tem erro de medição, pois usa um timer de microssegundos.

Não esperamos pelo resultado da operação: enviando uma oferta ao servidor de negociação imediatamente, seguido por um envio da próxima ordem:

  • AsyncTradeTest.mq5
  • AsyncTradeTest.lua
Os resultados mostraram que MetaTrader 5 executa operações sem sincronia 3.33 vezes mais rápido.


#3 Teste de Atualização do Livro de Ofertas

Algumas estratégias de negociação utilizam a análise do livro de ofertas. No MQL5, o evento de alteração do Livro de Ofertas pode ser rastreado no handler OnBookEvent(); QLUA tem o OnQuote() para essa finalidade.

A velocidade da mudança no Livro de Ofertas foi testada usando os programas abaixos, que estão disponíveis no arquivo ZIP anexo:

  • MarketUpdateTest.mq5
  • MarketUpdateTest.lua

Após a execução dos programas nos dois terminais, registramos que o Livro de Ofertas no MetaTrader 5 foi atualizado cerca de 5 vezes mais rápido. Provavelmente, QUIK limita a frequência da atualizações no livro de ofertas e não expõe algumas das mudanças ocorridas.

Todos os arquivos de código fonte estão anexos ao artigo, por isso qualquer pessoa pode reproduzir estes testes e verificar os resultados.


Por que a diferença é tão impressionante?

Apaixonadamente, nós nos esforçamos para obter um alto desempenho e o valor a cada microssegundo, constantemente otimizando a plataforma de negociação por mais anos.

É por isso que conseguimos um desempenho surpreendente na nossa construção algorítmica na linguagem de programação MQL5 e uma velocidade impressionante na transação das negociações.

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/2635

Arquivos anexados |
Últimos Comentários | Ir para discussão (69)
s_mike
s_mike | 5 set. 2017 em 16:04
Renat Fatkhullin:

Você primeiro prova suas palavras com seu código, em vez de nossas provas.

Por que você está jogando palavras no nível de erudição banal e não sabe o que é LUA?


Há duas linguagens que foram comparadas.

E uma perde para a outra em 50 a 600 vezes em termos de velocidade, e em conjunto com uma plataforma de negociação em transações de negociação puras, em que o mínimo de linguagem envolve 28 vezes.

O Quick em si não tem uma integração profunda com a linguagem, que é apenas colocada de lado. E a MetaTrader 5 foi criada para atender às necessidades da MQL5, quando todos os dados estão prontos para serem usados na MQL5. Além disso, a linguagem LUA foi criada como uma ligação entre chamadas de alto nível, mas não para operações de cálculo.


Escrever módulos em C++ e depois distribuí-los? Quem se arriscará a instalar o EXE/DLL de outra pessoa no ambiente de negociação?

Mas em MQL5 isso é seguro, porque em MQL5 você obtém um código seguro e quase a mesma velocidade que em C++.


Aqueles que vivem no Quick não conhecem os conceitos de dados reais.

Quando você puder repetir o código a seguir em LUA, volte para discutir "arrays enormes":

Executando a frio, 17 milhões de ticks reais de RTS-9.17 e 60.278 barras de minutos foram produzidos em 2,6 segundos.

Limites ilimitados de dados são usados na plataforma. Esses dados são usados para criar indicadores, análises, etc.

Esses são exatamente os dados com os quais os programas MQL operam. E o próprio terminal opera com esses dados em seu trabalho.

E você está falando de algumas tabelas.


Você simplesmente não conhece a linguagem e suas entranhas. É por isso que todas as linguagens são iguais para você.

Percebeu que está falando com uma pessoa que cria linguagens de programação e luta pela eficiência e produtividade?

Percebe com quem está falando?

Quando você nem sequer estava nos planos, a pessoa com quem você está falando ostentava o compilador ansi C vax no pdp-11.

Não consigo me conter: ovelhas.

Vocês recebem dinheiro para escrever todos esses testes e soprar ranho nos ouvidos de usuários não sofisticados. Não vou escrever textos e participar desse show de graça. 600 vezes mais rápido, mãos abertas, mãos abertas.

O fato de o suporte da lupa estar preso ao terminal na lateral está certo. Deveria ser assim (embora não possamos dizer que os desenvolvedores do Quick planejaram isso: eles não tinham outra maneira). E a maneira como a sua empresa está agindo - tudo deve ser colorido, piscante e fechado em uma única bola - é duvidosa. E o mais importante - ponts, ponts...

"Nós escrevemos um testador, agora você não precisa do amibroker e do welslab." 600 vezes mais rápido, também? Palhaços.

"Podemos enviar 28 vezes mais transações do que o Quick. Para que, porra? Para quê?
Há uma correção, ele também é 28 vezes mais rápido.

Podemos adicionar 1+1 100 vezes mais rápido. Mesmo se esse for o caso (e não é), por quê? A largura de banda da infraestrutura ainda é o fator determinante. Você dirige uma Ferrari mais rápido de Khimki a Vidnoye do que um Solaris?

Tudo isso são bolhas e conversas. Relações públicas para atrair otários. Mas esse é seu público-alvo.



Já me bloqueie. Escritores de poesia.
MetaQuotes
Renat Fatkhullin | 5 set. 2017 em 16:06

Acho que você está velho demais para competir. As palavras não vencem aqui.

Boa sorte.

prostotrader
prostotrader | 5 set. 2017 em 16:23

Que merda, o que importa quantas vezes mais rápido? !!!!

No FORTS, por exemplo, para um login, 30 transações por segundo!!!!

Não importa qual MT5, qual KVIC + redes de corretores deixam muito a desejar!

Mas o que não importa é a possibilidade de negociação COMPLETA na bolsa - Opções + Futuros + Moeda + Spot!!!!.

Não há um único software no mercado para negociação completa na bolsa de valores por meio de robôs (LUA, QLUA - PÉSSIMO)!

MetaQuotes
Renat Fatkhullin | 5 set. 2017 em 16:30
prostotrader:

Que merda, o que importa quantas vezes mais rápido? !!!!

No FORTS, por exemplo, para um login, 30 transações por segundo!!!

Os gateways das corretoras têm limites mais altos.

Até mesmo o cliente de uma corretora pode receber mais de 30 transações por segundo por meio do MetaTrader 5. Mas está claro que eles tolerarão isso até certo ponto.


Infelizmente, a bolsa russa não pode ou não quer atualizar e unificar radicalmente seu sistema. Daí a situação desanimadora das tecnologias de negociação no setor russo há 20 anos - ninguém quer investir lá.

Dmitriy Skub
Dmitriy Skub | 5 set. 2017 em 16:34
prostotrader:

Que merda, o que importa quantas vezes mais rápido? !!!!

No FORTS, por exemplo, para um login, 30 transações por segundo!!!

Você pode obter até 600 por uma taxa extra)))

Avaliação rápida do sinal: atividade comercial, gráficos de abaixamento/carregamento e distribuição de MFE/MAE Avaliação rápida do sinal: atividade comercial, gráficos de abaixamento/carregamento e distribuição de MFE/MAE
Ao procurar por um sinal, os assinantes são orientados principalmente para o aumento global na conta do Provedor, e isto é, na verdade, lógico. No entanto, além disso, é importante levar em conta os riscos potenciais incorridos por uma estratégia de negociação específica. Neste artigo, nós lhe mostraremos como avaliar simples e claramente o Sinal de interesse utilizando diversos indicadores.
LifeHack para traders: otimização "silenciosa" ou traço da distribuição de negociações LifeHack para traders: otimização "silenciosa" ou traço da distribuição de negociações
Análise do histórico de negociação e construção de gráficos HTML de distribuição de resultados de negociação, dependendo do momento da entrada no mercado. Os gráficos são exibidos em três seções, isto é: por horas, dias, semanas e meses.
Rede neural profunda com Máquina de Boltzmann Restrita Empilhada. Auto-aprendizagem, auto-controle Rede neural profunda com Máquina de Boltzmann Restrita Empilhada. Auto-aprendizagem, auto-controle
Este artigo é uma continuação dos artigos anteriores sobre redes neurais profundas e seleção de preditores. Aqui, consideraremos as características de uma rede neural iniciada com a Stacked RBM (Máquina de Boltzmann Restrita Empilhada), bem como sua implementação no pacote "darch".
Interfaces Gráficas VIII: O Controle Calendário (Capítulo 1) Interfaces Gráficas VIII: O Controle Calendário (Capítulo 1)
Na parte VIII da série de artigos dedicados à criação de interfaces gráficas no MetaTrader, nós vamos introduzir os controles compostos complexos como os calendários, lista hierárquica e o navegador de arquivos. Devido à grande quantidade de informações, os artigos foram escritos separadamente para cada assunto. O primeiro capítulo desta parte descreve o controle calendário e sua versão expandida — um calendário suspenso.