Duplication_MACD_hist. Не все данные ExtMACDHandle рассчитаны: (-1bars ). Error4806
очевидно что проблема с пользовательским индикатором Elder_MACD_histogram_x6
4806
ERR_INDICATOR_DATA_NOT_FOUND |
очевидно что проблема с пользовательским индикатором Elder_MACD_histogram_x6
4806
ERR_INDICATOR_DATA_NOT_FOUND |
Естественно NOT_FOUND, инициализация индикатора в логе происходит уже после попытки обращения к данным
if(calculated<=ExtRatesTotal)
для начала поставьте тут <=0 вместо ExtRatesTotal.
потом попробуйте какой-нибудь стандартный индикатор.
пс. еще пару для тестирования выбирайте стандартную, какой-нибудь форекс-мажор.
для начала поставьте тут <=0 вместо ExtRatesTotal.
потом попробуйте какой-нибудь стандартный индикатор.
пс. еще пару для тестирования выбирайте стандартную, какой-нибудь форекс-мажор.
ExtRatesTotal - это кол-во баров на старшем таймфрэйме:
ExtRatesTotal = iBars(_Symbol, ExtMACDPeriod); // Получим кол-во баров внешнего TF
Чтобы копировать значения от туда, код хочет дождаться их расчета.
Менял пользовательский индикатор на стандартный iOsMA
Пробовал график EURUSD.
На TF с малым кол-м баров, например на W1 всё работает, а на D1 работает 1 раз из 10, когда успевает сделать расчет баров индикатора 2.
На TF с малым кол-м баров, например на W1 всё работает, а на D1 работает 1 раз из 10, когда успевает сделать расчет баров индикатора 2.
История загружена по всем периодам?
МТ5 строит бары из М1, то есть если это первое обращение к символу/периоду, то может занять много времени пока загрузятся все минутки.
ExtRatesTotal - это кол-во баров на старшем таймфрэйме:
Чтобы копировать значения от туда, код хочет дождаться их расчета.
Менял пользовательский индикатор на стандартный iOsMA
Пробовал график EURUSD.
На TF с малым кол-м баров, например на W1 всё работает, а на D1 работает 1 раз из 10, когда успевает сделать расчет баров индикатора 2.
а если попробовать установить ваш индикатор
Elder_MACD_histogram_x6"
в этот индикатор https://www.mql5.com/ru/code/33553
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
я имею ввиду здесь изменить на ваш
//--- create handle of the indicator iOsMA handle_iOsMA=iOsMA(Symbol(),Period(),Inp_OsMA_fast_ema_period, Inp_OsMA_slow_ema_period,Inp_OsMA_signal_period,Inp_OsMA_applied_price); //--- if the handle is not created if(handle_iOsMA==INVALID_HANDLE) { //--- tell about the failure and output the error code PrintFormat("Failed to create a handle of iOsMA for the pair %s/%s, error code is %d", Symbol(), EnumToString(Period()), GetLastError()); //--- the indicator is stopped early return(INIT_FAILED); } //---
История загружена по всем периодам?
МТ5 строит бары из М1, то есть если это первое обращение к символу/периоду, то может занять много времени пока загрузятся все минутки.
Предварительно потыкал все периоды, чтобы MT5 построил кэш баров, результат не изменился.
а если попробовать установить ваш индикатор
в этот индикатор https://www.mql5.com/ru/code/33553
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
я имею ввиду здесь изменить на ваш
Заменил, работает как часы, дело не в моем индикаторе Elder_MACD_histogram_x6
Приложил сферический пример в вакууме. Попробуйте запустить его на периодах от D1 и ниже.
Я ожидал, что OnCalculate будет перезапускаться до тех пор, пока он не вернет rates_total вместо нуля, но нет, отрабатывает один раз, возвращает ноль и больше ничего не происходит.
Я ожидал, что OnCalculate будет перезапускаться до тех пор, пока он не вернет rates_total вместо нуля, но нет, отрабатывает один раз, возвращает ноль и больше ничего не происходит.
В документации ведь написано:
События клиентского терминалаСобытие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных.
Ничего про циклический вызов нет. Таким образом, вывод один: нет тиков, которые бы сгенерировали событие Calculate. На пользовательских символах такое бывает часто.
В документации ведь написано:
События клиентского терминалаСобытие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных.
Ничего про циклический вызов нет. Таким образом, вывод один: нет тиков, которые бы сгенерировали событие Calculate. На пользовательских символах такое бывает часто.
А создать такое событие нельзя?
При перетаскивании индикатора на статичный график это какая-то неразрешимая проблема получается, потому и написал на форум.
Если только в случае ошибки вызывать OnInit, в холостую без фактической переинициализации переменных:
.... //--- handles int ExtMACDHandle=INVALID_HANDLE; // хэндл внешнего индикатора ... int OnInit() { if(ExtMACDHandle==INVALID_HANDLE) { ExtMACDHandle=iOsMA(NULL, ExtMACDPeriod, InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalEMAPeriod,PRICE_CLOSE); } ... } ... if(calculated<ExtRatesTotal) { Print("Ошибка! Не все данные ExtMACDHandle рассчитаны: (",calculated,"bars, ExtRatesTotal: ",ExtRatesTotal,"). Error",GetLastError()); OnInit(); } ...
Заменил, работает как часы, дело не в моем индикаторе Elder_MACD_histogram_x6
Приложил сферический пример в вакууме. Попробуйте запустить его на периодах от D1 и ниже.
Я ожидал, что OnCalculate будет перезапускаться до тех пор, пока он не вернет rates_total вместо нуля, но нет, отрабатывает один раз, возвращает ноль и больше ничего не происходит.
он у вас пишет что всё ок!
\\\\\\\\\\\\\\\\\\\\\
Да выдаёт ошибку - когда время другое установил 1мин.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа, помогите кто чем может.
Имеется график пользовательского символа.
Перетаскиваю на него пользовательский индикатор1, который получает хэндл пользовательского индикатора2 со старшего таймфрэйма.
Пока индикатор 2 инициализируется и рассчитывается, в индикаторе1 запускается OnCalculate, который проверяет, рассчитан ли индикатор2, а поскольку тот не рассчитан, то возвращает prev_calculated=0, после чего OnCalculate больше не перезапускается.
Получается, что в визуальном тестере повторный запуск OnCalculate срабатывает, из-за поступления новых баров, а на статичном графике наступает ступор
Лог вот такой:
2021.04.18 12:20:47.571 Duplication_MACD_hist (SLB_c,D1) Oncalculate rates_total: 12867 prev_calculated: 0
2021.04.18 12:20:47.571 Duplication_MACD_hist (SLB_c,D1) Duplication_MACD_hist. Не все данные ExtMACDHandle рассчитаны: (-1bars ). Error4806
2021.04.18 12:20:47.571 Elder_MACD_histogram_x6 (SLB_c,W1) Elder_MACD INIT
2021.04.18 12:20:47.571 Elder_MACD_histogram_x6 (SLB_c,W1) Elder_MACD_histogram успешная инициализация в OnInit