Ошибки, баги, вопросы - страница 3028
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
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, а не на каждом тике:
неужели использовать свой кастомный прев кальк придётся? надеюсь, разработчики внемлют моим мольбам.
Игорю тоже скоро надоест…
у меня лишь желание разобраться
в МТ5 много подводных камней с синхронизацией, сейчас вопрос как раз и про это
имхо, если в индикаторе используются построения на каждом баре (линии, а не стрелки)
то достаточно такого цикла для экономного расчета:
если будет первый вызов, то prev_calculated будет = 0, в последующие вызовы будут пересчитаны новые бары
и если оба индикатора будут написаны правильно, то не нужно ничего синхронизировать дополнительно, все будет работать, останется лишь сравнивать CopyBuffer() с требуемым количеством значений вызываемого индикатора
у меня лишь желание разобраться
в МТ5 много подводных камней с синхронизацией, сейчас вопрос как раз и про это
имхо, если в индикаторе используются построения на каждом баре (линии, а не стрелки)
то достаточно такого цикла для экономного расчета:
если будет первый вызов, то prev_calculated будет = 0, в последующие вызовы будут пересчитаны новые бары
и если оба индикатора будут написаны правильно, то не нужно ничего синхронизировать дополнительно, все будет работать, останется лишь сравнивать CopyBuffer() с требуемым количеством значений вызываемого индикатора
И я об этом же. Ладно-бы пытаться синхронизировать перед первым запуском, а так…………
у меня лишь желание разобраться
в МТ5 много подводных камней с синхронизацией, сейчас вопрос как раз и про это
имхо, если в индикаторе используются построения на каждом баре (линии, а не стрелки)
то достаточно такого цикла для экономного расчета:
если будет первый вызов, то prev_calculated будет = 0, в последующие вызовы будут пересчитаны новые бары
и если оба индикатора будут написаны правильно, то не нужно ничего синхронизировать дополнительно, все будет работать, останется лишь сравнивать CopyBuffer() с требуемым количеством значений вызываемого индикатора
если есть желание разобраться, а не оппонировать, то Вам следовало бы написать что то вроде ниже показанного кода:
скомпилируйте оба кода и запустите второй. получите что то вроде этого в логах при запуске на М1 и М3 старшего индикатора:
2021.05.28 19:05:01.408 OldTF (EURUSD,M3) 0.000234 sec, расcчитано 50000 баров, всего баров 50000
2021.05.28 19:05:03.860 LitTF (EURUSD,M1) 0.007452 sec, расcчитано 50023 баров, всего баров 50023
2021.05.28 19:06:00.670 OldTF (EURUSD,M3) 0.000001 sec, расcчитано 1 баров, всего баров 50001
2021.05.28 19:06:02.211 LitTF (EURUSD,M1) 0.008180 sec, расcчитано 50024 баров, всего баров 50024
2021.05.28 19:07:00.780 LitTF (EURUSD,M1) 0.000004 sec, расcчитано 1 баров, всего баров 50025
2021.05.28 19:08:01.246 LitTF (EURUSD,M1) 0.000014 sec, расcчитано 1 баров, всего баров 50026
2021.05.28 19:09:00.959 OldTF (EURUSD,M3) 0.000000 sec, расcчитано 1 баров, всего баров 50002
2021.05.28 19:09:01.775 LitTF (EURUSD,M1) 0.006898 sec, расcчитано 50027 баров, всего баров 50027
2021.05.28 19:10:00.830 LitTF (EURUSD,M1) 0.000004 sec, расcчитано 1 баров, всего баров 50028
даже невооружённым взглядом можете заметить во первых, наискорейший из возможных вариантов построения быстрых индикаторов, во вторых, что прев кальк таки обнуляется тогда,
когда его не просят и это приведёт к значительному необоснованному снижению производительности при оптимизации. в данном примере индикатор вынужден полностью пересчитаться на кадом новом баре М3. если не делать синхронизацию, то будете получать дыры при построении индикатора.
Тады, тьфу на вас…
Разработчики на такие глупости не реагируют, Игорю тоже скоро надоест… И оставайтесь разговаривать сам с собою…
Только надо барабашку попросить перенести ваши излияния в отдельную тему, чтобы не загаживать нужную…
посмотрите код выше, съешьте свой паспорт, посыпьте голову пеплом и засуньте свою спесь себе туда, где её никому не будет видно.