MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 80

 
Сергей Таболин:

Outra pergunta de um recém-chegado.

A situação é a seguinte. Tenho um indicador. Quando o adiciono ao gráfico em modo "frio", demora 7-8 segundos a ser calculado.

Eu fiz o mesmo em python. A diferença é que python escreve os dados num ficheiro .csv.

Compreendo perdas de ligação com MT5, outras despesas gerais.... Mas, 8 segundos vs 3 horas..... ???????? COMO ???????????

O que deseja de uma língua que é cem vezes mais lenta do que C++?

Tudo o que é rápido em Python é escrito como módulos C++. Se não houver um módulo rápido adequado, tudo será infinitamente mais lento.


copy_ticks_range, bem como o resto dos métodos de extracção de dados no Python API são escritos por nós de forma super eficiente e rápida ao nível de dar esses dados à MQL5.
 
Renat Fatkhullin:

O que deseja de uma língua que é cem vezes mais lenta do que C++?

Tudo o que é rápido em Python é escrito como módulos C++. Se não houver um módulo rápido adequado, tudo será infinitamente mais lento.


copy_ticks_range, bem como outros métodos de extracção de dados em Python API são escritos por nós super eficientes e rápidos ao nível de dar estes dados em MQL5.

Mais devagar, não por HUNDREDS....

Obrigado, Renat, pela resposta. Presumo que esta velocidade está apenas à mercê de Python? Eu próprio pensei que nem chamar carraças em MT, nem escrever dados num ficheiro poderia abrandar tanto...

 

Agora vê porque é que nos esforçamos tanto no desempenho linguístico?

Caso contrário, é impossível manusear volumes modernos.

Não apoiamos Python por si só, mas como ponte para bibliotecas eficientes escritas para ele (em C++).

 
Renat, pode dar uma breve visão geral de até onde chegou com o novo testador?

Então certamente uma funcionalidade API será incluída para usar o testador com Python, não será?

Saudações
 
Christian:

Então certamente uma funcionalidade API será incluída para utilizar o testador com Python, não será?

Não. É ingénuo pensar que cometeríamos suicídio e escolheríamos uma língua cem vezes mais lenta do que a nossa para matar um testador.

É muito mais rentável para nós desenvolver a nossa ideia de recompilar bibliotecas C++ de terceiros em módulos MQL5. Para tal, começámos a incluir um compilador LLVM externo no editor.

 
Renat Fatkhullin:

Não. É ingénuo pensar que cometeríamos suicídio e escolheríamos uma língua cem vezes mais lenta do que a nossa para matar um testador.

É muito mais rentável para nós desenvolver a nossa ideia de recompilar bibliotecas C++ de terceiros em módulos MQL5. Para o fazer, começámos a incluir o compilador externo LLVM no editor.

Existe alguma esperança de desenvolver a ideia de apoiar oC/C++.lib ou .uma biblioteca estática ligada a um projecto de programa mql?

 
Roman:

Existe alguma esperança de desenvolver a ideia, no apoio aoC/C++.lib ou .a bibliotecas estáticas ligadas ao projecto do programa mql?

Não. Pode sempre utilizar qualquer DLL com controlo explícito dos direitos de acesso.

 
Compreendo as perdas de ligação ao MT5, outras despesas gerais.... Mas, 8 segundos vs 3 horas..... ???????? COMO ???????????

Dê-me um exemplo do seu código Python que abranda, não está claro nas palavras o que faz e como obtém os dados. E porque é que escreve constantemente para o ficheiro? Não pode ser feito no final?

 
Renat Fatkhullin:

Não. É ingénuo pensar que cometeríamos suicídio e escolheríamos uma língua cem vezes mais lenta do que a nossa para matar um testador.

É muito mais rentável para nós desenvolver a nossa ideia de recompilar bibliotecas C++ de terceiros em módulos MQL5. Para o fazer, começámos a incluir o compilador externo LLVM no editor.

E se, hipoteticamente, tomar o suporte ONNX, os modelos importados serão mais lentos do que a própria MQL?

 

Notou-se uma estranheza na produção:

[89, '2020.01.16', 3, 15, 3, 16, Timedelta('0 days 01:16:53.966000')]
[90, '2020.01.16', 3, 16, 3, 17, Timedelta('0 days 00:25:39.266000')]
[91, '2020.01.16', 3, 17, 4, 12, Timedelta('0 days 19:07:12.757000')]
[92, '2020.01.17', 4, 12, 4, 13, Timedelta('0 days 00:36:14')]
[93, '2020.01.17', 4, 13, 4, 15, Timedelta('0 days 02:21:01.630000')]
[94, '2020.01.17', 4, 15, 4, 17, Timedelta('0 days 02:12:28.692000')]
[95, '2020.01.17', 4, 17, 0, 11, Timedelta('0 days 17:30:16.404000')]

É == 00:36:14.000000 ?

Razão: