Ошибки, баги, вопросы - страница 1221
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ошибка
Вызов:
приводит к сообщению в журнале:
HistoryBase 'RTS-12.14' 1 invalid bars removed
Задолбался уже с этой ошибкой. Кроме всего прочего она грузит канал связи.
Эта же ошибка появляется по другим, не выявленным, причинам.
Но, что интересно, она не появляется на многих других инструментах. Больше всего вылезает именно на фьючерсе RTS.
В сервисдеск написал несколько месяцев назад - ответ нет (Заявка начата: 2014.07.28 13:41, #1046215).
Прикрепляю код индюка, который вызывает эту ошибку на каждый тик текущего (и прошлого) фьючерса RTS (демо счёт у брокера "О..."):
Это баг в терминале? Или у брокера? Или у меня?
Что делать? Как иначе узнать кол-во баров на таймфрейме D1?
Добрый вечер. Не пробовали так?
Добрый вечер. Не пробовали так?
И Вам вечер добрый. Попробовал - однофигственно.
Результат одинаковый. Ошибка лезет в журнале на каждый тик.
За идею спасибо. Если SeriesInfoInteger() не обращается к Bars внутри себя, тогда всё более вероятно, что это "узкий" косяк данных на сервере брокера.
И это тоже удовлетворительный ответ на мой вопрос.
Ведь я же не понимаю, где ошибка всплывёт, могу ли я её избежать и т.п.
И Вам вечер добрый. Попробовал - однофигственно.
Результат одинаковый. Ошибка лезет в журнале на каждый тик.
За идею спасибо. Если SeriesInfoInteger() не обращается к Bars внутри себя, тогда всё более вероятно, что это "узкий" косяк данных на сервере брокера.
И это тоже удовлетворительный ответ на мой вопрос.
Ведь я же не понимаю, где ошибка всплывёт, могу ли я её избежать и т.п.
Возможно действительно ошибка у брокера, т.к. по сообщению удаляются какие-то "битые" бары... либо на пути данные успевают "убиться". Но, это только догадки с моей стороны. Кстати, а GetLastError() дает что-нибудь? Да, и что возвращает Bars()?
Если Bars() возвращает 0, тогда приходит ошибка 4001 (ERR_INTERNAL_ERROR 4001 Неожиданная внутренняя ошибка).
Но через раз Bars() всё-таки возвращает кол-во баров и тогда ошибки нет (Bars() не меняет статус ошибки).
МТ4 билд 722, ME4 билд 989
Пытаюсь копировать данные текущего нулевого бара:
Принтуется n=0 т.е. данные не копируются.
Если вместо PERIOD_CURRENT записать _Period то работает.
Если копировать данные не нулевого бара (time[1] и др.) то независимо от записи PERIOD_CURRENT или _Period будет правильно.
P.S. В сд надо оформить?
Если Bars() возвращает 0, тогда приходит ошибка 4001 (ERR_INTERNAL_ERROR 4001 Неожиданная внутренняя ошибка).
Но через раз Bars() всё-таки возвращает кол-во баров и тогда ошибки нет (Bars() не меняет статус ошибки).
"Неожиданность" ошибки еще раз наводит на мысль, что что-то не успевает дойти и удаляется, вследствие чего возникает ошибка. Насколько я понял, Вам нужно узнавать количество баров на D1..., а обязательно это делать на каждом тике? Как вариант, напишите функцию, которая будет запрашивать данные раз в минуту или реже. И посмотрите, будет ли возникать ошибка.
МТ4 билд 722, ME4 билд 989
Пытаюсь копировать данные текущего нулевого бара:
Принтуется n=0 т.е. данные не копируются.
Если вместо PERIOD_CURRENT записать _Period то работает.
Если копировать данные не нулевого бара (time[1] и др.) то независимо от записи PERIOD_CURRENT или _Period будет правильно.
P.S. В сд надо оформить?
Что делать? Как иначе узнать кол-во баров на таймфрейме D1?
Индюк запущен на D1?
Нет конечно. В этом весь смысл. Ибо когда на D1 запущен сам индюк, у нас банально есть "const int rates_total, // размер входных таймсерий".
Ну вот конкретный пример использования.
Мы инициализировали пару индикаторов и получили их хендлы (тут всё ОК). Далее в функции онтик надо убедиться, что к моменту вызова на требуемых хендлах(внешних индюках) уже посчитаны все данные. И вот что я делаю:
Причём, в данном случае hDayTrand - это хендл рекурсивный (этот же индюк, только именно на D1 подгружен).
Всё вроде делаю согласно документации и примерам из терминала и согласно рекомендациям. Результат - вся эта фигня ругается в журнале и жрёт мегабайты в минуту.
Нет конечно. В этом весь смысл. Ибо когда на D1 запущен сам индюк, у нас банально есть "const int rates_total, // размер входных таймсерий".
Ну вот конкретный пример использования.
Мы инициализировали пару индикаторов и получили их хендлы (тут всё ОК). Далее в функции онтик надо убедиться, что к моменту вызова на требуемых хендлах(внешних индюках) уже посчитаны все данные. И вот что я делаю:
Причём, в данном случае hDayTrand - это хендл рекурсивный (этот же индюк, только именно на D1 подгружен).
Всё вроде делаю согласно документации и примерам из терминала и согласно рекомендациям. Результат - вся эта фигня ругается в журнале и жрёт мегабайты в минуту.