Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробуйте переложить на С - ошибка сама найдется. Да и вообще - с такими проектами только на нем и писать, если не хочешь проблем в будущем. К сожалению, сам я это слишком поздно понял и теперь переписываю :)
Имеем индикатор запускаемый на ТФ M15, в коде индикатор запрашивает таймсерию MqlRates с ТФ M1.
Индикатор не запускается сразу тк данные М1 не готовы, и добиться их загрузки при первом запуске не получается.
В результате имеем фейковый проход и индикатор больше не обращается к данным думая что они уже рассчитаны и пересчитывать их не стоит.
Сейчас я делаю запуск индикатора двумя способами:
Отсюда вопрос: как правильно автоматизировать проверку и загрузку нужных данных другого ТФ?
Отсюда вопрос: как правильно автоматизировать проверку и загрузку нужных данных другого ТФ?
В подобной ситуации контролирую процесс инициализации в OnCalculate. Если есть ошибка при инициализации, то возвращаю prev_calculated=0, и так пока все корректно не посчитается.
Идея хорошая, хотя в prev_calculated ничего присвоить нельзя, переменная объявлена как const, но я вас понял можно завести другую аналогичную переменную.
Остаётся один вопрос, а если данных так и нет, чего делать?
Я так понимаю что сам запрос данных не приводит к их закачке или загрузке из локальной базы, и в этом как раз проблема.
Идея хорошая, хотя в prev_calculated ничего присвоить нельзя, переменная объявлена как const, но я вас понял можно завести другую аналогичную переменную.
а не в присваивании дело! Дело в числе, какое возвращает OnCalculated. Если ваши данные не готовы, то вы соответственно из OnCalculated возвращаете 0.
Посмотрите на примеры по BarsCalculated. Именно через него и надо делать проверку.
Остаётся один вопрос, а если данных так и нет, чего делать?
Если хотите, можете ожидание и расчет буферов по таймеру вызывать.
а не в присваивании дело! Дело в числе, какое возвращает OnCalculated. Если ваши данные не готовы, то вы соответственно из OnCalculated возвращаете 0.
если их нет и не появятся, то и делать особо нечего.Посмотрите на примеры по BarsCalculated. Именно через него и надо делать проверку.
Если хотите, можете ожидание и расчет буферов по таймеру вызывать.
Не поможет, помогает только выгрузка индикатора и повторный запуск, в таком случае данные почему то уже есть.
Или как вариант открыть чарт с нужным ТФ М1, тогда данные на соседнем чарте М15 по запросу М1 готовы сразу.
Не поможет, помогает только выгрузка индикатора и повторный запуск, в таком случае данные почему то уже есть.
Или как вариант открыть чарт с нужным ТФ, тогда данные на соседнем чарте готовы сразу.
Николай не поверишь, сегодня полдня провозился с индюками. Были мультивалютный/мультитаймрфеймовый.
так вот проблема в неотображении в том, что выполняется попытка взять значение от бара, которого на этом ТФ просто нет. истории в памяти еще нет.
Поэтому надо проверить перед взятием бара - SeriesInfoInteger.Никаких выгрузок не надо. Все равно расчетную часть не выгрузишь (сегодня как раз тему по этому поводу поднял).
Николай не поверишь, сегодня полдня провозился с индюками. Были мультивалютный/мультитаймрфеймовый.
так вот проблема в неотображении в том, что выполняется попытка взять значение от бара, которого на этом ТФ просто нет. истории в памяти еще нет.
Поэтому надо проверить перед взятием бара - SeriesInfoInteger.Никаких выгрузок не надо. Все равно расчетную часть не выгрузишь (сегодня как раз тему по этому поводу поднял).
Мимо, у меня проверочка стоит, нахожу первую дату по ТФ М1, и расчёт баров М15 начинается от этой даты. TF в настройках указан как PERIOD_M1
1. Идея хорошая, хотя в prev_calculated ничего присвоить нельзя, переменная объявлена как const, но я вас понял можно завести другую аналогичную переменную.
2. Остаётся один вопрос, а если данных так и нет, чего делать?
3. Я так понимаю что сам запрос данных не приводит к их закачке или загрузке из локальной базы, и в этом как раз проблема.
Я так понимаю что сам запрос данных не приводит к их закачке или загрузке из локальной базы, и в этом как раз проблема.
Из справки по CopyXXXX:
При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера, если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута, но загрузка истории будет продолжаться, и при следующем аналогичном запросе функция вернет уже больше данных.