Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2332

[Удален]  
Valeriy Yastremskiy:

у каждого свое видение .....  Истине на это наплевать, она не знает никого))))

Заголовок темы то можно прочесть

 
Maxim Dmitrievsky:

Заголовок темы то можно прочесть

Не один, уже хорошо... (в теме в смысле) а остальные не в счет...

 

Очень заинтересовала тема "генетического програмирования"  , это как ген. оптимизация только на стероидах, ГА сам может создавать формулы, даже программы, кароч. мощная тема, библы есть.

Можно придумывать всякие сложные комбинации..

поиск формулы:

1: In log(sin(cos(2))) : NaNs produced
2: In log(cos(3) + distance) : NaNs produced
3: In log(cos(log(sqrt(distance^2)))) : NaNs produced
4: In sqrt(log(distance^2)) : NaNs produced
5: In log(sin(sqrt(sqrt(distance^2)))) : NaNs produced
6: In log(log(cos(1)) - sin(3)) : NaNs produced
7: In log(distance^3 - (distance^1 + sin(1))) : NaNs produced
8: In log(distance * sin(distance)) : NaNs produced
9: In log(log(distance * sin(distance))) : NaNs produced
10: In log(cos(sqrt(log(distance + (distance + 2))))) : NaNs produced
11: In log(cos(distance)) : NaNs produced
12: In sqrt(sin(log(distance^2 + distance^2)) - distance) : NaNs produced
13: In sqrt(cos(distance^2)) : NaNs produced
14: In log(cos(3)) : NaNs produced
15: In log(log(sqrt(distance^4))) : NaNs produced
16: In log(cos(distance)) : NaNs produced
17: In log(sin(sin(log(cos(distance))))) : NaNs produced
18: In sqrt(distance - 3) : NaNs produced
19: In log(2 - log(distance^3)) : NaNs produced
20: In sqrt(distance - (2 - distance^4)) : NaNs produced
......
....
...

признаков, моделей, правил итп.. Вещь! , буду разбираться..

Знаю ответ за ранние но все же спрошу - кто то пробовал?

[Удален]  
mytarmailS:

Знаю ответ за ранние но все же спрошу - кто то пробовал?

болие лимени пробывал

доббав в МГУА других формуль и получи

 
Maxim Dmitrievsky:

болие лимени пробывал

доббав в МГУА других формуль и получи

типа да, но нет, МГУА захлебнется от количества вариантов, тут простор побольше на много, но Ивахненко канешн красавчик, смотрел на 50 лет вперед

[Удален]  
mytarmailS:

типа да, но нет, МГУА захлебнется от количества вариантов, тут простор побольше на много, но Ивахненко канешн красавчик, смотрел на 50 лет вперед

ну тибе ведней 

 


....

 

Легкая , хорошая статья про возможности генетического програмирования

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

 

Всем зарасти!  Нашел (для себя) прикольный способ проверить свои mql-писульки на пайтон, а также значительно ускорить работу некоторых функций в нем, с помощью dll. 

Вот исходная функция на 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. Где ни будь, в визуалстудио или в кодблоксе компилим свою dll. Там все просто, в файле .cpp пилим свою функцию, в файле .h объявляем её. Пример который у меня работал в приложении к сообщению. В папке файл проекта кодблокс, файлы main .cpp, main .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
 
welimorn:

Всем зарасти!  Нашел (для себя) прикольный способ проверить свои mql-писульки на пайтон, а также значительно ускорить работу некоторых функций в нем, с помощью dll. 

Вот исходная функция на mql5 которую я хочу запихать в пайтон. Тут просто ищутся минимумы максимумы цены по ее  сглаженному образцу.

Это делается в несколько шагов

1. Где ни будь, в визуалстудио или в кодблоксе компилим свою dll. Там все просто, в файле .cpp пилим свою функцию, в файле .h объявляем её. Пример который у меня работал в приложении к сообщению. В папке файл проекта кодблокс, файлы main .cpp, main .h , в папке \bin\Debug файл  my_lib.dll.  Короче вот заголовок функции на c++:

2  В пайтон делаем следущее:

Это не истина в последней инстанции, есть дополнения, или другие варианты, пишите.

А чего вы хотите добиться?
Если скорости, то не используйте
ArrayResize(loc_max,ArraySize(loc_max)+1);

внутри цикла, а 1 раз до вызова функции задайте нужный размер, как вы сделали это в С++ и питоне, или зарезервируйте его 3-м параметром

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

Сейчас каждый вызов ArrayResize, создает новый блок в памяти, копирует в него старый и удаляет старый. Это оооочень медленно.

И

ArraySize(loc_max)

можно не каждый раз делать, а хранить в переменной.


Попробуйте, может и не придется раскидывать простую функцию на 3 разных языка программирования. Разработчики говорят, то MQL соизмерим по скорости с С++, а в некоторых вещах и быстрее.

А зачем Питон, если DLL можно сразу из MQL вызвать?

Или у вас какая-то другая цель?