Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот допустим имеем
При этом знаем, что start_time должно быть 2018.04.28 23:00
Получается, что тут время не верное ?
Алексей, посмотрите мой пример. Я там построчно показал, как часовое время, которое Вы передаете, превращается в ближайшее время с текущего бара.
Не нашел объявления типа переменной limit. Зрение слабое
Пост 50, процедура OnCalculate
Пост 50, процедура OnCalculate
Спасибо, но кто из них 50? Может, ссылкой подсобите?
Спасибо, но кто из них 50? Может, ссылкой подсобите?
https://www.mql5.com/ru/forum/262864/page5
Ссылка только на страницу. Там написано #50 в заголовке поста. Ваш #74 ))
У вас сначала написано limit=start_index-stop_index+1, то есть limit==1, а потом, где деление на 2 - limit=(int)(stop_time-start_time)/PeriodSeconds(_Period). Единица не прибавлена. Ноль делится на период.
Правильно, limit=start_index-stop_index+1 это при i>0 т.е. для расчета на истории, а limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) расчет на текущем баре.
Да и дело то по сути в том, почему у нас время такое кривое - если у нас тайм фрейм час, то даты должны быть круглыми, как в начале так и в конце - в этом истинная проблема, что время бара на начальную дату каким то образом попадает не верное!!!
Возможно тут проблема
Так как start_time приходит корректно в этот момент
datetime start_time=rates[i].time;
Алексей, нет никакого "в конце". Это просто квантование. Ровно в 18:00 бар открылся, показал минимум и максимум и благополучно закрылся, в ту же секунду.
Смотрите, бар у нас открылся в 18:00, значит начальное время (start_time) будет 18:00, а конечное (stop_time) предполагаемое время окончания бара для ТФ час - 19:00. Таким образом и индекс между ними будет разный на таймфрейме M1. А в коде бывает, что начальный и конечный индекс совпадает, что не верно.
Правильно, limit=start_index-stop_index+1 это при i>0 т.е. для расчета на истории, а limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) расчет на текущем баре.
Да и дело то по сути в том, почему у нас время такое кривое - если у нас тайм фрейм час, то даты должны быть круглыми, как в начале так и в конце - в этом истинная проблема, что время бара на начальную дату каким то образом попадает не верное!!!
Возможно тут проблема
Так как start_time приходит корректно в этот момент
И с какого они у Вас будут круглыми, если Вы сначала делаете CopyRates с часового таймфрейма (получаются круглые цифры), потом передаете в процедуру CreateFigure время с текущего таймфрейма (time, которое превращается в Time) и Rates с часовика, а потом ищете индекс уже по массиву времени текущего таймфрейма? start_index=ArrayBsearch(Time,start_time);