Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А вот с MT4 совсем другая картина.
Если на MT5 работа Comment и Canvas примерно одинаковая, то на MT4 Comment работает в 1000 раз быстрее. Делаю вывод, что в MT5 Comment реализован через внутренний BitMap, тогда как в MT4 как то по другому. Разница впечатляет. Наверно перенесу этот вопрос в тему баги.
Детальное объяснение тут: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364
Comment в МТ4 по сути фейковый и не вызывает перерисовки чарта.
Детальное объяснение тут: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364
Comment в МТ4 по сути фейковый и не вызывает перерисовки чарта.
а теперь делаем практические выводы
1. Неплохо бы серию функций, влияющих на быстродействие при тестировании, заменить на их #define аналоги
2. 90% присутствующих дам/господ в дефайнах, как хрю-хрю в апельсинах
4. На форуме есть монстр дефайнов fxsaber
5. Может, попросить его сделать и поддерживать библиотечку подобных дефайнов, чтобы простым смертным не надо было думать, в каком режиме работает программа?
Что думает комьюнити и fxsaber по такому предложению?
Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.
Вызвать коммент чтобы на него смотреть - это нормально.
Вызвать его 1000-10000 раз в секунду ненормально как логически (посмотреть не удастся), так и технологически - он вызывает большие расходы не отображение/перерисовку всего чарта(а не только своей строчки).
Нужно понимать, что ты делаешь. О чем я детально и написал в ответе.
Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.
Вызвать коммент чтобы на него смотреть - это нормально.
Вызвать его 1000-10000 раз в секунду ненормально как логически (посмотреть не удастся), так и технологически - он вызывает большие расходы не отображение/перерисовку всего чарта(а не только своей строчки).
Нужно понимать, что ты делаешь. О чем я детально и написал в ответе.
А вместо это вы предлагаете «дайте кусок кода чтобы и дальше не думать», проигнорировав объяснения, почему так делать неправильно.Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем.
Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?
Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем.
Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?
Не надо ждать от людей, что они будут все прям вот так понимать. Тут на форуме ООП дай бог понимают 20%. Это можно сравнить со знанием автомобиля. Все на них катаются, но единицы понимают, как работает тот же ДВС и доли % могут как-то, что-то починить.
Но это все ваши клиенты )
Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем.
Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?
А в чем проблема подумать и кардинально все улучшить?
Тут уже есть типа библиотека MQL4-MQL5 в режиме «работает и замечательно», что волосы рвать приходится. Народ на полном серьезе ее использует для сравнения скорости обоих платформ.
Вот и счас вы предлагаете не думать, а сделать очередную поделку, с которой будут носиться, заявляя «в МТ5 медленнее».
Тут уже есть типа библиотека MQL4-MQL5 в режиме «работает и замечательно», что волосы рвать приходится. Народ на полном серьезе ее использует для сравнения скорости обоих платформ.
Не аргументированное заявление.
Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?
Есть универсальный инструмент, который одной строкой позволяет измерять быстродействие кода в тестере. Там удалось многое увидеть. В частности, что одиночный прогон медленнее оптимизационного.
По теме комментария, разработчики дали ответ. Пока же сам ускоряю оптимизацию в 1.5-2 раза одной строкой.
И в СД рассказали про важный для быстродействия нюанс.
Переживать по поводу микросекунд выполнения функций разумно только в режимах Оптимизации. В реал-тайме же без разницы. И Comment никакой роли на быстродействие советника в реал-тайме не играет, даже если будет еще на порядок медленнее.
А вот то, что почти никто не пишет советники так, чтобы они в тестере выполнялись максимально быстро - факт.
Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.
Тут уже есть типа библиотека MQL4-MQL5 в режиме «работает и замечательно», что волосы рвать приходится. Народ на полном серьезе ее использует для сравнения скорости обоих платформ.
А я лично не жалею о проделанной работе. Эти, казалось бы, бесполезные бенчмарки в результате оказались вовсе не бесполезные. Т.к. много полезного выяснилось благодаря вашему детальному объяснению, в результате чего начали сходится некоторые пазлы. Нигде же этого не написано, вот и приходится все клещами вытягивать :)).
Например, хоть мне и стыдно признаться, но я не знал, что канвасовская функция Update() перерисовывает всё окно вне зависимости от размера канваса. Хотя, чтобы это понять, достаточно было посмотреть ее потроха в CCanvas. А осознание , как минимум, только этого факта поменяет логику работы и избавит меня от лишних телодвижений в некоторых реализациях, связанных с графикой. А Comment, собственно, здесь был ни при чем, он выступал в роли "лишь бы докопаться". Поэтому спасибо еще раз!
Вот только непонятным для меня осталось то, что если функция Update(false) в MT5 ни чего на экран не выводит, то в МТ4 перерисовывает, судя по значительно высокой скорости в сравнении Update(true), не всё окно, а только именно сам канвас. Т.е. получается, что функция ResourceCreate в МТ5 не выводит массив пикселей на экран без ChartRedraw(), а в МТ4 выводит. Мне кажется, это бы пригодилось бы и в МТ5.
ResourceCreate в МТ5 не выводит массив пикселей на экран без ChartRedraw(), а в МТ4 выводит.
И правильно делает. Это так же логично, как не делать ChartRedraw после изменения свойств объекта. Используя терминологию
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Renat Fatkhullin, 2017.12.05 02:51
рекомендуется не миксовать read/write команды, а делать раздельно массовые read и массовые write.
ChartRedraw должен вызываться после массовых write, а не после каждой.