Как Вы учили язык MQL4/5? - страница 7

 
Georgiy Merts #:

Нет. Класс CTradeProcessor написан очень давно, фактически, сразу с появлением 600го билда. 

С тех пор я просто его использую, и даже не помню, что там и как, и чем отличаются, скажем, блоки, отвечающие за МТ4 и МТ5 (пары файлов MT5TradeProcessor.mq. и  MT4TradeProcessor.mq. )

Тем и хорош ООП-подход, что у нас есть интерфейс (выше выкладывал), а он при сборке возьмёт все необходимое, нам думать ничего не надо. 

ООП хорош в высокоуровневых ЯП, например в питоне все есть ООП :) когда это низкоуровневый ООП - пиши пропало с точки зрения обычного юзера терминала.  Просто простыни бессмысленного и беспощадного кода. Это же никакая нервная система не выдержит :)
 
Aleksandr Slavskii #:

1. Не пользуются в основном адепты MQL 4. Им в пятёрке не удобно всё.

4 никогда не пользовался, в 5 начинал с CTrade, быстро отказался. Напрямую удобнее и быстрее.

По поводу мэджика - да, напутал, это к CPositionInfo претензия, при неттинге к использованию непригодно.
 
Maxim Dmitrievsky #:
Для написания ботиков лучше заходят всякие скриптовые ЯП.

QUIK с его Lua вам в руки ))

 
JRandomTrader #:

QUIK с его Lua вам в руки ))

Это какое-то орудие самоубийства из зада
 
JRandomTrader #:

QUIK с его Lua вам в руки ))

И сразу покупаем новый комп с AMD Ryzen Threadripper 96 ядер ))

 
Maxim Dmitrievsky #:
Кто пользовался пишут, что неудобная 
С ходу непонятно как установить несколько мэджиков, например 

Вариантов установить несколько магиков много. Самый простой вписывать нужный магик в нужный момент. Если пользуетесь СБ и классом CTrade то перед каждым открытием позиции, открытием ордера, перед закрытием позиции или удаления ордера… Так же перед изменением позиции или ордера поставьте SetExpertMagicNumber(magic). И достаточно сложный для слабо понимающих ООП вариант, это несколько объектов и в каждом из них свой магик. Этот вариант не только для использования CTrade но и для своих библиотек.

 
Alexey Viktorov #:

Вариантов установить несколько магиков много. Самый простой вписывать нужный магик в нужный момент. Если пользуетесь СБ и классом CTrade то перед каждым открытием позиции, открытием ордера, перед закрытием позиции или удаления ордера… Так же перед изменением позиции или ордера поставьте SetExpertMagicNumber(magic). И достаточно сложный для слабо понимающих ООП вариант, это несколько объектов и в каждом из них свой магик. Этот вариант не только для использования CTrade но и для своих библиотек.

Да, уже разобрался. Но немного негодовал, почему нужно лезть в классы и смотреть там, а не использовать готовое терминальное. Типа бай 100 лотов с таким-то мэджиком и селл 100 лотов с другим. Зачем тогда терминал, я могу подключаться так через любое апи к любому брокеру на любом ЯП. Границы размыты.
 
Maxim Dmitrievsky #:
Да, уже разобрался. Но немного негодовал, почему нужно лезть в классы и смотреть там, а не использовать готовое терминальное. Типа бай 100 лотов с таким-то мэджиком и селл 100 лотов с другим. Зачем тогда терминал, я могу подключаться так через любое апи к любому брокеру на любом ЯП. Границы размыты.

Вы про какие АПИ говорите? Подключение СБ далеко не АПИ… Это всего лишь пародия на ООП. Я совсем недавно начал чуток понимать возможности ООП и скажу я вам, это увлекательно.

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

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
  • www.mql5.com
Класс CTrade является классом для упрощенного доступа к торговым функциям. Класс CTrade обеспечивает упрощенный доступ к торговым функциям...
 
Alexey Viktorov #:

Вы про какие АПИ говорите? Подключение СБ далеко не АПИ… Это всего лишь пародия на ООП. Я совсем недавно начал чуток понимать возможности ООП и скажу я вам, это увлекательно.

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

Апи любого брокера, без терминала 
Ну и где в документации описана возможность установки разных мэджиков для ордеров? Я то как раз ее читал. 
 
Maxim Dmitrievsky #:
ООП хорош в высокоуровневых ЯП, например в питоне все есть ООП :) когда это низкоуровневый ООП - пиши пропало с точки зрения обычного юзера терминала.  Просто простыни бессмысленного и беспощадного кода. Это же никакая нервная система не выдержит :)

Напрасно ты так, дружище. 

Тебе уже предложили стандартный класс CTrade - который предоставляет именно то, что тебе нужно, "простые функции Бай-Селл". Мой ТрейдПроцессор - делает абсолютно тоже самое (с учётом некоторых моих предпочтений). 

Инкапсуляция - великая вещь. Сперва пишется интерфейс - фактически, чисто принципы, на которых будут взаимодействовать части программы. Вот, в данном случае CTrade. После этого тем, кто будет писать CTrade, и тем, кто его будет использовать - совершенно не надо ни о чём договариваться - они работают исключительно через установленный интерфейс класса, и любые изменения не мешают друг другу. 

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

Вот, прямо по теме ветки - для процедурного программирования надо знать, в каком терминале ты находишься. И если в МТ4 - то использовать одни функции, а если в МТ5 - оооо... начинается вселенский вой. 

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

Или, вот, тут верно заметили - в торговой истории - сам чёрт ногу сломит. 

Хорошо, у меня уже давно написан класс CTradeHistoryI, который предоставляет интерфейс для работы с историей, и опять же - не надо думать, где мы, в каком терминале, и какие функции использовать - просто пользуемся этим интерфейсом. 

ООП - как раз предоставляет огромное удобство, и как раз уменьшает количество необходимого кода! А то, что файл за собой тянет сотню других (и реально кода, и в самом деле, может быть на порядок больше) - так то пусть голова болит у терминала, у компьютера, у автора класса... Нам об этом думать не требуется. Мы используем именно предоставленный интерфейс. 

Кстати, функции МТ4 (и МТ5) - это ведь и есть предоставленный интерфейс, что там реально внутри - никто на этом форуме и не знает... Все их просто используют, как "черные ящики". Именно благодаря ООП-подходу.