проблема с iBarShift

 

Не могу понять где ошибка.

 

Есть параметры:

 extern string TimeStart= "0:00"; //ВРЕМЯ НАЧАЛА ФОРМИРОВАНИЯ ВЧЕРВШНЕГО ФЛЕТА

extern string TimeEnd = "23:00"; //ВРЕМЯ ОКОНЧАНИЯ  ФОРМИРОВАНИЯ ВЧЕРВШНЕГО ФЛЕТА


 есть код:

//+------------------------------------------------------------------+
//Вычисляем номера баров для расчета Мин Макс
//+------------------------------------------------------------------+
   int MinBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeStart)-24*60*60);
   int MAxBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-24*60*60);


   if(iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-24*60*60,TRUE)==-1)
   {
   
   if(iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-2*24*60*60,TRUE)!=-1){MAxBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-2*24*60*60);}else
   if(iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-3*24*60*60,TRUE)!=-1){MAxBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-3*24*60*60);}else
   if(iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-4*24*60*60,TRUE)!=-1){MAxBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-4*24*60*60);}else
   if(iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-5*24*60*60,TRUE)!=-1){MAxBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeEnd)-5*24*60*60);}
   }
   MinBar=iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar),TIME_DATE)+" "+TimeStart),true);
   
//+------------------------------------------------------------------+
// Вычисляем цены Мин Макс вчерашнего дня 
//+------------------------------------------------------------------+
   double PriceMin=iLow(Symbol(),PERIOD_M1,iLowest(Symbol(),PERIOD_M1,MODE_LOW,MinBar-MAxBar,MAxBar));
   double PriceMax=iHigh(Symbol(),PERIOD_M1,iHighest(Symbol(),PERIOD_M1,MODE_HIGH,MinBar-MAxBar,MAxBar));

//+------------------------------------------------------------------+
// Отображаем на графике для  удобства линии коридора вчерашнего дня
//+------------------------------------------------------------------+
   Comment(TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar),TIME_DATE)+"\n\n\n\n"+"MinBar="+MinBar+"\ntime="+TimeToStr(iTime(Symbol(),PERIOD_M1,MinBar))+"\nMAxBar="+MAxBar
   +"\ntime="+TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar))+"\nPriceMin="+PriceMin+"\nPriceMax="+PriceMax+"\nktral="+((PriceMax-PriceMin)*KTrall)/Point);

 но почему то бар находит именно в баршифт не тот что нужно, остальыне дни нормально идет, а вот переход с месяца - глючит

 

на графике: 

 

т.е. TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar),TIME_DATE) - показывает то что мне нужно.

а вот  iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar),TIME_DATE)+" "+TimeStart),true)

показывает что бара нет. если убрать (true ) 

iBarShift(Symbol(),PERIOD_M1,StrToTime(TimeToStr(iTime(Symbol(),PERIOD_M1,MAxBar),TIME_DATE)+" "+TimeStart),false) 

показывает вообще бар 7.20  

 

 

думал этого бара просто нет в истории и он вернул ближайший, но нет, до ближайшего там далеко, история есть с ней все нормально.  

 

хм........... а если поставить дату на неделю раньше то нужная дата нормально рисуется, где подвох? 

 

 

 

30 апреля нормально отображает,

 

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

 

получается если открыть график визуализации то макс баров котоыре видны в окне = 1000  потом они начинают формироваться, 

но тогда как увеличить число 1000?  

 
Похоже речь идет про тестер?
 

ну да. на реале такого не будет :-) уверен на 100 %, 

и ведь это не первый и даже не 5 эксперт по такому принципу, и я каждый раз сталкиваюсь с этой проблемой, потом как - то пытаюсь ее обойти, и только потом вспоминаю что с ней не так.  Наверно просто память такая..........

 
Vladon:

ну да. на реале такого не будет :-) уверен на 100 %, 

и ведь это не первый и даже не 5 эксперт по такому принципу, и я каждый раз сталкиваюсь с этой проблемой, потом как - то пытаюсь ее обойти, и только потом вспоминаю что с ней не так.  Наверно просто память такая..........


Пора уж выучить что в тестере при первоначальном запуске доступна только 1000 баров
 
Vinin:

Пора уж выучить что в тестере при первоначальном запуске доступна только 1000 баров


Согласен с Вами. но последняя  время память шалит.Спасибо. Все равное через 100-300 заказов вперед я забуду что для тестера 1000 баров при старте норма..................

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