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

 
Vladimir Karputov:
Passamos agora a este fio.
Thnx
 
Alexey Volchanskiy:

Estou também a estudar Python, mas apenas como parte do domínio de redes neurais, aprendizagem de máquinas e outras coisas e embalagens extravagantes. Não creio que seja possível trabalhar com este super-brainer, é 200 vezes mais lento que o MQL5, citei os resultados de alguns testes simples.

Ainda não percebi, é possível ligar módulos Python e funções de chamada da MQL5? Ou apenas Python->MQL5?

Com todo o respeito, simplesmente não sabe como prepará-lo. Reformulou o seu exemplo:

Em Python:

#!/usr/bin/env python3

from numba import njit, prange
import time


@njit(parallel=True, fastmath=True, cache=False)
def calc_pi(num_steps):
    x, sum1 = 0.0, 0.0
    step1 = 1.0 / num_steps
    for i in prange(num_steps):
        x = (i + 0.5) * step1
        sum1 = sum1 + 4.0 / (1.0 + x * x)
    return sum1 * step1


calc_pi(1)  # minus jit compilation time
start_time = time.time()
pi = calc_pi(1000000000)
msvcr = time.time() - start_time

print(f"--- {msvcr} seconds --- The value of PI is {pi}")


Para comparação em C:
#include <stdio.h>
#include <time.h>

int main()
{
    int num_steps = 1000000000;
    double step;

    clock_t start;
    clock_t stop;
    start = clock();
    double x, pi, sum=0.0;
    step = 1.0/(double)num_steps;
    for (int i = 0; i<num_steps; i++)
    {
        x = (i + .5) * step;
        sum = sum + 4.0 / (1.0 + x * x);
    }
    pi = sum*step;
    stop = clock();

    printf("The value of PI is %1.12f \n", pi);
    printf("The time to calculate PI was %5.3f seconds \n", ((double)(stop - start)/CLOCKS_PER_SEC));
    return 0;
}


Isto tudo numa antiga calculadora AMD Athlon(tm) 64 X2 Dual Core Processor 4200+, penso que na MQL5 o valor será de cerca de 12 seg.

(Não sei como executar o código MQL no linux).

Assim, Python com compilador jit bate C (mql) por 2 vezes! Se eu o executar no moderno CPU 8 Core, ele irá bater 8 vezes, simplesmente porque é multi-tarefa.

Mas mesmo num só fio o resultado Python é 9,6 segundos - por isso ainda é mais rápido. E também pode executá-lo numa placa de vídeo com CUDA.

Por exemplo, não posso escrever análogos multi-tarefa em C ou MQL - não serei capaz de escrever loky, corridas e colisões, mais o código será muito maior.

Pergunta aos programadores do MetaTrader: vai adicionar a chamada de funções de negociação de Python?

Também gostaria que uma função em Python se inscrevesse em eventos de tick do terminal, por isso, quando um tick chega, a mensagem será enviada para Python.

Sei que há desenvolvimentos destas funções por parte de terceiros, mas gostaria de tê-los fora da caixa.

Pode também tentar escrever código multi-threaded no GoLang, por interesse, num só fio é comparável em velocidade a C.
 

mql5

i7 na máquina virtual, atribuídos 2 núcleos, 4 fios


 

Que tipo de processador tem? Execute o meu código em C para o comparar com ele.


Se for um i7, é provavelmente 25 vezes mais rápido que o meu AMD, se não mais. Preciso de um teste nas mesmas línguas para o ponto do relatório.

 
Lyuk:
Que tipo de processador tem? corra o meu código em c para o comparar com ele.

C

i7 namáquina virtual, atribuídos 2 núcleos, 4 fios


 
Assim, acontece que o seu MQL é ainda ligeiramente mais lento que o C, pelo que o meu código python com compilador jit será muito mais rápido que o deles. Prevejo que a pitão esteja cerca de 1,5 segundos no seu CPU em 4 fios, embora haja apenas 2 fios reais.
 

Py

i7 no Linux, 4 núcleos, 8 fios


 

Óptimo resultado! E rapidamente escrito. Qualquer pessoa que diga que a pitão é lenta pode ser enviada para ver aqui os resultados dos testes.

Execute mais código python num só fio no seu processador (paralelo = Falso)


Para um teste completo.


É triste dizer que as CPUs modernas só aumentaram cerca de 12 vezes nos últimos 15 anos, pensei que as CPUs modernas eram mais rápidas.
 

(paralelo = Falso)


 
Lyuk:

Óptimo resultado! E rapidamente escrito. Qualquer pessoa que diga que a pitão é lenta pode ser enviada para ver aqui os resultados dos testes.

Execute mais código python num só fio no seu processador (paralelo = Falso)


Para um teste completo.

Foram publicadas há muito tempo mas preferem compará-la com a pitão pura que não faz sentido ) a pitão pura foi concebida para outros fins