Ошибки, баги, вопросы - страница 2707
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я её и не использую. Код для воспроизведения проблемы приложен.
Замените SocketTlsRead на SocketTlsReadAvailable
Замените SocketTlsRead на SocketTlsReadAvailable
А можно поподробнее? В примере документации использована именно SocketTlsRead. Почему там не использовалась SocketTlsReadAvailable?
В каких случаях следует использовать одну функцию, а в каких другую?
Каким образом писать универсальный код для блокирующего чтения из сокета, подходящий и для защищенных и незащищенных соединений - у нас ведь нет аналогичной функции SocketReadAvailable?
PS. Заменил функцию. Ошибка не пропала. Прикладываю обновленный код. GetLastError возвращает 0.
В визуальном тестере вызов из индикатора функции CopyTicksRange завершается с ошибкой 4014 (ERR_FUNCTION_NOT_ALLOWED).
Тот же индикатор нормально работает в онлайне на том же инструменте. В чем затык? Запрет на эту функцию в тестере? Не нашел упоминания об этом в справке.
В визуальном тестере вызов из индикатора функции CopyTicksRange завершается с ошибкой 4014 (ERR_FUNCTION_NOT_ALLOWED).
Тот же индикатор нормально работает в онлайне на том же инструменте. В чем затык? Запрет на эту функцию в тестере? Не нашел упоминания об этом в справке.
Тест по реальным тикам?
Вот именно, что это не мой код, а из примера разработчиков (у сокетов от MQ - некоторые неинтуитивные особенности, которые выясняются иногда на форуме, поэтому обратился к стандартному примеру). SocketTlsHandshake я пробовал - он у меня всегда во всех условиях возвращает false и не оказывает никакого влияния на решение проблем. Поскольку возвращаются данные сертификата, рукопожатие проходит. Даже заголовок судя по длине приходит, но просто не возвращается в MQL-код. Код ошибки слишком общий, и сам факт ошибки сомнителен. Нужен взгляд изнутри.
Да, я тоже удивился, что без SocketTlsHandshake сертификат возвращается.
А с функцией SocketTlsHandshake взывает ошибку.
Какая то не явная логика в поведении.
UPD:
Рекомендацию Ильяса увидел.
Да без этой функции, с коннектом проблем нет.
Проблема в чтении.
Замените SocketTlsRead на SocketTlsReadAvailable
Пробовал я так же заменять на SocketTlsReadAvailable
Поведение тоже самое что и с SocketTlsRead
UPD:
Эта же проблема есть при использовании SocketTlsHandshake на другой порт.
Предлагаю добавить конкретики в автоматическую валидацию продуктов в маркете. Помимо общих ошибок, сообщаемых валидатором, настоятельно требуется контекст выполняемой проверки и логи. В частности, я не могу уже пару лет обновить один индикатор из-за ошибки "tester takes too long time". Первая версия была загружена еще при "человеческом" модерировании и нареканий не вызывала. Критерии автовалидатора для выдачи данной ошибки абсолютно неясны.
Вот такой конкретный вопрос: какое количество тиков за какое количество времени на каком аппаратном обеспечении должен обеспечивать продукт, чтобы не возникало "tester takes too long time"?
Индикатор предназначен для обработки тиков алгоритмом MapReduce, используются целочисленные вычисления, так что ужимать там нечего, если только не выбросить сам алгоритм. Профайлер использовался, был добавлен троттлинг, чтобы пересчитывать массив новых тиков с заданным периодом. Безрезультатно.
На моем компе год тестируется за несколько минут. Что на самом деле происходит в автовалидаторе и почему он тормозит, невозможно в данный момент узнать.
Отсутствие нормальной поддержки продуктов - это проблема как для пользователей, так и для MQ - она сказывается на реализации.
Разве так должно быть?
Лог:
Двойной вызов конструктора и деструктора, как будто два объекта создаётся и удаляется. При использовании new и delete всё хорошо.
Билд 2380.
как будто два объекта создаётся и удаляется.
Так и есть.
Так и есть.
А мой объект создаётся вторым: