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

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

Я не слишком знаком с интерфейсом CTrade, подозреваю, что надо взять просто несколько объектов CTrade - каждый со своим магиком. 

Лично у меня класс-агреггатор всей ТС называется CEAPartsFactory - "фабрика частей эксперта". Задача этого класса - создание генератора входов, контроллера сопровождения, выходов, контроллера стоп-торгов. Так вот, каждой фабрике приписывается при создании свой магик. Для того, чтобы в одном эксперте работало сразу несколько магиков (или даже несколько ТС) - я просто создаю две фабрики, и каждая отвечает за свой магик, создаёт свои части экспертов. 

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

Части экспертов, созданные фабриками, по очереди обращались к торговому процессору за действиями, указывая свои магики, но я об этом не думал - всё происходило "внутри" классов. 

 
Georgiy Merts #:

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


Обратите внимание: 

Где тут написано, что нужна дополнительная строчка в шапке, чтобы эта функция работала





Новичок не поймёт, что от него требуется. И, если не поленится (или не побоится, много онлайн-интровертов) - спросить на форуме, что не так, почему компилятор ругается, а функция не работает. 


Даже документация для порога вхождения

 
Ivan Butko #:


Обратите внимание: 

Где тут написано, что нужна дополнительная строчка в шапке, чтобы эта функция работала

Новичок не поймёт, что от него требуется. И, если не поленится (или не побоится, много онлайн-интровертов) - спросить на форуме, что не так, почему компилятор ругается. 

Не, ну CTrade - это класс объекта, который умеет торговать. Ясное дело, что его надо сперва объявить (создать)!

И компилятор совершенно правильно укажет, что вызывается функция у несозданного объекта! 

Или при создании - напишет, что создаётся непонятный объект, который непонятно, где брать. Конечно, нужен заголовочный файл, где объект CTrade будет описан. 

И в Хелпе этот файл также указан, просто на другой странице. (Там где "Декларация - Заголовок - Иерархия наследования") 

 
Georgiy Merts #:

Не, ну CTrade - это класс объекта, который умеет торговать. Ясное дело, что его надо сперва объявить (создать)!

И компилятор совершенно правильно укажет, что вызывается функция у несозданного объекта! 

Или при создании - напишет, что создаётся непонятный объект, который непонятно, где брать. Конечно, нужен заголовочный файл, где объект CTrade будет описан. 

И в Хелпе этот файл также указан, просто на другой странице. (Там где "Декларация - Заголовок - Иерархия наследования") 

Вот!

Вы сейчас объясняете, как профессионал. 

А особо одарённым не хватает дополнительного примечания:


Примечание

Успешное окончание работы метода Buy(...) не всегда означает успешное совершение торговой операции. Необходимо проверять результат выполнения торгового запроса (код возврата торгового сервера) вызовом метода ResultRetcode(), а также значение, возвращаемое методом ResultDeal().
...
...
(и дальше добавить)

Для работы функции необходимо в шапке кода вставить 
#include <Trade\Trade.mqh>  
CTrade            trade; 

А пользоваться функцией, прописывая trade.Buy(...);



Всё! Часть проблем с порогом вхождения решена.

 
Georgiy Merts #:

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

Я же не против. Это как раз по части переусложнения.

Большинству же нужны простые ф-ии бай/селл, так и другие типа подсчёта ордеров. Зачем писать циклы, если и так понятно как они считаются. Ещё одна стандартная ф-я подсчёта ордеров без объявления классов, циклов и проч. Это сильно ускоряет всё, делает код простым и читабельным. 
 
Maxim Dmitrievsky #:
Я же не против. Это как раз по части переусложнения.

Большинству же нужны простые ф-ии бай/селл, так и другие типа подсчёта ордеров. Зачем писать циклы, если и так понятно как они считаются. Ещё одна стандартная ф-я подсчёта ордеров без объявления классов, циклов и проч. Это сильно ускоряет всё.

Ну, вот, для этого класс CTrade и нужен... Как раз с этими самыми бай-селл. 

Не в курсе, но, наверно, и для подсчёта ордеров есть соответствующие стандартные классы. 

У меня есть класс CTradePosition - также предоставляющий интерфейс к компонентам позиции, опять же, независимо от того, на каком терминале работаем. Ордера по определённому символу получаются одной функцией. И опять же, главное преимущество ООП - что не надо знать, что там внутри этого класса происходит. Я просто говорю - давай число компонент позиции (ордеров в терминах MT4) - и получаю конкретное число. 

Единственное "усложнение" - выше верно замечено, объекты этих классов сперва надо создать (одна дополнительная строка с созданием), а чтобы создать - их сперва надо описать во включаемом файле (ещё одна строка с именем этого файла). 

 
Maxim Dmitrievsky #:
Я же не против. Это как раз по части переусложнения.

Большинству же нужны простые ф-ии бай/селл, так и другие типа подсчёта ордеров. Зачем писать циклы, если и так понятно как они считаются. Ещё одна стандартная ф-я подсчёта ордеров без объявления классов и проч. Это сильно ускоряет всё.

Это не ускоряет всё, а замедляет. Каждое такое ускорение должно выполняться до того как программист обратится к этой функции. Следовательно если в программе не используется такая функция, а она полюбому считается, то это лишние тормоза.

 
Alexey Viktorov #:

Это не ускоряет всё, а замедляет. Каждое такое ускорение должно выполняться до того как программист обратится к этой функции. Следовательно если в программе не используется такая функция, а она полюбому считается, то это лишние тормоза.

Как она считается, если она даже не вызывается 
 
Georgiy Merts #:

Ну, вот, для этого класс CTrade и нужен... Как раз с этими самыми бай-селл. 

Не в курсе, но, наверно, и для подсчёта ордеров есть соответствующие стандартные классы. 

У меня есть класс CTradePosition - также предоставляющий интерфейс к компонентам позиции, опять же, независимо от того, на каком терминале работаем. Ордера по определённому символу получаются одной функцией. И опять же, главное преимущество ООП - что не надо знать, что там внутри этого класса происходит. Я просто говорю - давай число компонент позиции (ордеров в терминах MT4) - и получаю конкретное число. 

Единственное "усложнение" - выше верно замечено, объекты этих классов сперва надо создать (одна дополнительная строка с созданием), а чтобы создать - их сперва надо описать во включаемом файле (ещё одна строка с именем этого файла). 

Я о том говорю, что это равносильно торговле через брокерское апи без терминала. Уровень сложности тот же. А терминал как бы должен упрощать вещи для челиков.
 
Ivan Butko #:

А особо одарённым не хватает дополнительного примечания:


Всё! Часть проблем с порогом вхождения решена.

Да, такие вещи должны быть в документации для тех, кто не в теме, это сильно понизит порог с нуля.