Ошибки, баги, вопросы - страница 2099
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
можно ее доработать, если есть необходимость.
Наверное, все же правомерно говорить о корректности сравнения скоростных характеристик двух функций, когда их результаты совпадают. Допилите, пожалуйста.
Ребят, надоело в андроиде в мт5 постоянно вводить логин и пароль от www.mql5.com
Почему они постоянно слетают ???
Напишите в сервисдеск. Приложите логи. Спасибо.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2017.10.04 09:13
Много раз об этом писали. Не правят почему-то.
А еще я заметил странную особенность ChartXYToTimePrice. Время ее выполнения прямо пропорциональна количеству бар на графике.
Это говорит о "странности" алгоритма её вычисления. А именно о циклическом суммировании, что весьма странно для оптимального решения подобной задачи.
Скорость же функции XYToTimePrice одинакова вне зависимости от количества бар.
И, по правде сказать, скорость выполнения функций ChartGetInteger и ChartGetDouble тоже явно невероятно завышена и имеет очень странные особенности. Например функция
выполняется в 20-100 раз быстрее функции:
если МAX стоит после MIN:
но если поменять их местами, ситуация будет обратной.
т.е. вроде логично - такая же функция, которая вычисляется повторно, использует уже вычисленные и сохраненные данные из предыдущего вызова функции. Но просто это говорит о том, что происходят какие то сумасшедшие вычисления и создания кучи промежуточных данных и может быть даже массивов для вычисления простого значения double максимальной (или минимальной) цены графика, которая наверняка уже и так сидит уже в какой-нибудь переменной и нужно просто ее взять.
Хотя я и не исключаю, что данный эффект происходит из-за какой-то особенности профилирования и носит фейковый характер. Но тормознутость этих функций не фейковая.
Тормознутось функций запроса данных о чарте заключается в способе отправки и получения информации, а не в самой реализации. Сама реализация этих функций примитивна и не зависит от количества баров на графике.
Но так как график - это объект, информация от которого раздаётся по многим источникам, то всё управление построено на очередях сообщений. Пока предыдущий запрос не обработан, следующий ждёт.
Но если у вас идут подряд несколько запросов к одному и тому же графику, то вот эти последующие запросы исполняются очень быстро. Потому что между ними и первым запросом никто не успел вклиниться.
Тормознутось функций запроса данных о чарте заключается в способе отправки и получения информации, а не в самой реализации. Сама реализация этих функций примитивна и не зависит от количества баров на графике.
Но так как график - это объект, информация от которого раздаётся по многим источникам, то всё управление построено на очередях сообщений. Пока предыдущий запрос не обработан, следующий ждёт.
Но если у вас идут подряд несколько запросов к одному и тому же графику, то вот эти последующие запросы исполняются очень быстро. Потому что между ними и первым запросом никто не успел вклиниться.
Пусть так. Но от осознания этого легче не становится. Слава, ну поймите простого программиста правильно. Мой пример тестового индикатор из предыдущих сообщений четко показывает что среднее время выполнения запроса ChartXYToTimePrice() это 5000 - 10000 микросекунд ( при толщине свечи 1 пиксель и стандартном окне в MT на FullHD экране). Что можно сделать за такое время?
Ну вот, например, за это время можно сформировать изображение в том же экране из 500 закрашенных окружностей и вывести их на экран:

Пусть даже существует очередь, но почему так долго в очереди стоит?
На одной чаше весов попиксельное формирование 500 окружностей с выводом их на экран, а на другой простой запрос о двух цифрах. И весит это одинаково.
Вот сидит простой программист, чешет репу и пазлы сложить не может.
Пусть так. Но от осознания этого легче не становится. Слава, ну поймите простого программиста правильно. Мой пример тестового индикатор из предыдущих сообщений четко показывает что среднее время выполнения запроса ChartXYToTimePrice() это 5000 - 10000 микросекунд ( при толщине свечи 1 пиксель и стандартном окне в MT на FullHD экране). Что можно сделать за такое время?
Ну вот, например, за это время можно сформировать изображение в том же экране из 500 закрашенных окружностей и вывести их на экран:
Пусть даже существует очередь, но почему так долго в очереди стоит?
На одной чаше весов попиксельное формирование 500 окружностей с выводом их на экран, а на другой простой запрос о двух цифрах. И весит это одинаково.
Вот сидит простой программист, чешет репу и пазлы сложить не может.
Вы почувствовали разницу между синхронной командой и асинхронной.
Вы почувствовали разницу между синхронной командой и асинхронной.
Могли бы Вы привести список асинхронных функций.
Если правильно понимаю, то Object и Chart-функции (какие еще?) все асинхронные. Тогда не совсем понятно, почему ChartGet выполняется быстрее ChartXY?
Вы почувствовали разницу между синхронной командой и асинхронной.
Могли бы Вы привести список асинхронных функций.
Если правильно понимаю, то Object и Chart-функции (какие еще?) все асинхронные. Тогда не совсем понятно, почему ChartGet выполняется быстрее ChartXY?
CHARTEVENT_CHART_CHANGEЗдравствуйте! Начал изучать MQL5 с https://www.mql5.com/ru/articles/100. Запустил код, получил ошибку 4756, посмотрел в документации - легче не стало. Ладно, подумал, что начну с простого (Alert/Print...). Одна из важнейших функций это OrderSend. Начал искать по форуму\документации как использовать OrderSend. Наткнулся на эту статью https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions, там увидел код на открытие позиции Buy. Получил ошибку 4756 и retcode 10030. 10030 - понял, что это свойство OrderSend, но не понял как нужно использовать это свойство (смотрел чужой код), а самое главное для чего нужно. Тогда открыл https://www.mql5.com/ru/docs/trading/ordersend, скопировал код, запустил, все отлично, заработало.
Но так и не понял, почему появляется ошибка 4756 и как от нее нужно избавляться, а также 10030.
Посмотрел код между
и этим
Они по-моему практически идентичны, не вижу тех мест, в которых появляются эти ошибки (4756 и 10030). Ткните пальцем и объясните пожалуйста