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

 
Maxim Dmitrievsky:

Ну серьезно.. мне ломает мозг эта странность. без спреда работает хорошо на трейн\тест

со спредом работает хорошо на трейн, но ломается на тесте. Что такого меняется на тесте, что спред тика в тику не дает выйти в профит...

похоже на какой-то косяк в логике

Вчера вечером, добавил еще один класс "не торговать" в целевую:

    for i in range(dataset.shape[0] - max):
        rand = random.randint(min, max)
        curr_pr = dataset['close'][i]
        future_pr = dataset['close'][i + rand]

        if future_pr  - curr_pr < -25*POINT:
            labels.append(1.0)
        elif future_pr - curr_pr > 25*POINT:
            labels.append(0.0)
        else:
            labels.append(2.0)

переписал тестер, в итоге ничего не дает даже не удается найти маломальски приличный результат. И кульминацией для меня стало то, что метод  save_model для C++  не поддерживает мультиклассовые модели, собака. Короче, исходя из условий, тупиковая ветвь .

 
welimorn:

Вчера вечером, добавил еще один класс "не торговать" в целевую:

переписал тестер, в итоге ничего не дает даже не удается найти маломальски приличный результат. И кульминацией для меня стало то, что метод  save_model для C++  не поддерживает мультиклассовые модели, собака. Короче, исходя из условий, тупиковая ветвь .

поверх еще один классификатор, который разрешает\запрещает торговлю 

но в этом действительно мало смысла, я узнавал )

 

Есть и такие решения оптимизации.


 
Aleksey Vyazmikin:

Есть и такие решения оптимизации.


Надо посмотреть, может что полезное будет
 
Aleksey Vyazmikin:

Есть и такие решения оптимизации.

А что это тебя на оптимизацию пробило ? 

 
mytarmailS:

А что это тебя на оптимизацию пробило ? 

Это вместо коррекции ошибки по градиенту. Правда на большем числе признаков требуются большие вычислительные мощности, но может для свернутых признаков пойдет...

 
Aleksey Vyazmikin:

Это вместо коррекции ошибки по градиенту. Правда на большем числе признаков требуются большие вычислительные мощности, но может для свернутых признаков пойдет...

ты сеть тренируешь?

 
mytarmailS:

ты сеть тренируешь?

В бустах так же градиент используется. Это просто информация для расширения знаний и методов пригодных для МО.

 

Конечная версия функций общения советника mql5  c питон программой.

В советнике имеются 2 функции, одна обновляет время в файле вторая, читает в файле актуальный торговый сигнал который формируется в питон программе.

void OnTick()
  {
   if(!isNewBar())
      return;
   file_refresh_time();
   sig =StringToDouble(file_read_signal());
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string  file_refresh_time()
  {
   string time  = TimeToString(TimeCurrent());
   bool read =false;
   string file_buff[];
   ArrayResize(file_buff,1);
   file_buff[0] = time;
   ArrayResize(file_buff,2);
   file_buff[1] = "not_actual";
   ArrayResize(file_buff,3);
   file_buff[2] = DoubleToString(sig);

   while(1)
     {
      int h=FileOpen("test.txt",FILE_WRITE|FILE_ANSI|FILE_TXT|FILE_COMMON);
      if(h==INVALID_HANDLE)
        {
         continue;
        }
      if(h!=INVALID_HANDLE)
        {
         for(int i=0; i<ArraySize(file_buff); i++)
            FileWrite(h,file_buff[i]);

         FileClose(h);

         break;
        }

     }
   return("0");
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string  file_read_signal()
  {
   string sg="0.5";
   bool read =false;
   while(1)
     {
      if(read==false)
        {
         string time  = TimeToString(TimeCurrent());
         int h=FileOpen("test.txt",FILE_READ|FILE_ANSI|FILE_TXT|FILE_COMMON);
         if(h==INVALID_HANDLE)
           {
            continue;
           }
         if(h!=INVALID_HANDLE)
           {
            int cnt=0;
            while(!FileIsEnding(h))
              {
               string str=FileReadString(h);
               StringTrimLeft(str);
               StringTrimRight(str);
               if(cnt == 1 && str == "actual")
                 {
                  read =true;
                 }

               if(read ==true && cnt == 2)
                 {
                  sg =str;
                 }
               cnt++;
              }
            FileClose(h);
            if(read ==true)
              {
               FileClose(h);
               break;
              }
           }

        }

     }
   return(sg);
  }

в питон программе при статусе "not_actual" производится чтение текущего времени, расчет актуального сигнала и запись его в файл.

terminal_dir = "C:/Users/AdmNB0225/AppData/Roaming/MetaQuotes/Terminal/Common/Files/"
a=0
old_rez = 0
rez = []
while True:

    try:
        with open(terminal_dir+'test.txt', 'r') as file:
            rez = [row.strip() for row in file]
    except IOError:
        pass

    if rez != old_rez and len(rez)!=0:
        print(rez)
        if rez[1] == "not_actual":
            rez[1] = "actual"
            date = rez[0]
            date = datetime.strptime(date, '%Y.%m.%d %H:%M')
            rez[2] = get_signal(date)


            try:
                with open(terminal_dir + 'test.txt', 'w') as file:
                    file.writelines(str(i)+'\n' for i in rez)
            except IOError:
                pass

    old_rez = rez
    # time.sleep(2)

Данная склейка не особо быстродейственна, но работает независимо. Работает в тестере, на демке, на реале не пробовал. Если есть, вопросы или идеи как можно улучшить, пишите, а то тема как то заглохла... 

 
welimorn:

Конечная версия функций общения советника mql5  c питон программой.

В советнике имеются 2 функции, одна обновляет время в файле вторая, читает в файле актуальный торговый сигнал который формируется в питон программе.

в питон программе при статусе "not_actual" производится чтение текущего времени, расчет актуального сигнала и запись его в файл.

Данная склейка не особо быстродейственна, но работает независимо. Работает в тестере, на демке, на реале не пробовал. Если есть, вопросы или идеи как можно улучшить, пишите, а то тема как то заглохла... 

я уперся в скорость ноутбука, когда перешел на более сложные модели типа рекуррентных. Не могу дальше ничего исследовать толкового

выбрал новый, с хорошей видюхой ) надо будет подарить себе на НГ

Причина обращения: