Ошибки и предложения по улучшению CopyTicks() и CopyTicksRange() после билда 1485. - страница 3
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за сообщение, ошибку исправили - теперь будет работать и в индикаторах. Обновление будет выпущено в ближайшее время.
Кажется, я попал по адресу. Уважаемые форумчане, долго бился над проблемой самостоятельно, но никак не получается ее решить. Надеюсь, поможете.
Ситуация такая: брокер Финам (Whotrades), счет ММА. Работаем с 26ю российскими бумагами, т.е. открыто 26 окон и к каждому подвешена копия советника. Они пользуются общей библиотечкой на C++, в том числе, в которой создается общее окно для управления и выдачи отладочной информации.
Некоторые параметры стратегии зависят напрямую от ленты тиков, поэтому очень важно, чтобы все тики проходили через алгоритм. Конечно же, было неожиданностью узнать, что OnTick() работает далеко не на каждом тике, да и не всегда, даже, на тике. В результате пришел к необходимости использования функций CopyTicks и CopyTicksRange по таймеру. Недюжинными усилиями (а нигде это не написано), было узнать, что datetime*1000 это как раз количество миллисекунд с 1970 года, но не суть.
Финалом того, что сейчас мы имеем является блок кода, который, на OnTimer, начиная с 10 утра начинает запрашивать последние тиковые данные.
Проблема же в том, что, почему-то, это важно, в первый день после перезапуска метатрейдера, по некоторым бумагам, тиковые данные начинают приходить только с 11 утра (плюс-минус), следующий день - все нормально, начинается все с 10 утра. Список этих бумаг никак не фиксирован, в какой-то первый день могут не прийти тики по одним бумагам, в какой-то - по другим.
Я думал, что проблема в кешировании тиков. Я думал, что проблема с неправильным отсчетом времени, но это оказалось не так. Более того, вроде бы, если бы CopyTicks(Range) не могли бы вернуть данные, они могли бы вернуть ошибку (-1), и все было бы понятно. Но возвращается 0, массив тоже нулевого размера и GetLastError возвращает ERR_SUCCESS. Т.е. просто, как будто бы этих тиков нет, что странно, т.к. в ленте в окне они присутствуют.
Я в растерянности. Надеюсь, подскажете, что делать, или, хотя бы, направление, в котором двигаться.
Если нужно предоставить код, я, следующим комментарием, подчищу его от "лишних" команд и выложу.
Спасибо!
Да, код желателен. Счет реальный или демо? Какой билд терминала?
Честно, не знаю, работает ли здесь кто-то с Вашим брокером. Если никто здесь не среагирует на Ваш пост - пишите в СервисДеск, можете со ссылкой прямо на свое сообщение. Им также нужно будет предоставить код.
Да, код желателен. Счет реальный или демо? Какой билд терминала?
Честно, не знаю, работает ли здесь кто-то с Вашим брокером. Если никто здесь не среагирует на Ваш пост - пишите в СервисДеск, можете со ссылкой прямо на свое сообщение. Им также нужно будет предоставить код.
Счет реальный, билд последний, 1525. Я думаю, что вот как надо поступить. Сделать голый код взятия тиков без алгоритма стратегии. Запустить его. Если и он не заработает, то тогда в сервис деск. Если он заработает - искать, возможно, баги у себя.
Спасибо, что сказали про сервис деск, я не знал, что так можно. Я смотрел на сайте metaquotes, там все контакты, это телефоны на кипре и в китае, ни одного е-мейла.
С такими вопросами лучше сразу в сервис-деск с кодом для воспроизведения.
Счет реальный, билд последний, 1525. Я думаю, что вот как надо поступить. Сделать голый код взятия тиков без алгоритма стратегии. Запустить его. Если и он не заработает, то тогда в сервис деск. Если он заработает - искать, возможно, баги у себя.
Спасибо, что сказали про сервис деск, я не знал, что так можно. Я смотрел на сайте metaquotes, там все контакты, это телефоны на кипре и в китае, ни одного е-мейла.
Кажется, я попал по адресу. Уважаемые форумчане, долго бился над проблемой самостоятельно, но никак не получается ее решить. Надеюсь, поможете.
Ситуация такая: брокер Финам (Whotrades), счет ММА. Работаем с 26ю российскими бумагами, т.е. открыто 26 окон и к каждому подвешена копия советника. Они пользуются общей библиотечкой на C++, в том числе, в которой создается общее окно для управления и выдачи отладочной информации.
Некоторые параметры стратегии зависят напрямую от ленты тиков, поэтому очень важно, чтобы все тики проходили через алгоритм. Конечно же, было неожиданностью узнать, что OnTick() работает далеко не на каждом тике, да и не всегда, даже, на тике. В результате пришел к необходимости использования функций CopyTicks и CopyTicksRange по таймеру. Недюжинными усилиями (а нигде это не написано), было узнать, что datetime*1000 это как раз количество миллисекунд с 1970 года, но не суть.
Финалом того, что сейчас мы имеем является блок кода, который, на OnTimer, начиная с 10 утра начинает запрашивать последние тиковые данные.
Проблема же в том, что, почему-то, это важно, в первый день после перезапуска метатрейдера, по некоторым бумагам, тиковые данные начинают приходить только с 11 утра (плюс-минус), следующий день - все нормально, начинается все с 10 утра. Список этих бумаг никак не фиксирован, в какой-то первый день могут не прийти тики по одним бумагам, в какой-то - по другим.
Я думал, что проблема в кешировании тиков. Я думал, что проблема с неправильным отсчетом времени, но это оказалось не так. Более того, вроде бы, если бы CopyTicks(Range) не могли бы вернуть данные, они могли бы вернуть ошибку (-1), и все было бы понятно. Но возвращается 0, массив тоже нулевого размера и GetLastError возвращает ERR_SUCCESS. Т.е. просто, как будто бы этих тиков нет, что странно, т.к. в ленте в окне они присутствуют.
Я в растерянности. Надеюсь, подскажете, что делать, или, хотя бы, направление, в котором двигаться.
Если нужно предоставить код, я, следующим комментарием, подчищу его от "лишних" команд и выложу.
Спасибо!