Здравствуйте.
В индикаторе (5 мин ТФ) пробую получить данные с другого индикатора (1 час ТФ). Система выдает ошибку 4806 - "Запрашиваемые данные не найдены". Однако, если второй индикатор (с большего ТФ) запущен на параллельном графике, то данные мой индикатор работает. Как заставить индикатор работать без открытия второго графика?
Для примера сделал индикатор, который на 5 мин. ТФ пытается получить данные индикатора АТР с часовика.
Выдает ошибку:
А вот так не выдает:
Помогите разобраться, как правильно запускать мой индикатор на меньшем таймфрейме.
Рекомендую приложить индикатор в виде файла для начала - с картинкой мало кто будет работать...
Рекомендую приложить индикатор в виде файла для начала - с картинкой мало кто будет работать...
Я подумал, что проблема известная, так подскажут. Но спасибо за совет. Вот файл.
Проблема не только известная, но и измусоленная
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Запрошенные данные не найдены.
Alexey Viktorov, 2017.07.08 10:39
Вопрос поднимался ещё в далёком сентябре 2016 года, но так и ничего не исправлено или я не смог найти решение проблемы?
Почему-то в советнике этой проблемы не возникает, а в индикаторе не получается запросить данные индикатора периода не соответствующего текущему. И ответа на этот пост тоже найти не удалось по причине... промолчу лучше.
Прошу помощи. Может кто знает где есть ответ, или ответят более конкретно
Задача: получить значения фракталов периода Н1 при запуске индикатора на периоде М5.
int hadle; double arr[]; /**************Custom indicator initialization function**************/ int OnInit() { hadle = iFractals(_Symbol, PERIOD_H1); int size = CopyBuffer(hadle, 0, 0, 1000, arr); if(size < 0) { Print("Ошибка CopyBuffer ", GetLastError()); } return(INIT_SUCCEEDED); }/*******************************************************************/
И абсолютно не важно где расположить CopyBuffer() в OnInit() или в OnCalculate()
Даже пробовал открывать новое окно графика с указанным периодом Н1
long idChart = ChartOpen(_Symbol, PERIOD_H1);
добавлять на него индикатор, или применять шаблон с индикатором обновлять этот график
ChartIndicatorAdd(idChart, 0, hadle); ChartRedraw(idChart);ничего не помогает, результат
ERR_INDICATOR_DATA_NOT_FOUND | 4806 | Запрошенные данные не найдены |
Проблема не только известная, но и измусоленная
Спасибо за информацию. Посмотрел, но, честно говоря, не понял, как это исправляется. Похоже, что причина в особенности платформы, которую я не знаю.
Подскажите, не существует ли относительно простых, стандартных решений. Этот механизм мне нужен для использования в индикаторе, который и так очень "тяжелый". Если я запущу несколько советников с такими перегруженными индикаторами, ничего хорошего не выйдет.
Спасибо за информацию. Посмотрел, но, честно говоря, не понял, как это исправляется. Похоже, что причина в особенности платформы, которую я не знаю.
Подскажите, не существует ли относительно простых, стандартных решений. Этот механизм мне нужен для использования в индикаторе, который и так очень "тяжелый". Если я запущу несколько советников с такими перегруженными индикаторами, ничего хорошего не выйдет.
Пока решения не вижу
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Запрошенные данные не найдены.
Alexey Viktorov, 2017.07.11 07:52
Предположительно надо проверить такой вариант:
Добавить флаг, при первом запуске ничего не рассчитывая вернуть что посчитаны все бары. Потом перевести флаг и обнулить prev_calculated и только потом пересчитать всю историю индикатора как задумано.
Но пока нет времени и желания над этим колдовать.
Если есть желание можете проверить эту идею.
Подскажите, не существует ли относительно простых, стандартных решений. Этот механизм мне нужен для использования в индикаторе, который и так очень "тяжелый". Если я запущу несколько советников с такими перегруженными индикаторами, ничего хорошего не выйдет.
У советника с синхронизацией проще. Если визуализация на другом ТФ не нужна, не заморачивайтесь, а подключайте индикатор с нужного ТФ к советнику.
Попробуйте решить задачу с помощью нестандартных методов. Например, так:

- 2010.05.11
- Sergey Pavlov
- www.mql5.com
Помогите разобраться, как правильно запускать мой индикатор на меньшем таймфрейме.
Здравствуйте. На каждом тике нужно проверять синхронизацию старшего ТФ. Т.е. вызывать функцию SeriesInfoInteger() с идентификатором синхронизации (посмотрите по документации). Либо же вызывать функцию Bars() с нужным символом/ТФ и сравнивать с -1. Насколько я помню, если таймсерия не синхронизирована то и синхронизация вернет false, и Bars() вернет -1. Также, Вам нужно сравнить количество просчитанных баров (Bars()) и количество просчитанных баров индикатора (BarsCalculated()) на равенство.
Bars() возвращает -1. Насколько я понимаю, синхронизация нужна тогда, когда информация подгрузиться не успевает. А здесь она вообще не идет.
Спасибо за помощь.
Похоже, на моем уровне программирования задача не решаемая.
Переделал ТЗ, необходимость в данных с индикаторов на других таймфреймах пока отпала, беру с текущего графика то, что возможно.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
В индикаторе (5 мин ТФ) пробую получить данные с другого индикатора (1 час ТФ). Система выдает ошибку 4806 - "Запрашиваемые данные не найдены". Однако, если второй индикатор (с большего ТФ) запущен на параллельном графике, то мой индикатор работает. Как заставить индикатор работать без открытия второго графика?
Для примера сделал индикатор, который запускаю на 5 мин. ТФ. Он и пытается получить данные индикатора АТР с часовика.
Выдает ошибку:
А вот так не выдает:
Помогите разобраться, как правильно запускать мой индикатор на меньшем таймфрейме.