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

 
elibrarius:
Ну не переделать, а просто распечатать и сравнить с оригинальным - не нарушилось ли направление
...        ...      ...
3267  0.001091  1.18140
3268  0.000421  1.18077
3269  0.001455  1.18191
3270  0.001636  1.18225
3271  0.001829  1.18258

[3258 rows x 2 columns]
>>>
...        ...      ...
3225  0.001091  1.18140
3226  0.000421  1.18077
3227  0.001455  1.18191
3228  0.001636  1.18225
3229  0.001829  1.18258

[3230 rows x 2 columns]

все ок, последнее значение соответствует цене последнего бара в терминале

 

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

Сделал функцию, которая решает эту проблему, делюсь

//+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC(string symbol,ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize(arr_OHLC,4);
   arr_OHLC[0]=iOpen(symbol,TF,0);
   arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   if(TF!=PERIOD_M1)
   {
      double arr_High[];
      double arr_Low[];
      int copied=0;
      datetime s=iTime(symbol,TF,0);
      datetime f=iTime(symbol,PERIOD_M1,1);
      if(s<f)
      {
         copied=CopyHigh(symbol,PERIOD_M1,s,f,arr_High);
         if (copied>0)
         {
            arr_OHLC[1]=arr_High[ArrayMaximum(arr_High,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_High");
         }
         copied=CopyLow(symbol,PERIOD_M1,s,f,arr_Low);
         if (copied>0)
         {
            arr_OHLC[2]=arr_Low[ArrayMinimum(arr_Low,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_Low");
         }
      }
      else
      {
         if(s==f)//Если ТФ открылся на прошлом минутном баре
         {
            arr_OHLC[1]=iHigh(symbol,PERIOD_M1,1);
            arr_OHLC[2]=iLow(symbol,PERIOD_M1,1);
         }
         if(s>f)//Если ТФ открылся на текущем минутном баре
         {
            arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
            arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
         }
      }
   }
   else
   {
      arr_OHLC[0]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   }
}
 
Aleksey Vyazmikin:

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

Сделал функцию, которая решает эту проблему, делюсь

Это что, баг терминала что ли?
Я думал при первом тике например в 0:00 в понедельник появятся автоматически все бары вплоть до недельного.

Если баг - то отправьте заявку с описанием и кодом для воспроизведения в сервисдек. В следующем релизе исправят.

 
elibrarius:

Это что баг терминала что ли?
Я думал при первом тике например в 0:00 в понедельник появятся автоматически все бары вплоть до недельного.

Если баг - то отправьте заявку с описанием и кодом для воспроизведения в сервисдек. В следующем релизе исправят.

бар не откроется пока по инструменту не придёт тик. Тика может очень долго не быть ;-)

 
elibrarius:

Это что, баг терминала что ли?
Я думал при первом тике например в 0:00 в понедельник появятся автоматически все бары вплоть до недельного.

Если баг - то отправьте заявку с описанием и кодом для воспроизведения в сервисдек. В следующем релизе исправят.

Это фича, а не баг.

Ситуация может быть такая, пришел новый тик нового минутного бара, а мы используем индикатор, который с первого тика, зараза, не рассчитался и пропускаем тик, или просто вошли в расчет всяких предикторов, идет на это время и посреди кода запрашиваем OHLC текущего бара. OHLC меняется постоянно и это может быть критично в случае МО. Просто сам столкнулся с разным расчетом предикторов в зависимости от типа моделирования тиков, и по факту при применении модели на рынке.

 

по терминологии подскажите,

"предиктор" это просто один из элементов (одно из значенией) вектора который подается на обучение?
просто куча названией про одно и тоже.

 

Извините за наглость! 

Можете ещё прогнать через нейросети эти данные, если у вас есть свободное время конечно же.


EURUSD_options - в этом файле все возможные варианты которые могут быть во временном ряду.


EURUSD_data - сам временной ряд (последнее пришедшее значение находится в конце файла).

Здесь три колонки, первая - что нужно спрогнозировать, две остальных - варианты ответов. 

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

Файлы:
 
Evgeny Dyuka:

по терминологии подскажите,

"предиктор" это просто один из элементов (одно из значенией) вектора который подается на обучение?
просто куча названией про одно и тоже.

Да. Синонимы фича, вход, предиктор.
 
elibrarius:
Да. Синонимы фича, вход, предиктор.
спасибо, у меня это всегда "фичами" было, хотя слово кривоватое
 
Evgeny Dyuka:
спасибо, у меня это всегда "фичами" было, хотя слово кривоватое

даже противное....

самое правильное на мой взгляд это "признаки".  "Описание объекта по его признакам" .  Но синонимов наплодили кучу. и не самых лучших

elibrarius:
Да. Синонимы фича, вход, предиктор.
Причина обращения: