Синхронизация истории с сервером - страница 4

 
pavlick_:
Ницше нервно курит в сторонке.

Ну Вы как думающий программист не предложите ли свой вариант, который позволит узнать дату первой свечи в истории на сервере?
Для этого, как минимум, надо подключиться к интернету.
 
Dmitry Fedoseev:
Для этого, как минимум, надо подключиться к интернету.
Ну это я как бы и без вас знал. Подключение может быть, а через секунуду не быть, а вы именно в этот момент запросили дату по новому символу.
 
pavlick_:
Ну это я как бы и без вас знал. Подключение может быть, а через секунуду не быть, а вы именно в этот момент запросили дату по новому символу.
Тогда читайте Ницше
 

Ёлки, оказывается Copy...() функции в mt4 не вызывают подкачку истории как в mt5. Господа, кто-нибудь может сослаться на пример кода, который подкачивает историю по символу (для mt4)? SendMessage()'ами, типа: открыть окно символа и нажимать на Home.


ЗЫ: в кодобазе нашёл примеры, буду ковырять.

 
pavlick_:

Ёлки, оказывается Copy...() функции в mt4 не вызывают подкачку истории как в mt5. Господа, кто-нибудь может сослаться на пример кода, который подкачивает историю по символу (для mt4)? SendMessage()'ами, типа: открыть окно символа и нажимать на Home.


ЗЫ: в кодобазе нашёл примеры, буду ковырять.

ArrayCopySeries(), после нее проверять ошибку 4066
 
Dmitry Fedoseev:
ArrayCopySeries(), после нее проверять ошибку 4066


Спасибо, попробую.

 

Повертел я ArrayCopySeries(), выдаёт массив с такой же дырявой историей и не считает это ошибкой.

void OnStart()
{ 
  string symbol = "EURUSD";
 
  datetime daytimes[];
  int res = ArrayCopySeries(daytimes, MODE_TIME, symbol, PERIOD_M1);
  Alert(res);
  if(res != -1)
  {
    Alert( "ser_first = ", (datetime)SeriesInfoInteger(symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE) );
    Alert( daytimes[res - 1], "   ", daytimes[0] );
    Alert( "error = ", GetLastError() );
  }
}


Два вызова подряд на подгружаемой в данный момент истории:

error = 0

2016.06.27 07:21:00   2016.08.29 21:02:00

ser_first = 2016.06.24 00:16:00

28459


error = 0

2016.06.27 07:21:00   2016.08.29 21:02:00

ser_first = 2016.06.24 00:16:00

16683

 

Ну не знаю... может еще Кафку почитать стоит. Ну или может традиционно - букварь, а то ведь написано явно, но не воспринимается почему-то.

 

Не понял, прямо сказать можете? Строку Alert( "error = ", GetLastError() ) не заметили?

ЗЫ: въехал, сейчас перепишу

 

Увы, не работает:

void OnStart() { 
  string symbol = "EURUSD";
 
  datetime daytimes[];
  int res = ArrayCopySeries(daytimes, MODE_TIME, symbol, PERIOD_M1);
  if(res != -1  &&  GetLastError() != 4066) {
    Alert(res);
    Alert( daytimes[res - 1], "   ", daytimes[0] );
    Alert("----------------");

  }
}

 

2016.06.27 07:21:00   2016.08.29 22:38:00

6443

----------------

2016.06.27 07:21:00   2016.08.29 22:38:00

1323