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

 
Nikolai Semko:

А вот с MT4 совсем другая картина. 
Если на MT5 работа Comment и Canvas примерно одинаковая, то на MT4 Comment работает в 1000 раз быстрее. Делаю вывод, что в MT5 Comment реализован через внутренний BitMap, тогда как в MT4 как то по другому. Разница впечатляет. Наверно перенесу этот вопрос в тему баги.

Детальное объяснение тут: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

Comment в МТ4 по сути фейковый и не вызывает перерисовки чарта.

 
Renat Fatkhullin:

Детальное объяснение тут: https://www.mql5.com/ru/forum/1111/page2102#comment_6156364

Comment в МТ4 по сути фейковый и не вызывает перерисовки чарта.


а теперь делаем практические выводы

1. Неплохо бы серию функций, влияющих на быстродействие при тестировании, заменить на их #define аналоги

2. 90% присутствующих дам/господ в дефайнах, как хрю-хрю в апельсинах

4. На форуме есть монстр дефайнов fxsaber

5. Может, попросить его сделать и поддерживать библиотечку подобных дефайнов, чтобы простым смертным не надо было думать, в каком режиме работает программа?

Что думает комьюнити и fxsaber по такому предложению? 

 

Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.

Вызвать коммент чтобы на него смотреть -  это нормально.

Вызвать его 1000-10000 раз в секунду ненормально как логически (посмотреть не удастся), так и технологически - он вызывает большие расходы не отображение/перерисовку всего чарта(а не только своей строчки).

Нужно понимать, что ты делаешь. О чем я детально и написал в ответе.

 
Renat Fatkhullin:

Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.

Вызвать коммент чтобы на него смотреть -  это нормально.

Вызвать его 1000-10000 раз в секунду ненормально как логически (посмотреть не удастся), так и технологически - он вызывает большие расходы не отображение/перерисовку всего чарта(а не только своей строчки).

Нужно понимать, что ты делаешь. О чем я детально и написал в ответе.

А вместо это вы предлагаете «дайте кусок кода чтобы и дальше не думать», проигнорировав объяснения, почему так делать неправильно.

Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем. 

Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?

 
Alexey Volchanskiy:

Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем. 

Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?


Не надо ждать от людей, что они будут все прям вот так понимать. Тут на форуме ООП дай бог понимают 20%. Это можно сравнить со знанием автомобиля. Все на них катаются, но единицы понимают, как работает тот же ДВС и доли % могут как-то, что-то починить.

Но это все ваши клиенты )

 
Alexey Volchanskiy:

Ренат, вот у меня есть рабочий советник. Я лох и вообще ничего не знаю про эти отрисовки. Работает и замечательно. Загоняю на тест и вижу снижение быстродействия из-за описанных проблем. 

Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?

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

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

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

 
Renat Fatkhullin:

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

Не аргументированное заявление.

 
Alexey Volchanskiy:

Логично же сделать дефайн, который определяет, в каком режиме мы работаем? И в режиме тестирования/оптимизации просто ничего не выводит?

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

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

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


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


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

 
Renat Fatkhullin:

Причем тут дефайны, если люди не понимают инструмента и пытаются тестировать на скорость то, что нельзя тестировать.

Renat Fatkhullin:

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


А я лично не жалею о проделанной работе. Эти, казалось бы, бесполезные бенчмарки в результате оказались вовсе не бесполезные. Т.к. много полезного выяснилось благодаря вашему детальному объяснению, в результате чего начали сходится некоторые пазлы. Нигде же этого не написано, вот и приходится все клещами вытягивать :)).

Например, хоть мне и стыдно признаться, но я не знал, что канвасовская функция Update() перерисовывает всё окно вне зависимости от размера канваса. Хотя, чтобы это понять, достаточно было посмотреть ее потроха в CCanvas. А осознание , как минимум, только этого факта поменяет логику работы и избавит меня от лишних телодвижений в некоторых реализациях, связанных с графикой. А Comment, собственно, здесь был ни при чем, он выступал в роли "лишь бы докопаться". Поэтому спасибо еще раз!

Вот только непонятным для меня осталось то, что если функция Update(false) в MT5 ни чего на экран не выводит, то в МТ4 перерисовывает, судя по значительно высокой скорости в сравнении Update(true), не всё окно, а только именно сам канвас.  Т.е. получается, что функция ResourceCreate в МТ5 не выводит массив пикселей на экран без ChartRedraw(), а в МТ4 выводит. Мне кажется, это бы пригодилось бы и в МТ5. 

 
Nikolai Semko:

ResourceCreate в МТ5 не выводит массив пикселей на экран без ChartRedraw(), а в МТ4 выводит.

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Renat Fatkhullin, 2017.12.05 02:51

  • в МТ5 более правильная система изменения объектов на чарте и нужно четко понимать последствия микса read/write команд
    рекомендуется не миксовать read/write команды, а делать раздельно массовые read и массовые write.

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