Скачать MetaTrader 5

как найти время бара через N от текущего

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не понимаешь, как работает сервис Торговых Сигналов? Прочти соответствующую статью!
Maxim Kuznetsov
9619
Maxim Kuznetsov 2016.07.09 09:16 
может у кого завалялась функция которая позволяет вычислить время открытия бара который будет через например 20 баров ? С учётом грядущих выходных и праздников
Vitalii Ananev
8115
Vitalii Ananev 2016.07.09 10:37  
Maxim Kuznetsov:
может у кого завалялась функция которая позволяет вычислить время открытия бара который будет через например 20 баров ? С учётом грядущих выходных и праздников

Берете время открытия текущего бара на ТФ D1 например, это будет 08.07.2016 прибавляете к нему  24 (кол-во часов в дневном баре [сутках] ) и умножаете на 3600 (кол-во секунд в часе) и умножаете на кол-во дней (баров) в вашем случае это будет 20. В результате получите время открытия дневного бара через 20 дней.

Для других ТФ меньше D1 надо соответственно изменить множитель 24 на число часов в одном баре. Для ТФ меньше часа надо все пересчитывать в минутах. 

Maxim Kuznetsov
9619
Maxim Kuznetsov 2016.07.09 11:08  
Vitalii Ananev:

Берете время открытия текущего бара на ТФ D1 например, это будет 08.07.2016 прибавляете к нему  24 (кол-во часов в дневном баре [сутках] ) и умножаете на 3600 (кол-во секунд в часе) и умножаете на кол-во дней (баров) в вашем случае это будет 20. В результате получите время открытия дневного бара через 20 дней.

Для других ТФ меньше D1 надо соответственно изменить множитель 24 на число часов в одном баре. Для ТФ меньше часа надо все пересчитывать в минутах. 

это только если формируются бары выходных и праздничных дней, но как правило их НЕТ..

и для сведения есть PeriodSeconds() чтобы не делать ненужные перемножения

Alexander Bereznyak
21466
Alexander Bereznyak 2016.07.09 12:23  
Vitalii Ananev:

Берете время открытия текущего бара на ТФ D1 например, это будет 08.07.2016 прибавляете к нему  24 (кол-во часов в дневном баре [сутках] ) и умножаете на 3600 (кол-во секунд в часе) и умножаете на кол-во дней (баров) в вашем случае это будет 20. В результате получите время открытия дневного бара через 20 дней.

Для других ТФ меньше D1 надо соответственно изменить множитель 24 на число часов в одном баре. Для ТФ меньше часа надо все пересчитывать в минутах. 

не учли субботу и воскресенье
Alexander Bereznyak
21466
Alexander Bereznyak 2016.07.09 12:25  
Maxim Kuznetsov:
может у кого завалялась функция которая позволяет вычислить время открытия бара который будет через например 20 баров ? С учётом грядущих выходных и праздников
готовые функции Time, iTime, CopyTime
Dmitry Fedoseev
42883
Dmitry Fedoseev 2016.07.09 12:55  
Нужно знать во сколько пятница заканчивается и когда неделя начинается, тогда модно будет рассчитать. 
Maxim Kuznetsov
9619
Maxim Kuznetsov 2016.07.09 16:37  
Maxim Kuznetsov:
может у кого завалялась функция которая позволяет вычислить время открытия бара который будет через например 20 баров ? С учётом грядущих выходных и праздников

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

class isHasBarFunctor {
   public:
   bool yes(datetime time) {
      int dt;
      dt=TimeDayOfWeek(time);
      if (dt==6 || dt==0){
         // в субботу и воскресенье баров нет
         return false;
      }
      // ToDo: новый год и американские праздники
      // иначе бары есть
      return true;
   }
};
datetime BarOpenTime(int bar,isHasBarFunctor &isHasBar) {
   int b;
   datetime time;
   int ps;
   if (bar>=0) {
      return Time[bar];
   }
   time=Time[0];
   ps=PeriodSeconds();
   for(b=1;b<INT_MAX;b++) {
      time+=ps;
      if (isHasBar.yes(time)) {
         bar++;
         if (bar==0) {
            return time;
         }
      }
   }
   return (datetime)0;
}
Dmitry Fedoseev
42883
Dmitry Fedoseev 2016.07.10 00:51  
Maxim Kuznetsov:

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

Ну если уж принять (как допущено в этой функции), что неделя начинается точно с самого начала понедельника, и заканчивается точно в конце пятницы, то можно рассчитать, а не елозить в цикле.

Alexander Bereznyak
21466
Alexander Bereznyak 2016.07.10 09:26  
есть брокеры, которые рисуют дополнительный бар на выходных
Maxim Kuznetsov
9619
Maxim Kuznetsov 2016.07.10 09:44  
Alexander Bereznyak:
есть брокеры, которые рисуют дополнительный бар на выходных

и есть рынки которые работают не круглосуточно.. :-(

видимо чтобы сделать корректную функцию без некой сущности "расписание торгов" не обойтись, а штатной такой нету

Ihor Herasko
9033
Ihor Herasko 2016.07.10 10:49  
Maxim Kuznetsov:

и есть рынки которые работают не круглосуточно.. :-(

видимо чтобы сделать корректную функцию без некой сущности "расписание торгов" не обойтись, а штатной такой нету

И даже после этого 100%-й расчет не будет возможен, т. к. будущее неизвестно, случиться может все, что угодно.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий