Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 616

 
Никак не пойму, как мне, сегодня в любое время(в тестере конечно), корректно, узнать номера баров вчерашнего дня с 00:00 по 23:59. Подскажите плз.
 
001:
Никак не пойму, как мне, сегодня в любое время(в тестере конечно), корректно, узнать номера баров вчерашнего дня с 00:00 по 23:59. Подскажите плз.

 iBarShift еще не смотрели?
 
pu6ka:

 iBarShift еще не смотрели?

Нет, тут более извращенческий вопрос, это тут не поможет. 

 
001:
Никак не пойму, как мне, сегодня в любое время(в тестере конечно), корректно, узнать номера баров вчерашнего дня с 00:00 по 23:59. Подскажите плз.
                 //+------------------------------------------------------------------+
                 //|                                                       Отскок.mq4 |
                 //|                                              FOReignEXchange2008 |
                 //|                                          forexsignal2008.ucoz.ru |
                 //+------------------------------------------------------------------+
                   #property copyright "FOReignEXchange2008"
                   #property link      "FOReignEXchange@bk.ru"

int День,i,k;

int start()
{

i=0;k=0;

День=TimeDay(iTime(NULL,0,0));

while (i<=1440)
      {
      if (TimeDay(iTime(NULL,0,i))==(День-1) && k==0) 
         {
         k=i;
         Alert("",k);
         }
      i++;
      }
return;
}

//+------------------------------------------------------------------+

Вот так примерно вычисляется номер последнего бара предыдущего дня в тестере. Остальное можете сами додумать и доделать.

 
FOReignEXchange:

Вот так примерно вычисляется номер последнего бара предыдущего дня в тестере. Остальное можете сами додумать и доделать.


Спасибо! Завтра попробую. Сегодня голова не соображает. На самом деле не совсем правильно задал вопрос. Нужно, сегодня, знать номера первого и последнего бара вчерашнего дня. Все не обязательно.
 
001:

Спасибо! Завтра попробую. Сегодня голова не соображает. На самом деле не совсем правильно задал вопрос. Нужно, сегодня, знать номера первого и последнего бара вчерашнего дня. Все не обязательно.

Тестер TimeCurrent хорошо воспринимает. Поэтому можно ещё и что-то с подобным вариантом замутить (попробуйте создать скрипт с нижеприведённым кодом и гляньте на результат):

   datetime LastServerTime=TimeCurrent();
   long tms=LastServerTime%86400;
   int NumberFirstBar=iBarShift(NULL,0,LastServerTime,false);
   datetime TimeNumberFirstBar=iTime(NULL,0,NumberFirstBar);   
   datetime TimeLastBar=TimeNumberFirstBar-(datetime)tms;
   
   int NumberLastBar=iBarShift(NULL,0,TimeLastBar,false);
   
   Comment("NumberLastBar = ",NumberLastBar);

А вообще, вот тут очень хорошая статья. Несмотря на то, что она для МТ5, однако там и к применению в МТ4 полезная инфа.

 
001:
Никак не пойму, как мне, сегодня в любое время(в тестере конечно), корректно, узнать номера баров вчерашнего дня с 00:00 по 23:59. Подскажите плз.


Вот так можно найти индекс первого бара в начале любого дня. 

     int n = 1;                                           // индекс дня, в данном случае 1 - вчерашний день
datetime DayTime = iTime(NULL, PERIOD_D1, n);             // Начало дня "n" в секундах
     int cb = iBarShift(NULL,0,DayTime);                  // Получим на текущем ТФ индекс 1-го бара


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

 
pu6ka:


Вот так можно найти индекс первого бара в начале любого дня. 

 
Зная такой индекс можно нехитрым прибавлением единицы узнать индекс последнего бара в предыдущем дне.


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

P./S.: Поэтому FOReignEXchange и я привели иные варианты.

 
Всем спасибо! Будем работать.
 
DiPach:

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

P./S.: Поэтому FOReignEXchange и я привели иные варианты.


 Возможно. Я для индикатора такой код использовал, там он меня не подводил. Пусть пробует разные варианты.

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