Вопрос поднимался ещё в далёком сентябре 2016 года, но так и ничего не исправлено или я не смог найти решение проблемы?
Почему-то в советнике этой проблемы не возникает, а в индикаторе не получается запросить данные индикатора периода не соответствующего текущему. И ответа на этот пост тоже найти не удалось по причине... промолчу лучше.
Прошу помощи. Может кто знает где есть ответ, или ответят более конкретно
Задача: получить значения фракталов периода Н1 при запуске индикатора на периоде М5.
И абсолютно не важно где расположить CopyBuffer() в OnInit() или в OnCalculate()
Даже пробовал открывать новое окно графика с указанным периодом Н1
добавлять на него индикатор, или применять шаблон с индикатором обновлять этот график
ничего не помогает, результатERR_INDICATOR_DATA_NOT_FOUND | 4806 | Запрошенные данные не найдены |
Увы и ах...
TradePad_Sample - эксперт для MetaTrader 5
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Запрошенные данные не найдены.
Alexey Viktorov, 2017.07.08 10:39
Почему-то в советнике этой проблемы не возникает, а в индикаторе не получается запросить данные индикатора периода не соответствующего текущему.
ничего не помогает, результатERR_INDICATOR_DATA_NOT_FOUND | 4806 | Запрошенные данные не найдены |
Попробуйте мой костыль:
double getIndy( int handle, int buff, int bar ) { if( handle == INVALID_HANDLE ) return(EMPTY_VALUE); double array[]; if( CopyBuffer( handle, buff, bar, 1, array ) > 0 ) return(array[0]); int err=GetLastError(); Print( " * Can't get indicator data (handle = ",handle,", buff = ",buff,", bar = ",bar,")! ERROR #",err,"!!!"); //--- https://www.mql5.com/ru/articles/5 //--- если номер ошибки 4806, то данные просто не успели подгрузиться if(err==4806) { Print( " ** Trying to load data..."); //--- ждем, пока данные загрузятся for(int i=0; i<1000;++ i) { Sleep(1); if(BarsCalculated(handle)>0) break; } //--- попытаемся скопировать данные индикатора еще раз if( CopyBuffer( handle, buff, bar, 1, array ) > 0 ) return(array[0]); Print( " *** Still can't get indicator data!"); } return(EMPTY_VALUE); }
И понаблюдайте за логами.
Попробуйте мой костыль:
И понаблюдайте за логами.
Это я уже видел в ветке Артёма и пробовал применить, но не получилось. Предположительно по причине того, что мне хотелось-бы получить данные индикатора PERIOD_H1, запущенного на PERIOD_M5 в int OnInit().
После загрузки индикатора эти данные приходят, приходят и в том случае если рядом открыт график PERIOD_H1. Я пробовал программно добавить график PERIOD_H1, добавить на него индикатор или применить шаблон с индикатором перед чтением буфера, но всё безрезультатно.
Предположительно надо проверить такой вариант:
Добавить флаг, при первом запуске ничего не рассчитывая вернуть что посчитаны все бары. Потом перевести флаг и обнулить prev_calculated и только потом пересчитать всю историю индикатора как задумано.
Но пока нет времени и желания над этим колдовать.
Это я уже видел в ветке Артёма и пробовал применить, но не получилось. Предположительно по причине того, что мне хотелось-бы получить данные индикатора PERIOD_H1, запущенного на PERIOD_M5 в int OnInit().
После загрузки индикатора эти данные приходят, приходят и в том случае если рядом открыт график PERIOD_H1. Я пробовал программно добавить график PERIOD_H1, добавить на него индикатор или применить шаблон с индикатором перед чтением буфера, но всё безрезультатно.
Да, у меня тоже из советника код.
В индикаторе городил намного сложнее, с проверком подгрузки истории в таймере и принудительным вызовом ОнКалкулейт при любом обновлении.
Если не справитесь, скажите, повырезаю куски кода.
Да, у меня тоже из советника код.
В индикаторе городил намного сложнее, с проверком подгрузки истории в таймере и принудительным вызовом ОнаКалкулейт при любом обновлении.
Если не справитесь, скажите, повырезаю куски кода.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос поднимался ещё в далёком сентябре 2016 года, но так и ничего не исправлено или я не смог найти решение проблемы?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Sergey Diubakin, 2016.10.09 10:48
Версия и битность терминала
Version: 5.00, build 1445 (07.10.2016), 32 bit.
Описание проблемы
В индикаторе не удаётся скопировать данные стандартных индикаторов (встроенных в МТ5) с другого таймфрейма (отличающегося от текущего таймфрейма графика на котором установлен индикатор). При этом "хэндл" стандартного индикатора получить удаётся, но функция CopyBuffer() постоянно возвращает значение -1. В тестере в режиме визуализации данная проблема не возникает, а в терминале на графике (к которому добавлен индикатор) проблема присутствует постоянно.
Последовательность действий
Описана выше.
Полученный результат
Описан выше.
Ожидаемый результат
Корректное копирование в индикаторе данных стандартных (и пользовательских желательно тоже) индикаторов с других таймфреймов.
Дополнительные сведения
В более ранних "билдах" данная проблема не возникала.
Кто-нибудь сталкивался с подобной проблемой? "Баг" терминала или мой?
Почему-то в советнике этой проблемы не возникает, а в индикаторе не получается запросить данные индикатора периода не соответствующего текущему. И ответа на этот пост тоже найти не удалось по причине... промолчу лучше.
Прошу помощи. Может кто знает где есть ответ, или ответят более конкретно
Задача: получить значения фракталов периода Н1 при запуске индикатора на периоде М5.
И абсолютно не важно где расположить CopyBuffer() в OnInit() или в OnCalculate()
Даже пробовал открывать новое окно графика с указанным периодом Н1
добавлять на него индикатор, или применять шаблон с индикатором обновлять этот график
ничего не помогает, результатERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены