Проще будет без условия написать return 0; и все дела…
На каждом новом баре условие будет выполнено и независимо от синхронизации будет пересчёт всех баров. Вы написали необдуманный код и выдаёте это за баг терминала…
если не ошибаюсь, то в справке есть разбор скрипта для подкачки данных по всем ТФ и должно быть предупреждение, что нельзя так запрашивать исторические данные из индикатора по причине того, что индикатор работает асинхронно
да и BarsCalculated() рекомендуют использовать один раз после связывания хэндла
Вы хотите из индикатора синхронизировать "старший ТФ" перед вызовом другого индикатора
мой же индикатор работает? - можно в него добавить и BarsCalculated() - но как в примерах индикаторов из поставки, например MACD.mql5
ЗЫ: в КБ много мультитаймфремовых индикаторов, если мне нужно вспомнить, что и как делать, то обычно ищу поиском индикаторы от Mladen Rakic и смотрю у него, стиль написания кода своеобразный (вернее форматирование), но точно работоспособные на все 100
я делаю проверку синхронизированости данных на запрашиваемом старшем ТФ (М5) и готовность индикатора на нём, если не готово, то выход.
в итоге индикатор работает только 1 раз на открытии бара М1, а не на каждом тике:
//проверка готовности данных и индикатора на другом TFif (SeriesInfoInteger (Symbol (), tf, SERIES_SYNCHRONIZED))
{
if (iBars (Symbol (), tf) != BarsCalculated (handleFr)) return0;
}
elsereturn0;
//проверка на наличие нового бараif (rates_total == prev_calculated) return rates_total;
неужели использовать свой кастомный прев кальк придётся? надеюсь, разработчики внемлют моим мольбам.
Не совсем понял ваш код. Что должно происходить после "return 0;" на следующем вызове OnCalculate?
А зачем такая проверка
Проще будет без условия написать return 0; и все дела…
На каждом новом баре условие будет выполнено и независимо от синхронизации будет пересчёт всех баров. Вы написали необдуманный код и выдаёте это за баг терминала…
подумайте ещё раз.
union с единственным полем - странная штука.
Это тоже самое, что и struct - только нагляднее видно ошибку. Об этом даже в документации написано: "В остальном union ведёт себя как структура"
Связка union\char\char тоже странная, и тоже для наглядности, но можно и так переписать:
чтобы тоже кому то странным не показалосьподумайте ещё раз.
Думать надо вам Андрей. Это в вашем коде тараканы.
Ну, я сегодня так настроен… попробую подтолкнуть в нужном направлении:
Открылся новый бар… iBars() увеличилось на единицу…… Но количество посчитанных баров не изменилось. И не изменится пока не пересчитает этот новый бар…
Дальше что¿¿¿
это не должно корректно работать в индикаторах:
если не ошибаюсь, то в справке есть разбор скрипта для подкачки данных по всем ТФ и должно быть предупреждение, что нельзя так запрашивать исторические данные из индикатора по причине того, что индикатор работает асинхронно
да и BarsCalculated() рекомендуют использовать один раз после связывания хэндла
UPD: скрипт для подкачки истории и объяснение, почему это не работает в индикаторах: https://www.mql5.com/ru/docs/series/timeseries_access
вы уверены, что поняли смысл кода?
Думать надо вам Андрей. Это в вашем коде тараканы.
Ну, я сегодня так настроен… попробую подтолкнуть в нужном направлении:
Открылся новый бар… iBars() увеличилось на единицу…… Но количество посчитанных баров не изменилось. И не изменится пока не пересчитает этот новый бар…
Дальше что¿¿¿
уважаемый. не пишите пожалуйста мне, вы не в теме.
или докажите кодом.
вы уверены, что поняли смысл кода?
с большой вероятностью - уверен и понял
Вы хотите из индикатора синхронизировать "старший ТФ" перед вызовом другого индикатора
мой же индикатор работает? - можно в него добавить и BarsCalculated() - но как в примерах индикаторов из поставки, например MACD.mql5
ЗЫ: в КБ много мультитаймфремовых индикаторов, если мне нужно вспомнить, что и как делать, то обычно ищу поиском индикаторы от Mladen Rakic и смотрю у него, стиль написания кода своеобразный (вернее форматирование), но точно работоспособные на все 100
https://www.mql5.com/ru/users/mladen
уважаемый. не пишите пожалуйста мне, вы не в теме.
или докажите кодом.
Тады, тьфу на вас…
Разработчики на такие глупости не реагируют, Игорю тоже скоро надоест… И оставайтесь разговаривать сам с собою…
Только надо барабашку попросить перенести ваши излияния в отдельную тему, чтобы не загаживать нужную…
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Andrey Dik, 2021.05.28 05:16
я делаю проверку синхронизированости данных на запрашиваемом старшем ТФ (М5) и готовность индикатора на нём, если не готово, то выход.
в итоге индикатор работает только 1 раз на открытии бара М1, а не на каждом тике:
неужели использовать свой кастомный прев кальк придётся? надеюсь, разработчики внемлют моим мольбам.