Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXX): Отложенные торговые запросы - управление объектами-запросами"

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes
Модератор
214564
MetaQuotes  

Опубликована статья Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXX): Отложенные торговые запросы - управление объектами-запросами:

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

Изначально я хотел сделать независимый класс для управления отложенными запросами, в котором будут сконцентрированы все методы для работы с ними. Но вышло так, что основной торговый класс CTrading библиотеки и создаваемый новый класс управления отложенными запросами, настолько имеют тесные связи друг с другом, что проще оказалось сделать новый класс управления объектами-отложенными запросами наследником основного торгового класса.

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

Помимо класса управления объектами отложенных запросов мы создадим маленький класс для организации паузы — чтобы не использовать в будущем функцию Sleep(), которая останавливает выполнение программы на время задержки, и объект-пауза позволит нам не зависеть от тиков, чтобы в выходные можно было тестировать код, требующий какого-либо ожидания — пауза будет контролироваться в таймере.

Автор: Artyom Trishkin

Олег Миронов
95
Олег Миронов  

Добрый день,

Спасибо за проделанную работу

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

С уважением и заранее спасибо

Artyom Trishkin
Модератор
49476
Artyom Trishkin  
Олег Миронов:

Добрый день,

Спасибо за проделанную работу

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

С уважением и заранее спасибо

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

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

Сергей Романов
9
Сергей Романов  

Артём, добрый день. Ваша работа бесценна! Благодарю за возможность развиваться и время, которое вы потратили, чтобы такие, как я, могли его качественно экономить.

Я с предложением: может опубликуем репозиторий с вашей либой на гитхаб? Что это даст:

  1. Ну, конечно, систему контроля версий.
  2. Возможность участвовать в развитии библиотеки DoEasy всем желающим.
  3. Возможность быстрого поиска по коду и доступ к самой актуальной версии в любое время.

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

Вы делаете большое дело, и мы вместе (таких желающих, как я немало) могли бы вложить собственное время ради общего блага с целью доработки DoEasy. Готов помочь в реализации предложенного.

Artyom Trishkin
Модератор
49476
Artyom Trishkin  
Сергей Романов:

Артём, добрый день. Ваша работа бесценна! Благодарю за возможность развиваться и время, которое вы потратили, чтобы такие, как я, могли его качественно экономить.

Я с предложением: может опубликуем репозиторий с вашей либой на гитхаб? Что это даст:

  1. Ну, конечно, систему контроля версий.
  2. Возможность участвовать в развитии библиотеки DoEasy всем желающим.
  3. Возможность быстрого поиска по коду и доступ к самой актуальной версии в любое время.

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

Вы делаете большое дело, и мы вместе (таких желающих, как я немало) могли бы вложить собственное время ради общего блага с целью доработки DoEasy. Готов помочь в реализации предложенного.

Здравствуйте. Спасибо за отзыв.

В данный момент рано говорить и думать о репозитории - библиотека находится в активной разработке, и пока я не создам и не опубликую всё задуманное, я не хочу отступать от намеченного плана. А многочисленные её исправления и доработки сторонними пользователями, лишь будут отвлекать автора от следования намеченным планам.

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий