트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 2333

 


....

 

유전자 프로그래밍의 가능성에 대한 쉽고 좋은 기사

https://blog.ephorie.de/symbolic-regression-genetic-programming-or-if-kepler-had-r

 

모두 성장하십시오! dll을 사용하여 Python에 대한 mql-scribbles를 확인하고 일부 기능의 작업 속도를 크게 높일 수 있는 멋진 방법을 찾았습니다.

다음은 파이썬에 푸시하려는 원래 mql5 함수입니다. 단순히 매끄러운 패턴에 따라 가격의 저점과 고점을 검색합니다.

 void get_loc_extremum( double &x[], double &x2[], double &loc_max[], double &loc_min[], bool real_price)
  {
   int N = ArraySize (x);
   for ( int i= 1 ; i<N- 1 ; i++)
     {
       if (x[i- 1 ]<x[i]&& x[i]>x[i+ 1 ])
        {
         ArrayResize (loc_max, ArraySize (loc_max)+ 1 );
         if (real_price)
            loc_max[ ArraySize (loc_max)- 1 ]=x2[i];
         else
            loc_max[ ArraySize (loc_max)- 1 ]=x[i];
        }

       if (x[i- 1 ]>x[i]&& x[i]<x[i+ 1 ])
        {

         ArrayResize (loc_min, ArraySize (loc_min)+ 1 );
         if (real_price)
            loc_min[ ArraySize (loc_min)- 1 ]=x2[i];
         else
            loc_min[ ArraySize (loc_min)- 1 ]=x[i];
        }

     }

이것은 여러 단계로 수행됩니다.

1. Visual Studio 또는 코드 블록 어디에서나 dll을 컴파일합니다. 모든 것이 간단합니다. .cpp 파일에서 함수를 보고 .h 파일에서 선언했습니다. 나를 위해 일한 예는 게시물에 첨부되어 있습니다. 폴더에는 codeblocks 프로젝트 파일, 기본 .cpp, 기본 .h 파일이 있으며 \bin\Debug 폴더에는 my_lib.dll 파일이 있습니다. 간단히 말해서, 다음 은 C++의 함수 헤더 입니다.

 void DLL_EXPORT GetLocalMaxMin( double * x_sm[], double * x_rl[], double * loc_max[], double * loc_min[], int N, bool real_price)
{
...
}

2 파이썬에서 다음을 수행하십시오.

from ctypes import *

my_dll = cdll.LoadLibrary( "my_dll/my_lib.dll" ) 					#загружаем свою DLL
my_dll.GetLocalMaxMin.argtypes = [POINTER(c_double), 
        POINTER(c_double), POINTER(c_double), POINTER(c_double), c_int, c_bool] #определяем типы входных аргументов функции через атрибуты ctypes
my_dll.GetLocalMaxMin.restype = None                                             #определяем типы выходных данных 

...
# y - список цен
# y_sm - список сглаженных цен
# len(y)=len(y_sm) - длина списков одинаковая

x_sm = (c_double * len(y))(*y_sm)    				  #создаем указатель на массив x_sm размером len(y_sm) предаем туда указатель на массив y_sm
x_rl = (c_double * len(y))(*y)       			       	  #создаем указатель на массив x_rl размером len(y) предаем туда указатель на массив y
loc_max = (c_double * len(y))()      				  #создаем указатель на массив loc_max размером len(y) заполный 0.0 
loc_min = (c_double * len(y))()     				   #создаем указатель на массив loc_min размером len(y) заполный 0.0 
my_dll.GetLocalMaxMin(x_sm, x_rl, loc_max, loc_min, len(y), True) #вызываем функцию и передаем туда все что насоздавали

print(list(loc_max),list(loc_min)) #смотрим что получилось

이것은 궁극적 인 진실이 아니며 추가 또는 다른 옵션이 있습니다.

파일:
my_lib.zip  36 kb
 
웰리모른 :

모두 성장하십시오! dll을 사용하여 Python에 대한 mql-scribbles를 확인하고 일부 기능의 작업 속도를 크게 높일 수 있는 멋진 방법을 찾았습니다.

다음은 파이썬에 푸시하려는 원래 mql5 함수입니다. 여기에서 가격의 저점과 고점은 단순히 매끄러운 패턴으로 검색됩니다.

이것은 여러 단계로 수행됩니다.

1. Visual Studio 또는 코드 블록 어디에서나 dll을 컴파일합니다. 모든 것이 간단합니다. .cpp 파일에서 함수를 보고 .h 파일에서 선언했습니다. 나를 위해 일한 예는 게시물에 첨부되어 있습니다. 폴더에는 codeblocks 프로젝트 파일, 기본 .cpp, 기본 .h 파일이 있으며 \bin\Debug 폴더에는 my_lib.dll 파일이 있습니다. 간단히 말해서, 다음 은 C++의 함수 헤더 입니다.

2 파이썬에서 다음을 수행하십시오.

이것은 궁극적 인 진실이 아니며 추가 또는 다른 옵션이 있습니다.

무엇을 달성하고 싶습니까?
속도가 빠르면 사용하지 마십시오.
 ArrayResize (loc_max, ArraySize (loc_max)+ 1 );

루프 내부에서 함수를 호출하기 전에 한 번 C++ 및 Python에서 했던 것처럼 원하는 크기를 설정하거나 세 번째 매개변수로 예약합니다.

 ArrayResize (loc_max, ArraySize (loc_max)+ 1, max_size );

이제 ArrayResize를 호출할 때마다 메모리에 새 블록이 생성되고 이전 블록이 메모리에 복사되고 이전 블록이 삭제됩니다. 너무 느립니다.

그리고

 ArraySize (loc_max)

매번 할 수는 없지만 변수에 저장합니다.


시도해 보세요. 간단한 기능을 3가지 다른 프로그래밍 언어로 분산할 필요가 없을 수도 있습니다. 개발자들은 MQL이 속도 면에서 C++와 비슷하며 어떤 면에서는 훨씬 더 빠르다고 말합니다.

그리고 DLL이 MQL에서 즉시 호출될 수 있다면 왜 Python입니까?

아니면 다른 목적이 있으신가요?
 
도서관 :
무엇을 달성하고 싶습니까?
속도가 빠르면 사용하지 마십시오.

루프 내부에서 함수를 호출하기 전에 한 번 C++ 및 Python에서 했던 것처럼 원하는 크기를 설정하거나 세 번째 매개변수로 예약합니다.

이제 ArrayResize를 호출할 때마다 메모리에 새 블록이 생성되고 이전 블록이 메모리에 복사되고 이전 블록이 삭제됩니다. 너무 느립니다.

그리고

매번 할 수는 없지만 변수에 저장합니다.


시도해 보세요. 간단한 기능을 3가지 다른 프로그래밍 언어로 분산할 필요가 없을 수도 있습니다. 개발자들은 MQL이 속도 면에서 C++와 비슷하며 어떤 면에서는 훨씬 더 빠르다고 말합니다.

그리고 DLL이 MQL에서 즉시 호출될 수 있다면 왜 Python입니까?

아니면 다른 목적이 있으신가요?

메시지의 극한 검색 기능은 그 원리를 보여주기 위해 단순히 예시로 제시한 것입니다.

목표는 파이썬에서 기능과 대상 간의 종속성을 찾고 모델을 선택하는 것이 편리하며 MQL에는 자신을 속이지 않으면 연구에 대한 명확한 평가를 얻을 수 있는 우수한 테스터가 있다는 사실로 구성됩니다. .

파이썬으로 작업하는 것이 편리하지만 아직 배우는 중이고 벡터 계산이 포함된 lib를 사용하는 파이썬에서 사이클이 있는 mql5에서 어떤 함수도 작성할 수 없습니다. 그리고 파이썬 없이 코드를 작성하는 것은 시간 낭비입니다. 왜냐하면 파이썬은 매우 느리기 때문입니다. 일부 기능은 각 막대에서 호출할 수 있으며 이로 인해 검색이 훨씬 더 어려워집니다. 나는 가능한 한 알깁스를 사용했다. 그들은 python과 mql5에 대한 솔루션을 가지고 있습니다. 그러나 내 망상 환상의 비행에 관해서는 문제가 있습니다.

코드 켜기   mql5 는 다음으로 쉽게 변환할 수 있습니다.   C++ 및 dll로 컴파일합니다 . 결과적으로 테스터와 파이썬 스크립트 모두에서 동일한 기능을 사용합니다.

 
웰리모른 :

메시지의 극한 검색 기능은 그 원리를 보여주기 위해 단순히 예시로 제시한 것입니다.

목표는 파이썬에서 기능과 대상 간의 종속성을 찾고 모델을 선택하는 것이 편리하며 MQL에는 자신을 속이지 않으면 연구에 대한 명확한 평가를 얻을 수 있는 우수한 테스터가 있다는 사실로 구성됩니다. .


자, Python에서 종속성을 찾고 모델을 선택하고 훈련하고 테스트했습니다. 그리고 테스터에서 어떻게 테스트합니까? Python은 테스터나 MKL5와 친구가 아닙니다.

 
TS의 경우 평균 위치 유지 시간이 10분입니다. 그리고 현재 위치 가 10시간 동안 고정된 다음 그 결과가 - 아마도(완전히 전신적이지 않음)?
 
fxsaber :
TS의 경우 평균 위치 유지 시간이 10분입니다. 그리고 현재 위치 가 10시간 동안 고정된 다음 그 결과가 - 아마도(완전히 전신적이지 않음)?

TS의 논리/규칙이 작성되는 방식에 따라 다릅니다. 아마도 이것은 수신된 데이터에서 TS 결과의 논리로 정의되지 않은 확률적일 수 있습니다. 논리가 10시간 동안 확실히 작동했다면 이것은 드문 경우일 뿐입니다.

 
발레리 야스트렘스키 :

논리가 10시간 동안 확실히 작동했다면 이것은 드문 경우일 뿐입니다.

논리가 작동했다는 사실이 결과를 체계적으로 만들지는 않습니다.

 
fxsaber :

논리가 작동했다는 사실이 결과를 체계적으로 만들지는 않습니다.

질문은 적용할 가능성과 일관성을 정의하지 않습니다. TS의 경우 모든 것이 TS에 의존하고 외부 조건의 경우 드문 경우가 처음에는 전신적이지 않습니다. 그리고 규칙에 예외가 있을 수 있습니다. 유로달러 14년 5월부터 3월 15일까지. 시스템 케이스가 아닙니다.

사유: