Кто и как использует стандартные MQL классы при написании экспертов? - страница 2

 
forexman77:
А скорость оптимизации быстрее будет, если на классах делать?
Если имеется в виду тестер, то скорее без разницы. Но, если отвлечься от тестера, то оптимизация в случае использования ООП выглядит несколько веселее и проще.
 
Yuriy Asaulenko:
Если имеется в виду тестер, то без разницы. Но, если отвлечься от тестера, то оптимизация в случае использования ООП выглядит несколько веселее и проще.
Можно пример, чем веселее и проще? Давно хотел изучить классы, только не знаю нужно ли.
 
forexman77:
Можно пример, чем веселее и проще? Давно хотел изучить классы, только не знаю нужно ли.

Безусловно нужно, имхо. Классы - это объекты, имеющие свойства (и меняющие их по вашему желанию) и имеющие возможность менять свою функциональность  в зависимости от свойств. Реализовать это в процедурном стиле, если не невозможно, то весьма сложно и трудоемко.

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

ЗЫ Все современное программирование уже только на классах-объектах - Java, C++, C#, Phyton, Fortran, Pascal и пр.

 
Yuriy Asaulenko:

Безусловно нужно, имхо. Классы - это объекты, имеющие свойства (и меняющие их по вашему желанию) и имеющие возможность менять свою функциональность  в зависимости от свойств. Реализовать это в процедурном стиле, если не невозможно, то весьма сложно и трудоемко.

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

Спасибо!
 
forexman77:
Спасибо!
Да, не ответил. Включаемые файлы - это некая доп. функциональность. Совсем не обязательно классы (объекты).
 

Использую в каждом советнике класс cTrade. Очень продуманный и качественно сделанный класс. Спасибо разработчикам за него.

 
forexman77:

У меня вопрос чайника.

В чем преимущество  написания советников, индикаторов на классах(можно подробней, ну там алгоритмы быстрее будут работать или что-то другое)?

Сразу предупреждаю, классы и ООП совершенно не знаю.

Пример первый: торговые операции. С помощью класса CTrade можно просто купить или продать, не заботясь о том, как правильно нужно заполнить структуру MqlTradeRequest, а также о том, как правильно обработать ответ сервера. В процедурном стиле иногда до половины советника занимает код обрабатывающий эту структуру запроса.

Пример второй: контейнеры данных. Например можно добавлять в массив множество элементов, не утруждая себя переразметками этого массива и прочими необходимыми манипуляциями. 

Пример третий: есть специальные классы-контейнеры, доступ к данным которых происходит определенным образом. Например из словаря можно мгновенно достать элемент по его имени. А на основе списка сделать сверхбыстрый расчет индикатора по принципу FIFO. В процедурном стиле сделать это невозможно либо очень сложно. 

 
Замечу, что на производительность в первую очередь влияет выбранный алгоритм. Есть определенный классы задач, которые могут быть решены только с помощью специфических алгоритмов, вроде словаря или списка. Любое другое решение, например простой перебор будет провальным в плане производительности. С другой стороны данные алгоритмы реализованы только в ООП. Поэтому писать на ООП не только проще, но и гораздо быстрее в плане производительности, при условии что задача эффективно решается только при использовании специфических алгоритмов.
 

Вчера пришлось попытаться воспользоваться классом CSymbolInfo, рассмотрел внимательно его код и он мне показался очень странно спроектированным. 

CTrade - абсолютно широко и всегда используется. 

 
Yuriy Asaulenko:
Да, не ответил. Включаемые файлы - это некая доп. функциональность. Совсем не обязательно классы (объекты).

Дополню, в .mqh может содержаться набор функций, подключения библиотек импорта и dll, defines, определения структур и классов.

Главное, не определять в .mqh файлах никаких данных вроде

data.mqh

Причина обращения: