Как сделать вывод на чарт моноширинным шрифтом? - страница 7

 
Renat Fatkhullin:

А в чем проблема подумать и кардинально все улучшить?

Тут уже есть типа библиотека MQL4-MQL5 в режиме «работает и замечательно», что волосы рвать приходится. Народ на полном серьезе ее использует для сравнения скорости обоих платформ.

Вот и счас вы предлагаете не думать, а сделать очередную поделку, с которой будут носиться, заявляя «в МТ5 медленнее».


Ничего не понял. Я предлагаю, еще раз, если у fxsaber будет время и желание:

1. Сделать библиотеку для МТ5 (опционально для МТ4), которая в режиме тестера/оптимизатора отключала бы ненужные функции (пока графику)

2. Для этого обернуть эти затратные функции в дефайны и в зависимости от режима работа включать их или не включать

Не нужно так эмоционально подходить к вопросу, никто на МТ5 не наезжает.

 
fxsaber:

Есть универсальный инструмент, который одной строкой позволяет измерять быстродействие кода в тестере. Там удалось многое увидеть. В частности, что одиночный прогон медленнее оптимизационного.

По теме комментария, разработчики дали ответ. Пока же сам ускоряю оптимизацию в 1.5-2 раза одной строкой.

И в СД рассказали про важный для быстродействия нюанс.


Переживать по поводу микросекунд выполнения функций разумно только в режимах Оптимизации. В реал-тайме же без разницы. И Comment никакой роли на быстродействие советника в реал-тайме не играет, даже если будет еще на порядок медленнее.


А вот то, что почти никто не пишет советники так, чтобы они в тестере выполнялись максимально быстро - факт.

Составьте пожалуйста FAQ, как этого добиться. Пусть все мысли будут в одном месте. Выложим в ваш блог, в другие места, я могу ролик сделать на youtube и выложим на канал MQ. У вас, несомненно, огромный опыт именно в таких системных вещах, давайте поделимся на общее благо!
 
Alexey Volchanskiy:
Составьте пожалуйста FAQ, как этого добиться. Пусть все мысли будут в одном месте.

Есть замечательная ветка как раз для этого. Возможно, кто-нибудь потратит свои огромные силы и время на составление FAQ по разделам на основе многих постов этой ветки.


А для быстродействия рецепт использую всегда один - TesterBenchmark + профайлер. И, конечно, находить разумную середину между особенностями тестера и реала. MT4Orders так и написан. Там ставка была сделана на быструю работу в тестере и идеальную работу на реале. Для этого нужно понимать, что некоторые (иногда дорогостоящие) проверки в том же тестере делать не нужно, что необходимы на реале. За счет этого получается сильно экономить. Ну и кеширование той же истории и т.д. Т.е. нужно писать библиотеки, которые в своих потрохах иногда имеют разные логики для тестера и реала. Trade.mqh, к сожалению, не такая библиотека.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.24
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
fxsaber:

Есть замечательная ветка как раз для этого. Возможно, кто-нибудь потратит свои огромные силы и время на составление FAQ по разделам на основе многих постов этой ветки.


А для быстродействия рецепт использую всегда один - TesterBenchmark + профайлер. И, конечно, находить разумную середину между особенностями тестера и реала. MT4Orders так и написан. Там ставка была сделана на быструю работу в тестере и идеальную работу на реале. Для этого нужно понимать, что некоторые (иногда дорогостоящие) проверки в том же тестере делать не нужно, что необходимы на реале. За счет этого получается сильно экономить. Ну и кеширование той же истории и т.д. Т.е. нужно писать библиотеки, которые в своих потрохах иногда имеют разные логики для тестера и реала. Trade.mqh, к сожалению, не такая библиотека.

Вот я к этому и клонил в предыдущих постах. Делать FAQ по указанной ветке - задача максимум. Давайте возьмем скромную задачу - сделать FAQ по ускорению оптимизации. Вы просто пишите мысли, если есть код - добавляйте код. Я это постараюсь суммировать, причесать, дальше согласуем и выложим. Ролик я сделаю, опыт большой, без проблем.
 
Alexey Volchanskiy:
Давайте возьмем скромную задачу - сделать FAQ по ускорению оптимизации.

Альтруизм - это иногда хорошо. Но время принадлежит не мне, а Семье.

Скромными кодами и рецептами делюсь. Это видится достаточным.

Никакими секретами не владею.

 
fxsaber:

И правильно делает. Это так же логично, как не делать ChartRedraw после изменения свойств объекта. Используя терминологию

ChartRedraw должен вызываться после массовых write, а не после каждой.

Да, но если у меня маленький канвас, скажем, 130х80 пикселей, что составляет менее 1% от общего окна, и мне нужно выводить в него текущую информацию. Получается, что в МТ4 я могу это сделать без перерисовки всего экрана с помощью Update(false), а в МТ5 мне придется каждый раз перерисовывать весь экран. А это уже на пару порядков более ресурсоёмко. И это уже не тест, а рабочая тема.
 
Nikolai Semko:
Да, но если у меня маленький канвас, скажем, 130х80 пикселей, что составляет менее 1% от общего окна, и мне нужно выводить в него текущую информацию. Получается, что в МТ4 я могу это сделать без перерисовки всего экрана с помощью Update(false), а в МТ5 мне придется каждый раз перерисовывать весь экран. А это уже на пару порядков более ресурсоёмко. И это уже не тест, а рабочая тема.

Уверен, что никогда экран не перерисовывается частично при канвасе и любом другом действии.

 
fxsaber:

Альтруизм - это иногда хорошо. Но время принадлежит не мне, а Семье.

Скромными кодами и рецептами делюсь. Это видится достаточным.

Никакими секретами не владею.


Скромность - это здорово! Я тоже скромный чел. Альтруизм - это к усопшей матери Терезе в большинстве случаев. Хотя, иногда и у меня прорастают корни этой нехорошей болезни - альтруизма )))

 
fxsaber:

Уверен, что никогда экран не перерисовывается частично при канвасе и любом другом действии.


Да, был не прав. Ошибся я с утверждением, что ResourceCreate без ChartRedraw в MT4 перерисовывает каждый раз канвас. Он это делает от случая к случаю, тогда как МТ5 этого вообще не делает. 

Да, конечно, я туплю. Ведь на уровне железа контекст экрана не способен менять лишь часть экрана, а только весь полностью.
Это я понял когда ввел небольшую задержку Sleep(10):

Файлы:
Причина обращения: