Вопрос про iBarshift MT5 - страница 4

 
Еще раз спасибо за Ваши ответы, некоторые были полезны, попробую обойти этот косяк разрабов
 
Artyom Trishkin #:

На выходных всегда 0 выдаёт у меня. Прям вот всегда.

И подскажи, как получишь номер нужного бара на текущем таймфрейме по времени с иного периода графика, и наоборот.

/********************Script program start function*******************/
void OnStart()
 {
  int bars = Bars(_Symbol, PERIOD_MN1, TimeCurrent(), D'2023.07.01');
  datetime time[];
  CopyTime(_Symbol, PERIOD_MN1, 0, bars, time);
  ArrayPrint(time);
 }/******************************************************************/

Результат

2023.10.05 22:52:37.844 !!0 (GBPUSD,H1) 2023.07.01 00:00:00 2023.08.01 00:00:00 2023.09.01 00:00:00 2023.10.01 00:00:00

Из массива time[] бери нужный месяц без проблем. Обрати внимание, что D'2023.07.01' суббота¡¡¡


 
Artem Sulejmanov #:

Вопрос риторический а зачем тогда нужна функция iBarshift которая работает как ей вздумается. 

Изначально функций i*** в MQL5 не было. Послушав кодеров которые никак не могут оторваться от MQL4 решили вставить и их.

Для меня изначально проблемы отсутствовали, но несмотря ни на что, я не говорил, что совсем ими не пользуюсь, но и с удовольствием обхожусь без них…

 

Неумение пользоваться не говорит о том, что это баг.

/********************Script program start function*******************/
void OnStart()
 {
  int bars = iBarShift(_Symbol, PERIOD_MN1, D'2023.07.01');
  //Bars(_Symbol, PERIOD_MN1, TimeCurrent(), D'2023.07.01');
  datetime time[];
  CopyTime(_Symbol, PERIOD_MN1, 0, bars, time);
  ArrayPrint(time);
  DebugBreak();
 }/******************************************************************/

Поскольку iBarShift возвращает номер бара начиная с нуля, то надо было добавить 1 в функцию CopyTime

Результат

2023.10.05 23:15:04.546 !!0 (GBPUSD,H1) 2023.08.01 00:00:00 2023.09.01 00:00:00 2023.10.01 00:00:00

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

И вот запустил на минутке.

2023.10.05 23:22:10.310 !!0 (EURUSD,M1) 2023.08.01 00:00:00 2023.09.01 00:00:00 2023.10.01 00:00:00
 
Alexey Viktorov #:

Неумение пользоваться не говорит о том, что это баг.

Поскольку iBarShift возвращает номер бара начиная с нуля, то надо было добавить 1 в функцию CopyTime

Результат

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

И вот запустил на минутке.

Как Вы видите в примере который я показал время определятся нормально а вот бар по этому времени и предыдущий не находит, причем сделал отдельно тест там все норм и по времени и по барам

 
Artem Sulejmanov #:

Как Вы видите в примере который я показал время определятся нормально а вот бар по этому времени и предыдущий не находит, причем сделал отдельно тест там все норм и по времени и по барам

И еще на свежей истории все работает нормально

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