
Эта статья открывает целый цикл, посвящённый созданию полноценного торгового фреймворка. Данная библиотека станет основой для создания своих торговых роботов, работающих в торговом терминале MetaTrader 5.
Зачем нужны торговые роботы
Торговые роботы пользуются всё большей популярностью среди трейдеров. А всё из-за того, что они избавляют от значительного психологического давления, которое испытывает трейдер совершая сделки в реальном времени.
Кроме того роботы полезны тем, что могут совершать сделки в отсутствии трейдера на своём месте. Или же совершать торговые операции в ночное время.
Торговый фреймворк. Общая структура проекта
Торговый фреймворк имеет следующую структуру.

- Папка «Classes» — будет содержать в себе все необходимые классы
- Папка «Defines» — в ней будут находиться файлы, в которых пропишутся необходимые константы
- Папка «Enums» — будет содержать файлы, для указания требуемых перечислений
- Папка «Helpers» — будет содержать файлы функций — помощников
- Папка «Parameters» — в ней будет находиться класс настроек торгового робота
- Папка «Strategy» — предназначена для всех торговых стратегий
Папка «Classes» в свою очередь содержит иные папки. Это:
- Папка «Account» — будет содержать файл одноимённого класса. Его основная задача будет состоять в предоставлении необходимой информации об аккаунте трейдера
- Папка «Date» — будет содержать файл класса «Date». Его основная задача будет состоять в обработке даты и времени
- Папка «File» — будет содержать файл класса «File. Понадобиться для записи данных в файл и извлечении их из него.
- Папка «Language» — будет содержать файл класса «Language. Необходим для перевода торговых роботов на разные языки.
- Папка «List» — будет содержать файл класса «List«. Он понадобится для создания списка открытых и отложенных ордеров.
- Папка «Log» — будет содержать файл класса «Log«. Необходим для фиксации ошибок и предупреждений, возникающих в процессе работы торгового робота.
- Папка «Node» — будет содержать файл класса «Node«. Основа для создания класса «List«.
- Папка «Notification» — будет содержать одноимённый класс. Понадобится для отправки сообщений на email, push-сообщений, вывода сообщений в окно терминала.
- Папка «Order» — будет содержать файл класса «Order«. В нём будут храниться все данные открытых и отложенных ордеров.
- Папка «Filter» — будет содержать файл класса «Filter«. Будет использоваться для фильтрации торговых сигналов.
- Папка «Signal» — будет содержать файл класса «Signal«. Основа для создания торговых стратегий.
- Папка «Symbol» — будет содержать файл класса «Symbol«. Будет служить помощником в получении данных о рабочем инструменте.
- Папка «Tick» — будет содержать файл класса «Tick«. В нём будут храниться данные нескольких последних тиков
- Папка «Timer» — будет содержать файл одноимённого класса. Понадобится для проверки последних данных рабочих инструментов (не дожидаясь очередного запуска функции OnTick()).
- Папка «Close» — будет содержать файл класса «Close«. Он будет отвечать за частичное или полное закрытие имеющихся позиций
- Папка «Open» — будет содержать файл класса «Open«. Он будет отвечать за открытие и наращивание позиций
- Папка «Modify» — будет содержать файл класса «Modify«. Он будет отвечать за модификацию стоп-лоссов, тейк-профитов и отложенных ордеров
После того, как весь этот функционал будет реализован, можно будет перейти к заключительному этапу создания торгового фреймворка.