
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Владимир, но ведь в тестере проблема не возникает... Откуда такая беда??? Или от того, что в тестере только один советник?
Я и в СД высказал предположение что изменения были только в том, что поставил второй советник на другую пару...
В одном терминале (на периоде М15 стояли советники) на одном символе не сработало - я на 99% процентов уверен, что проблема в том, что при использовании чужого таймфрейма нужно всё время "поддёргивать" историю. Думаю это лучше делать через CopyTime().
Это не ошибка. Вы работаете на чужом таймфрейме. В таком случае нужно самостоятельно заботится о том, чтобы данные по чужому таймфрейму были актуальными.
Альтернатив, лично я, не вижу.
Не факт, неизвестно как SERIES_LASTBAR_DATE работает. Очень может быть, что ничего обновлять не надо, потому-что время последнего бара можно рассчитать используя TimeCurrent() указанного символа. Поинтересоваться бы у разработчиков.
Но так же пока четким неоспоримым фактом остается то, что если двум переменных присвоено тру, то вместе (при проверке &&) эти переменные тоже дадут тру.
Проблема с отпаданием кэша других инструментов/ТФ действительно существует.
При чем, проверка на ошибки и ожидание подгрузки в цикле помогает не всегда. Мы в сервис-деске общались, но со стороны MQ ни каких подвижек не было, только одна подсказка:
Подозрение такое, что исторические данные выгружаются по таймауту.
Есть 2 решения:
1. обращаться к данным чаще,чем 1 раз в 3 минуты
2. навесить на данные какой-нибудь очень простой индикатор. Volume, например. Там никакого расчёта нет, занят всего один буфер. Наличие индикатора удержит исторический кеш в памяти вне зависимости от частоты обращения
2-й совет не работает, индикаторы вызываются постоянно, но в какой-то момент кэш отваливается и данные получить становится невозможно.
Решил проблему вот таким костылем - вызываю каждые 150 секунд вот такой код для всех задействованных инструментов/ТФ:
Работает достаточно быстро, ошибка 4806 после этого апдейта вроде бы пропала.
Прошу вас прокомментировать ещё одну непонятку.
Bars
Возвращает количество баров в истории по соответствующему символу периоду. Существует 2 варианта функции.
Интересует только второй вариант.
Текст советника
Я так понимаю, что время 00:00:00 принадлежит наступившим суткам точно так-же как и время 00:00:01
Но ... предложенные принты не согласны с этим.
Получается что между 2016.06.22 00:00:00 и 2016.06.24 00:00:00 ТРИ дневных бара, а между 2016.06.22 00:00:01 и 2016.06.24 00:00:00 всего ДВА...
Или я чего-то не так понимаю???
А если к времени текущего бара прибавить по секунде
то получается вот что
Вроде как время 2016.06.24 00:00:01 принадлежит уже следующему бару что-ли???
Верхняя граница времени не входит в интервал в котором определяется количество баров.
Дмитрий, а не странно это? Новый бар появился, но считать мы его пока не будем.
Слушайте, а не это-ли является причиной такого поведения SeriesInfoInteger(_Symbol, PERIOD_D1, SERIES_LASTBAR_DATE); ? Новый бар появился, тик имеется код выполняется, а время пока не учитывается???
Ну вот и барабашка сдулся...И от него пошёл полный игнор...
Владимир, хоть на этот вопрос можете ответить???
А CopyRates() дёргает эту самую историю??? Там ведь в структуре время присутствует...
Ну вот и барабашка сдулся...И от него пошёл полный игнор...
Владимир, хоть на этот вопрос можете ответить???