Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно? - страница 15
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В mql3 и не такое могло быть. Но это не значит, что и в mql5 сейчас надо делать такую проверку.
А как узнать что не надо?
Вот пожалуйста, из стандартного мт5 алигатора
Про очистку буфера, ее нужно делать если в индикаторе CopyBuffer используется
А как узнать что не надо?
Наверное включить голову.
На предыдущей странице говорилось о нескольких миллисекундах на вызов функции, так я с этим абсолютно согласен, да и на проверку уходит не так много этих миллисекунд. Но таких проверок можно в код напихать столько, что не останется времени на расчёт значений индикатора.
Вообще мне в мою больную голову пришло такое СМС. А зачем вообще проверка каждого действия на ошибку? Надо проверить как будет работать такой вариант:
В начале кода сбрасываем ошибку ResetLastError();, а в конце кода проверяем значение _LastError и если не 0, пересчитываем индикатор…
Наверное для советника такое не подходит, можно такого наколбасить… А для индикатора надо будет на досуге проверить.
Зачем заполнять массив пустым значением или нулём перед заполнением рабочими значениями?
Это где можно такое посмотреть? Когда бывает так, чтобы посчитанных баров было больше чем есть на графике???
И вот ещё тема для обсуждения:
Код из вашего сообщения
Зачем заполнять массив пустым значением или нулём перед заполнением рабочими значениями? Ведь по любому будет перебор всех баров и весь буфер будет заполнен…
prev_calculated - это не кол-во просчитанных баров, это просто цифира которую вернули из предыдущего OnCalculate. pass-touch значение
проверяет-ли её терминал на корректность или нет, неизвестно и может зависеть от билдов.
Это называется инициализации.
Инициализация, это когда обязательно надо. А в некоторых случаях это просто трата времени.
Артём, я не сказал, что вообще не надо. Я понимаю такой подход в таких индикаторах как ZZ в которых не каждый бар имеет значение. Тут можно ещё посчитать что быстрей обрабатывается… Ведь при первом запуске перебираются в цикле все бары, проверяется надо-ли заполнить этот индекс буфера значением и только потом заполняется. Но ведь после проверки, если заполнять не надо, можно или заполнить пустым значением или просто перейти на следующий индекс, если массив инициализирован. В чём выгода в каком варианте? Да просто на любителя…
А взять такой индикатор как МА, то тут вообще инициализация массива абсолютная глупость. С моей точки зрения. Ведь в цикле каждая ячейка обязательно заполняется значением отличным от нуля. И плевать что в ячейке было перед заполнением, мусор или пустое значение.
Вот пожалуйста, из стандартного мт5 алигатора
Так эти индикаторы были написаны ещё на mql3 и потом просто переписывались на mql4 и на mql5. А переписывали их далеко не лучшие программисты компании. Эти индикаторы очень часто демонстрируют как не надо писать.
В чём выгода в каком варианте?
Голову себе не морочить при просчёте индикатора что заполнять, а что не заполнять пустым значением - уже заполнено. Немного упрощается логика расчёта - проще читать собственный код. Всё ИМХО, а то же есть ещё и любители стоя в гамаке...
А как узнать что не надо?
Вот пожалуйста, из стандартного мт5 алигатора
-- этой проверкой можно пренебречь.
значение prev_calculated задаётся двумя способами -- 1) от движка терминала как нулевое значение -- и 2) программистом индикатора через return(rates_total)
за образец/основу остальной логики лучше брать примеры штатных функций в терминале -- например в МТ5 MACD.mq5 (логика индексации буферов слева направо):
-- для отработки буферов
-- и для работы с CopyBuffer
p.s. все примеры частных кодеров -- надо рассматривать как их частное (зачастую необоснованное) мнение -- которое перед заимствованием требует тестирования.
-- этой проверкой можно пренебречь
Та тоже из штатного
Та тоже из штатного
штатные примеры я беру за основу -- эту проверку считаю лишней -- и не включаю в свой код
штатные примеры имеют статус "Документация" -- и являются официальной рекомендацией к использованию от компании-разработчика языка и терминала.