Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
как не странно, но перезапуск OnCalculate вместе с ChartRedraw() не помогает.
Ну да, оно то работает как надо, то не работает. У меня тоже такое было, я тогда не нашел ни причины, ни способа решения.
Можно как-нибудь программно эмулировать обновление или приход нового тика
Ну да, оно то работает как надо, то не работает. У меня тоже такое было, я тогда не нашел ни причины, ни способа решения.
Можно как-нибудь программно эмулировать обновление или приход нового тика
Завести таймер и эмулировать OnCalculate
Да, так работает.
Только запускать пересчет нужно не только когда не получилось загрузить данные, но и при обновлении истории любого используемого символа/тф. У меня вот так работает индикатор iIndex:
Тут только один ТФ (TimeFrame), зато много инструментов (массив Symbols[]) .
вопрос в первую очередь к поддержке метаквотов
но может ктото уже нашел решение этой проблемы в рамках существующих инструментов.
понадобилось использовать в индикаторе другой индикатор с другого таймфрейма того же инструмента
чтото типа того что используется в этом примере из справки по mql5
https://www.mql5.com/ru/docs/series/copybuffer
но только вместо
ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
я написал
после этого данный индикатор, текст которого представлю ниже, перестал рисоваться при инициализации, а только после прихода очередного тика, или после внесения каких либо изменений в окно графика (например добавления другого индикатора). то есть только после повторного вызова функции OnCalculate. первый вызов функции натыкается на то что BarsCalculated и CopyBuffer выдают ошибки о неготовности данных (4806). при этом ошибка не исчезает даже если я ставлю проверку BarsCalculated в бесконечный цикл - то есть со временем данные не становятся готовыми (Sleep как известно в индикаторе нельзя использовать). второй же вызов функции OnCalculate приводит к положительному результату.
все вышеописанное приводит к тому что индикатор не рисуется в оффлайне. это очень неудобно.
итого вопрос. как данную проблему можно решить. самое очевидно что приходит в голову инициировать както перезапуск функции OnCalculate. но я не нашел возможно ли это сделать. возвращать 0 из OnCalculate не помогает.
какие будут идеи.
текст кода (немного измененный стандартный пример отсюда https://www.mql5.com/ru/docs/series/copybuffer)
Скажите пожалуйста кто-то решил эту проблему ??
Скажите пожалуйста кто-то решил эту проблему ??