Добрый день, друзья.
Есть кастомный индикатор, 2 буфера, нормально работает.
На его основе хочу создать индикатор, чтобы отражал данные этого индюка со старшего ТФ.
Столкнулся с проблемой. На младшем тайме не могу получить эти данные.
Вот вырезки из кода
Вот что выдает терминал на образовании нового бара
т.е. он не может взять ни одного значения из индикатора... calculated = -1
Как выйти из этой ситуации?
Сначала убедитесь что хендл индикатора получен.
Как можно взять то что не существует?)
В модуле инициализации хендл индикатора определяется без ошибок.
Что значит не существует?
Если стоит на текущем ТФ то существует, а на меньшем нет, так что ли?
извините но это абсурд.
Сначала убедитесь что хендл индикатора получен.
Алексей, я проверяю хендл...
int OnInit() { //--- indicator buffers mapping ... ... // Здесь индикатор просто написал без параметров, чтобы не заморачиваться Handle_D1=iCustom(_Symbol,PERIOD_D1,"Indikator",...); if(Handle_D1==INVALID_HANDLE) { Print(" Не удалось получить хендл индикатора"); return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); }
так вот, ошибок нет ни нам одном ТФ, значит индикатор определяется.
Алексей, я проверяю хендл...
так вот, ошибок нет ни нам одном ТФ, значит индикатор определяется.
Дебагером пользоваться умеете?
Дебагером пользоваться умеете?
По старинке ошибки выявляю с помощью Принтов...
да и дебагер тут не особо поможет, код минимальный...
на стадии калькуляции хендла(индикатора) выдает ошибку 4806
не может взять данные...
if(calculated<bar_TF) { Print("Not all data is calculated (",calculated,"bars ). Error",GetLastError()); return(-1); }
Дебагером пользоваться умеете?
Ошибка возникает вот тут
int bar_TF=iBars(_Symbol,PERIOD_D1); int calculated=BarsCalculated(Handle_D1); if(calculated<bar_TF) { Print("Not all data is calculated (",calculated,"bars ). Error",GetLastError()); return(-1); }
Ошибка возникает вот тут
В OnInit() запросите время с D1.
В OnCalculate() запросите время с D1 и, если оно равно 0, то return 0; И только после строки проверки времени запрашивайте данные с вашего кастомного индикатора.
В секундном таймере не менее раза в две минуты запрашивайте время с D1
В OnInit() запросите время с D1.
В OnCalculate() запросите время с D1 и, если оно равно 0, то return 0; И только после строки проверки времени запрашивайте данные с вашего кастомного индикатора.
В секундном таймере не менее раза в две минуты запрашивайте время с D1
Хорошо, попробую.
По старинке ошибки выявляю с помощью Принтов...
да и дебагер тут не особо поможет, код минимальный...
на стадии калькуляции хендла(индикатора) выдает ошибку 4806
не может взять данные...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть кастомный индикатор, 2 буфера, нормально работает.
На его основе хочу создать индикатор, чтобы отражал данные этого индюка со старшего ТФ.
Столкнулся с проблемой. На младшем тайме не могу получить эти данные.
Вот вырезки из кода
Вот что выдает терминал на образовании нового бара
т.е. он не может взять ни одного значения из индикатора... calculated = -1
Как выйти из этой ситуации?