Ошибка в моём коде на MQL4 - страница 5

 
Barbarian:

А судя по выводу моей функции, дыр нет только в последних сутках

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

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

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

---
сегодня у тебя например должно все работать уже на двух последних сутках - вторник и понедельник.
 
sergeev:

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

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

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

---
сегодня у тебя например должно все работать уже на двух последних сутках - вторник и понедельник.
Так и есть, я ведь вывод сделал сегодня. Т.е. для определения часового бара из низшего ТФ необходимо делать коррекцию на выходные, плюс праздники на биржах, правильно? А как такой фильтр можно соорудить? Я имею в виду праздники на биржах, т.к. с выходными суббота-воскресенье можно по времени рассчитать.
 
Barbarian:
Так и есть, я ведь вывод сделал сегодня. Т.е. для определения часового бара из низшего ТФ необходимо делать коррекцию на выходные, плюс праздники на биржах, правильно? А как такой фильтр можно соорудить? Я имею в виду праздники на биржах, т.к. с выходными суббота-воскресенье можно по времени рассчитать.

Если только новости анализировать. Тяжело отследить. У меня, например, вчера был праздник, но биржи почему-то работали))))
 
Barbarian:
Так и есть, я ведь вывод сделал сегодня. Т.е. для определения часового бара из низшего ТФ необходимо делать коррекцию на выходные, плюс праздники на биржах, правильно? А как такой фильтр можно соорудить? Я имею в виду праздники на биржах, т.к. с выходными суббота-воскресенье можно по времени рассчитать.

int DayOfWeek()
Возвращает порядковый номер дня недели (воскресенье-0,1,2,3,4,5,6) последнего известного времени сервера.

datetime TimeLocal()
Возвращает локальное компьютерное время в виде количества секунд, прошедших после 00:00 1 января 1970 года.


datetime TimeCurrent()
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.

если биржа не работает часы стоят

TimeCurrent() != TimeLocal() +/- GMTOffset если конечно коннект есть

или запоминаете TimeCurrent(), потом проверяете
if изменилось биржа работает
else ну праздник наверно


или новый бар не пришел по времени, ну все значит
bool NewBar()
{
  static datetime newbar;
  bool res=false;
  if(newbar==0)newbar=Time[0];
  if(newbar!=Time[0])
   {
     res=true;
     newbar=Time[0];
   }
 return(res);
}



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