Нужна помощь с iBarShift.

 

Исправлено: нет проблем с iBarShift.

iBarShift
iBarShift
  • www.mql5.com
Многие ищут функцию iBarShift, которая была в языке MQL4. В языке MQL5 ее нет, но есть все возможности для ее реализации в виде библиотеки.
 

Попробуйте вместо  PERIOD_CURRENT поставить Period() 

А по сути можно воспользоваться функцией Bars()

 
Lilita Bogachkova #:

Если не сложно, попробуйте выбрать тот же таймфрейм, который указан в индикаторе: PERIOD_H2 и ATR custom timeframe = TRUE. 

А зачем это мне? Вы обратите внимание на дату размещения той библиотеки… Это ведь ДЕВЯТЬ лет. Зачем мне разбираться с таким старьём…

 
Lilita Bogachkova:

В качестве примера есть индикатор, использующий стандартный iBarShift и решение отсюда: https://www.mql5.com/ru/code/1864
Проблема в том, что стандартное решение "iBarShift" не работает, а пользовательское "iBarShift_" решение не работает при выборе PERIOD_CURRENT.
Нужна помощь.

Научитесь пользоваться дебагом чтобы найти у себя ошибку. iBarShift полностью рабочая. 
Раньше она была медленной но сейчас уже починили.
 
Lilita Bogachkova #:
Для того, чтобы привлечь внимание разработчиков к "iBarShift", я добавила образец вышеупомянутого индикатора со стандартным решением и решением, предложенным Николаем Семко.
Стандартное решение "iBarShift" не работало по сравнению с решением Николая Семко. В этом легко убедиться, переключившись между двумя решениями.


Но, ведь, Николай Семко пишет, что iBarShift полностью рабочая.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Нужна помощь с iBarShift.

Nikolai Semko, 2022.12.21 11:13

Научитесь пользоваться дебагом чтобы найти у себя ошибку. iBarShift полностью рабочая. 
Раньше она была медленной но сейчас уже починили.

 
Не, лучше, пусть разработчики MT пробуют и отвечают про рабочесть/нерабочесть их детища. А то они предпочитают отмалчиваться, а какие-то форумяне должны что-то выяснять методом тыка. Неправильно это.
 
Lilita Bogachkova #:

Я могу только порекомендовать вам попробовать тестовый пример и убедиться в этом самостоятельно. Возможно есть разница в версии МТ5.  В моем случае релиз 3552.

Релиз 3550 
Поведение одинаковое. Не обнаружил разницы. Вы хоть бы написали, что не так.
Только уберите else Comment("")
Это источник неимоверных тормозов.
Особенно заметно на M1 при unlimited bars ( безнадежно виснет)
Для этого советую ещё освоить профилирование.
 
Lilita Bogachkova #:

Это всего лишь пример для тестирования iBarShift, этот код ( Только уберите else Comment("") ... ) не имеет ничего общего с реальным индикатором.

( Вы хоть бы написали, что не так.) Поведение тестового кода https://failiem.lv/u/ye556xav2

Если без этой строчки произоводительность индикатора увеличивается более чем в 100 раз - имеет или не имеет?

Просто на MQ счете (где на unlimited bar M1 > 8000000) засеките время расчета с Comment("") и без него. Тогда увидите разницу.

 
Lilita Bogachkova #:

Это было специально написано для того, чтобы строка комментария мелькала и привлекала внимание тестировщика. 

Очень странный способ привлечения внимания - замедлить выполнения индикатора на несколько порядков.

 

На самом деле проблема существует. Пока не могу понять источник.
Проблема в том, что в данном индикаторе, если использовать штатный iBarShift, то prev_calculated постоянно обнуляется, хотя это должно происходить только при первом запуске. 
Если использовать мой старый вариант fBarShift, то обнуления  prev_calculated не происходит.
Пока не могу понять, почему так происходит. Возможно Лилита права и что-то реально поломалось. 
Тем более я уже не однократно замечал какие-то странные мигания (перерисовывания) индикаторов в последнее время. Думаю, реально что-то поломали, но вряд ли проблема с  iBarShift. Проблема сидит где-то в другом месте MT5.



 

Файлы:
ATRCustom.mq5  20 kb
 
Nikolai Semko #:

На самом деле проблема существует. Пока не могу понять источник.
Проблема в том, что в данном индикаторе, если использовать штатный iBarShift, то prev_calculated постоянно обнуляется, хотя это должно происходить только при первом запуске. 
Если использовать мой старый вариант fBarShift, то обнуления  prev_calculated не происходит.
Пока не могу понять, почему так происходит. Возможно Лилита права и что-то реально поломалось. 
Тем более я уже не однократно замечал какие-то странные мигания (перерисовывания) индикаторов в последнее время. Думаю, реально что-то поломали, но вряд ли проблема с  iBarShift. Проблема сидит где-то в другом месте MT5.

немного поспешил с выводами.

Lilita Bogachkova #:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления

Nikolai Semko, 2022.12.21 20:01

но все равно проблема существует. 
Почему в данном индикаторе стандартный iBarShift(NULL,_Period,time[rates_total-1]) возвращает -1, тогда как моя функция  fBarShift возвращает 0, как и должно быть?
В другом индикаторе пока не могу это воспроизвести.

2022.12.21 14:08:21.545 ATRCustom (USDCHF,H1)   PERIOD_H2 / BarShift: -1
2022.12.21 14:08:21.545 ATRCustom (USDCHF,H1)   iBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = -1
2022.12.21 14:08:21.545 ATRCustom (USDCHF,H1)   fBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = 0
2022.12.21 14:08:24.049 ATRCustom (USDCHF,H1)   PERIOD_H2 / BarShift: -1
2022.12.21 14:08:24.049 ATRCustom (USDCHF,H1)   iBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = -1
2022.12.21 14:08:24.049 ATRCustom (USDCHF,H1)   fBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = 0
2022.12.21 14:08:24.157 ATRCustom (USDCHF,H1)   PERIOD_H2 / BarShift: -1
2022.12.21 14:08:24.157 ATRCustom (USDCHF,H1)   iBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = -1
2022.12.21 14:08:24.157 ATRCustom (USDCHF,H1)   fBarShift(_Symbol,CustomPeriodTimeframe,time[rates_total-1]) = 0

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