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

 

Для тех кто ещё участвовал в конкурсе numer.ai - 

Там когда-то ввели свою криптовалюту (NMR), и сначала немного раздали её активным участникам конкурса, и потом начали давать за победы вместе с долларами, проверьте может и вам их начисляли. Сейчас NMR уже можно выводить с конкурсного аккаунта, и через биржи переводить в обычные деньги.

Вот курс к доллару например https://www.cryptonator.com/rates/NMR-USD , совсем немало.
https://bittrex.com/Market/Index?MarketName=BTC-NMR

 
уже вроде где то тут спрашивал но уже забыл, как можно разные валютные пары с разными ценами привести к единой шкале, что бы можно было складывать , вычитать итп одни ВР с других, а то появилась 101-вая гениальная идея и нужно 101-вый раз понять что она не работает  )
 
mytarmailS:
уже вроде где то тут спрашивал но уже забыл, как можно разные валютные пары с разными ценами привести к единой шкале, что бы можно было складывать , вычитать итп одни ВР с других, а то появилась 101-вая гениальная идея и нужно 101-вый раз понять что она не работает  )

Нормировка или нормализация переменных

 
mytarmailS:
уже вроде где то тут спрашивал но уже забыл, как можно разные валютные пары с разными ценами привести к единой шкале, что бы можно было складывать , вычитать итп одни ВР с других, а то появилась 101-вая гениальная идея и нужно 101-вый раз понять что она не работает  )
множественная регрессия
 

Братцы!!! Всем привет.... Решил мигрировать на MQL5 помогите пожалуйста с кодом в некоторых моментах... А то в поддержке что то долго отвечают.... могут и не ответить...

Вообщем вот написал индюк, а он у меня не выводит значение переменной может кто подсказать??

Файлы:
ChekParam.mq5  11 kb
 

Помогите вспомнить как это делается ...

есть около 6-ти инструметов в листе li

head(li[[1]])
    ticker per     date   time  open  high   low close   vol
1 SPFB.RTS   5 20160104 100500 75390 76320 75250 76000 14319
2 SPFB.RTS   5 20160104 101000 76000 76030 75790 75900  4818
3 SPFB.RTS   5 20160104 101500 75920 76050 75850 75970  2947
4 SPFB.RTS   5 20160104 102000 75970 76120 75900 76080  2415
5 SPFB.RTS   5 20160104 102500 76080 76140 75870 75920  2347
6 SPFB.RTS   5 20160104 103000 75910 76010 75580 75640  3787
> head(li[[2]])
   ticker per     date   time  open  high   low close   vol
1 SPFB.BR   5 20160104 100500 36.67 38.20 36.67 37.63 40185
2 SPFB.BR   5 20160104 101000 37.63 37.64 37.58 37.61  5914
3 SPFB.BR   5 20160104 101500 37.62 37.63 37.56 37.61  5103
4 SPFB.BR   5 20160104 102000 37.62 37.77 37.62 37.73 13513
5 SPFB.BR   5 20160104 102500 37.74 37.78 37.59 37.60  5061
6 SPFB.BR   5 20160104 103000 37.60 37.66 37.48 37.53  6239
> head(li[[3]])
     ticker per     date   time  open  high   low close  vol
1 SPFB.GAZR   5 20160104 100500 13912 13943 13850 13936 4712
2 SPFB.GAZR   5 20160104 101000 13936 13943 13917 13937 1180
3 SPFB.GAZR   5 20160104 101500 13934 13937 13921 13926 1298
4 SPFB.GAZR   5 20160104 102000 13931 13938 13925 13934  294
5 SPFB.GAZR   5 20160104 102500 13935 13941 13927 13927  540
6 SPFB.GAZR   5 20160104 103000 13931 13934 13889 13896  704

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

 
Mihail Marchukajtes:

Братцы!!! Всем привет.... Решил мигрировать на MQL5 помогите пожалуйста с кодом в некоторых моментах... А то в поддержке что то долго отвечают.... могут и не ответить...

Вообщем вот написал индюк, а он у меня не выводит значение переменной может кто подсказать??


1. Не ясно, какое значение переменной, Вам надо выводить.

2. В коде не верно вызывается пользовательский индикатор - почитайте об особенностях iCustom в MT5 .

 
mytarmailS:

Помогите вспомнить как это делается ...

есть около 6-ти инструметов в листе li

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

Я таким образом делал - создал новую колонку где объединил дату и время, и потом искал совпадения таких значений в разных таблицах. 
liSynchronized <- li
#создание новой колонки по которой будут сравниваться значения разных таблиц
for(i in 1:length(liSynchronized)){
  liSynchronized[[i]]$datetime <- paste0(liSynchronized[[i]]$date, liSynchronized[[i]]$time)
}

while(TRUE){
  somethingChanged <- FALSE
  for(i in 1:length(liSynchronized)){
    syncIndexes <- rep(TRUE, nrow(liSynchronized[[i]]))
    for(j in (1:length(liSynchronized))[-i]){
      syncIndexes <- syncIndexes & (liSynchronized[[i]]$datetime %in% liSynchronized[[j]]$datetime)
    }
    if(!all(syncIndexes)){
      somethingChanged <- TRUE
    }
    liSynchronized[[i]] <- liSynchronized[[i]][syncIndexes, ]
  }
  if(!somethingChanged){
    break
  }
}

А ещё отброшенные бары вносят ошибки в ohlc значения, т.е. бар закрылся по одной цене, а потом из-за удалённого бара следующий в таблице откроется уже по другой цене, а High и low удалённого бара вообще потеряются. High, low и close удалённого бара стоит сравнить с предыдущим не удалённым баром и обновить там если нужно.
Я работал просто с open ценами, поэтому так сильно не заморачивался.

 
Aleksey Vyazmikin:

1. Не ясно, какое значение переменной, Вам надо выводить.

2. В коде не верно вызывается пользовательский индикатор - почитайте об особенностях iCustom в MT5 .


Кхе... кхе... и как ты думаешь мне эта инфа как то помогла???? если я уже читал справку и немного не допонял....

 
Mihail Marchukajtes:

Кхе... кхе... и как ты думаешь мне эта инфа как то помогла???? если я уже читал справку и немного не допонял....


Ну, а как можно помочь, если Вы не ответили - что за переменные Вам надо вызывать?

А для iCustom нужно создать хендель - т.е. привязать его к переменной.

Я делаю примерно так в советнике (в индикаторе принцип тот же в целом...)

//Хендали - мать их
int handle_iMomentum;

int OnInit()
  {
//Хендаль объявляем iMomentum
   handle_iMomentum=iMomentum(Symbol(),0,100,0);
   if(handle_iMomentum==INVALID_HANDLE)
     {
      PrintFormat("Failed to create handle of the iMomentum indicator for the symbol %s/%s, error code %d",
                  Symbol(),EnumToString(Period()),GetLastError());
      return(INIT_FAILED);
     }

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
double Momentum=Momentumf(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Momentumf(const int index)
  {
   double MA[1];
   ResetLastError();
   if(CopyBuffer(handle_iMomentum,0,index,1,MA)<0)
     {
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      return(0.0);
     }
   return(MA[0]);
  }

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