MetaTrader 5 Python 사용자 그룹 - Metatrader에서 Python을 사용하는 방법 - 페이지 22

 
Vladimir Karputov :
지금 이 스레드로 이동했습니다.
Thnx
 
Alexey Volchanskiy :

나는 또한 Python을 공부하지만 신경망, 기계 학습 및 기타 세련된 제품과 패키지를 마스터하는 프레임워크 내에서만 공부합니다. MQL5보다 200배 느린 이 슈퍼브레이크를 작업하는 것이 가능하다고 생각하지 않고 간단한 테스트 결과를 제공했습니다.

그리고 MQL5에서 Python 모듈을 연결하고 모듈에서 함수를 호출하는 것이 가능한지 여전히 이해가 되지 않습니까? 아니면 연결만 Python->MQL5입니까?

모든 존경심을 가지고 당신은 그것을 요리하는 방법을 모릅니다. 예를 변경했습니다.

파이썬에서:

#!/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}" )


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 ;
}


이것은 모두 고대 계산기 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+에 대한 것입니다. MQL5에서는 약 12초가 될 것이라고 생각합니다.

(리눅스에서 MQL 코드를 실행하는 방법을 모르겠습니다.)

즉, jit 컴파일러가 있는 Python은 C(mql)를 2번 수행했습니다!현대의 8코어 프로세서에서 실행하면 다중 스레드이기 때문에 8번 수행됩니다.

그러나 하나의 스레드에서도 Python의 결과는 9.6초입니다. 즉, 여전히 더 빠릅니다. 또한 CUDA를 사용하여 비디오 카드에서 실행할 수도 있습니다.

예를 들어, C 또는 MQL로 다중 스레드 아날로그를 작성할 수 없습니다. 잠금, 경쟁 및 충돌이 있을 것이며 더 많은 코드가 있을 것입니다.

MetaTrader 개발자를 위한 질문: Python에서 호출 거래 기능 을 추가할 계획입니까?

또한 파이썬에서 터미널에서 틱 이벤트를 구독하는 기능을 원합니다. 그러면 틱이 도착하면 파이썬으로 메시지가 전송됩니다.

이러한 기능에 대한 타사 개발이 있다는 것을 알고 있지만 즉시 사용하고 싶습니다.

관심을 끌기 위해 GoLang에서 다중 스레드 코드를 작성할 수도 있습니다. 한 스레드에서는 속도가 C와 비슷합니다.
 

mql5

가상 머신 의 i7, 2코어, 4스레드 전용


 

어떤 프로세서가 있습니까? 비교할 무언가가 있도록 내 C 코드를 실행하십시오.


글쎄요, i7이라면 아마 제 AMD보다 25배 더 빠를 것입니다. 보고 지점에 대해 동일한 언어로 된 테스트가 필요합니다.

 
Lyuk :
어떤 프로세서가 있습니까? 비교할 무언가가 있도록 내 C 코드를 실행하십시오.

가상 머신i7 , 2코어, 4스레드 전용


 
즉, MQL이 C보다 약간 느리기 때문에 jit 컴파일러가 있는 파이썬 코드가 훨씬 빠를 것입니다. 실제 프로세서는 2개뿐이지만 4개 스레드의 프로세서에서 약 1.5초 정도의 파이썬이 예상됩니다.
 

파이

Linux의 i7 , 4코어, 8스레드


 

우수한 결과! 그리고 빨리 썼습니다. 파이썬이 느리다고 말하는 사람은 여기에서 테스트 결과를 볼 수 있습니다.

프로세서의 한 스레드에서 더 많은 Python 코드 실행(병렬 = False)


완전한 테스트를 위해.


다만 안타까운 점은 지난 15년간 파쇄기의 속도가 12배 정도 빨라졌는데, 현대 프로세서가 더 빠르다고 생각했다는 점이다.
 

(병렬=거짓)


 
Lyuk :

우수한 결과! 그리고 빨리 썼습니다. 파이썬이 느리다고 말하는 사람은 여기에서 테스트 결과를 볼 수 있습니다.

프로세서의 한 스레드에서 더 많은 Python 코드 실행(병렬 = False)


완전한 테스트를 위해.

예, 그들은 오랫동안 보내졌지만 무의미한 순수한 파이썬과 비교하는 것을 선호합니다) 순수는 다른 목적을위한 것입니다