Ошибки, баги, вопросы - страница 1391
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
После нажатия на "обновить" все рассчиталось. Все таки в качестве пожелания - удобнее если бы данные индикаторов, созданных в ините рассчитывались до первого вызова OnCalculate/OnTimer etc.
Или чтобы была возможность после инита программно дождаться их просчета в цикле внутри индикатора.
Чтобы рассчитать индикатор пользователю придется несколько раз жать "обновить" на графике. Надо ли ему это. Он вспомнит старый добрый МТ4 и останется на нем, не смотря на некоторые преимущества МТ5.
Любые расчёты в индикаторах НУЖНО делать только в OnCalculate().
Я говорю о показаниях индикатора Ишимоку в данном случае. Речь о показаниях индикаторов, которые используются в текущем, то есть в OnCalculate. Чтобы они рассчитывались до вызова OnCalculate, как это было в МТ4.
Я говорю о показаниях индикатора Ишимоку в данном случае. Речь о показаниях индикаторов, которые используются в текущем, то есть в OnCalculate. Чтобы они рассчитывались до вызова OnCalculate, как это было в МТ4. Или чтобы можно было в OnCalculate дождаться их расчета. Иначе пользователям придется несколько раз нажимать на Обновить чтобы построить индикатор. Так как не все индикаторы строятся на всей истории за 1 секунду, бывают сложные индикаторы которые рассчитываются дольше. Все это время пользователю нужно будет куковать над кнопкой "Обновить", а в МТ4 нужно было просто ждать отрисовки.
Периодически эта проблема всплывает на форуме. К сожалению вызов OnCalculate() в OnTimer() не решает проблему.
Но всё же попробуйте. Пример есть в этой статье: Рецепты MQL5 - Разработка мультивалютного индикатора волатильности на MQL5.
Напишите потом, если не сложно, получилось или нет.
В OnInit() осуществляется подготовка торгового окружения для индикатора. И только в OnCalculate() уже можно пользоваться данными индикатора.
Периодически эта проблема всплывает на форуме. К сожалению вызов OnCalculate() в OnTimer() не решает проблему.
Но всё же попробуйте. Пример есть в этой статье: Рецепты MQL5 - Разработка мультивалютного индикатора волатильности на MQL5.
Напишите потом, если не сложно, получилось или нет.
Оказывается, что нельзя, не нажав кнопку "Обновить" на графике один или несколько раз (либо подождав 1/несколько тиков), если в индикаторе используются другие индикаторы с других символов и/или тф.
А если более внимательно просмотреть на работу кода, который я дал? И, в частности, в "Эксперты"? После перезапуска терминала на выходных:
Отлично видно, что расчёт прошёл только на втором вызове OnCaalculate(). Таким образом никто не снимает с программиста ответственности по проверкам: проверяйте результат CopyBuffer() в OncalCulate() - если ничего не вернула функция, значит нужно проверить на следующем входе в OnCalculate().
Периодически эта проблема всплывает на форуме. К сожалению вызов OnCalculate() в OnTimer() не решает проблему.
Но всё же попробуйте. Пример есть в этой статье: Рецепты MQL5 - Разработка мультивалютного индикатора волатильности на MQL5.
Напишите потом, если не сложно, получилось или нет.
Статью пока не прочитал, но прием с OnTimer работает отлично
В общем тут по-кривому показано, что вызов OnCalculate из OnTimer работает) Нужно добавить передачу правильных значений в таймсериях
Статью пока не прочитал, но прием с OnTimer работает отлично
Статью пока не прочитал, но прием с OnTimer работает отлично
Пользуйтесь Стилизатором - так лучше выявлять ошибки.
Увеличение переменной count нужно делать перед выходом из OnCalculate() - в таком случае эта переменная будет правильно считать все заходы в OnCalculate.