Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Thank you, I have to fix my code also when exact is true, as I misunderstood this parameter. English documentation for iBarShift is wrong.
I think this is my error too, iBarShift should return bar which contain specified time (not with exact open time).
Could I use your function in my library (with your copyrights, of course)? If it is faster and correct, why should I reinvent the wheel?)
I think this is my error too, iBarShift should return bar which contain specified time (not with exact open time).
Could I use your function in my library (with your copyrights, of course)? If it is faster and correct, why should I reinvent the wheel?)
Thank you, I have to fix my code also when exact is true, as I misunderstood this parameter. English documentation for iBarShift is wrong.
The mql5 bug is on Bars() function, I reported it to Service Desk.
В Build 880 исправлена ошибка в Bars(), и теперь все работает нормально.
косяковая версия. на м2 с м1 значения при тру, почему-то имеют значения не -1, а на нулевом баре идет возврат на 1-й бар.
Функция кривая как минимум в двух местах:
1) if(time>LastBar)
return(0);
Если exact=true, логика должна возвращать -1 в случае явной не принадлежности time последнему бару, т.е. если time>LastBar+PeriodSeconds(timeframe).
2) if(CopyTime(symbol,timeframe,time,1,checkcandle)==1)
...
return(-1);
Опять же, если exact=false, то должен быть возвращен ближайший бар, в этом случае Bars(symbol, timeframe)-1.
Я думаю, что в вашем коде есть небольшая ошибка:
Если последний тик "открывает" новый бар, то if(time>LastBar) становится ложным - потому что теперь time == LastBar
И позже мы попадаем сюда:
И теперь shift == 0, что возвращает -1 вместо 0!
Поэтому я думаю, что это:
должно быть изменено на
Calli
Я думаю, что в вашем коде есть небольшая ошибка:
Если последний тик "открывает" новый бар, то if(time>LastBar) становится ложным - потому что теперь time == LastBar
И позже мы приземляемся здесь:
А теперь shift == 0 , что возвращает -1 вместо 0!
Поэтому я думаю, что это:
должно быть изменено на
Calli
Ваше исправление тоже будет работать, но случай 'time==LastBar' обрабатывается как "нормальный" случай.
Утверждение
if(time>LastBar)было добавлено в качестве исправления ошибки, если время больше, чем время 0 текущего бара.