Уточните, для какого терминала делаете это: для МТ5 или МТ4.
Да, когда писала в шапке mql5 я имела ввиду что это mql5.
По названию функции iOpenMQL4 складывается впечатление, что именно для МТ4
Зачем??? В mql4 фунцией iOpen я могу получить все данные.
хотя в названии темы фигурирует MQL5 (т. е. для МТ5). В этом случае вряд ли описанный метод получения данных будет работать.
Я в курсе что он работает через раз, иначе бы не было темы. Спрашивается, а как достать цену открытия бара по любом ТФ и Символу хотя бы на 0-м баре?
Языки терминалов сближаются, но в MQL4 пока еще много чего недоступно из того, что есть в MQL5.
да, особенно цены открытия стали еще доступнее...
...
Я в курсе что он работает через раз, иначе бы не было темы. Спрашивается, а как достать цену открытия бара по любом ТФ и Символу хотя бы на 0-м баре?
...
Через раз это как? Если CopyOpen иногда возвращает -1, это нормально. Нужно проверять результат, если успешен, то делаем, что нужно, если -1, то будем повторять на следующем тике.
Из справки про CopyOpen():
При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.
Если таймфрейм еще не построен, будет возвращено -1 и начнется процесс постройки таймфрейма... На следующем тике, возможно, получится скопировать.
Через раз это как? Если CopyOpen иногда возвращает -1, это нормально. Нужно проверять результат, если успешен, то делаем, что нужно, если -1, то будем повторять на следующем тике.
Из справки про CopyOpen():
Если таймфрейм еще не построен, будет возвращено -1 и начнется процесс постройки таймфрейма... На следующем тике, возможно, получится скопировать.
100-200 проходов и есть пропущенные значения... Я уже по всяком перепробовала. Нужно именно тика? Делала из слипом.
Смотрела и за построение таймфрейма, надеялась что может есть способ явно указать необходимость загрузки.
100-200 проходов и есть пропущенные значения... Я уже по всяком перепробовала. Нужно именно тика? Делала из слипом.
Смотрела и за построение таймфрейма, надеялась что может есть способ явно указать необходимость загрузки.
Про 100-200 проходов не понял.
С тиком проще и универсальней. В индикаторах Sleep() не работает, но если в советнике, можно и со Sleep(). Самое главное в том, что нужно проверять результат CopyClose() и т.п. функций. Специальной функции для инициации построения таймфрейма не встречал, ее вроде и нет. Еще есть функция Bars(), она тоже инициирует построение таймфрейма, можно ее попробовать в самом начале вызывать.
100-200 проходов и есть пропущенные значения... Я уже по всяком перепробовала. Нужно именно тика? Делала из слипом.
Смотрела и за построение таймфрейма, надеялась что может есть способ явно указать необходимость загрузки.
Кэш просто сбрасывается, если не используется какое-то время.
Хотите иметь постоянный доступ к данным - держите открытые графики или постоянно запрашивайте нужные данные, чтоб они не "забывались".
Кэш просто сбрасывается, если не используется какое-то время.
Хотите иметь постоянный доступ к данным - держите открытые графики или постоянно запрашивайте нужные данные, чтоб они не "забывались".
спасибо, но уже решила. Это жестоко просить пользователя открыть 20 графиков)
Принцип что берем значения, если что-то сфейлилось - помечаем как непосчитаное (отдельный буфер выделила). Если пришел новый тик, то проходимся по не посчитанных. И так очень даже работает.
Если кто знает, есть ли свойство бара посчитан||нет, чтоб можно было для каждого менять, то буду благодарна. Пока работает система "нипель"
спасибо, но уже решила. Это жестоко просить пользователя открыть 20 графиков)
Можно не просить, а чтобы эксперт сам открыл ))) Но есть более простой способ - на каждом тике обращаться к нулевому бару нужного ТФ. В итоге график будет формироваться виртуально (именно об этом способе говорил komposter).
Принцип что берем значения, если что-то сфейлилось - помечаем как непосчитаное (отдельный буфер выделила). Если пришел новый тик, то проходимся по не посчитанных. И так очень даже работает.
Если кто знает, есть ли свойство бара посчитан||нет, чтоб можно было для каждого менять, то буду благодарна. Пока работает система "нипель"
вот он и обращается к барам каждый тик пока не выдавит... Все таки реально мне помогло что сказали по тиках обрабатывать, а не в цикле молотить.
а rates_total и prev_calculated можно неужели менять руками? они не по ссылке передаются в OnCalculate. И как узнать посчитан ли n-й бар?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В индикаторе необходимо получить цену открытия бара на таймфрейме, окно которого не открыто совсем (если открыто, то все работает).
пыталась сделать функцией: