Скачать MetaTrader 5

проблема с iBarShift

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladislav Andruschenko
98036
Vladislav Andruschenko  

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

 

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

 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  

 

 

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

Vladislav Andruschenko
98036
Vladislav Andruschenko  

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

Vladislav Andruschenko
98036
Vladislav Andruschenko  

 

 

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

 

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

Vladislav Andruschenko
98036
Vladislav Andruschenko  

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

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

Victor Nikolaev
Модератор
14977
Victor Nikolaev  
Похоже речь идет про тестер?
Vladislav Andruschenko
98036
Vladislav Andruschenko  

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

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

Victor Nikolaev
Модератор
14977
Victor Nikolaev  
Vladon:

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

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


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

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


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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий