- Общие принципы работы с локальными проектами
- План проекта веб-сервиса копирования сделок и сигналов
- Веб-сервер на основе nodejs
- Теоретические основы протокола WebSockets
- Серверная часть веб-сервисов на базе WebSocket-протокола
- Протокол WebSocket-ов на MQL5
- Клиентские программы эхо и чат-сервисов на MQL5
- Сервис торговых сигналов и тестовая веб-страница
- Клиентская программа сигнального сервиса на MQL5
Проекты
Программные продукты, как правило, развиваются в рамках стандартного жизненного цикла:
- Сбор и дополнение требований
- Проектирование
- Разработка
- Тестирование
- Эксплуатация
В результате постоянного совершенствования и расширения функционала обычно возникает необходимость систематизации исходных файлов, ресурсов и используемых сторонних библиотек (здесь имеются в виду не только библиотеки двоичного формата, но и, в более общем смысле, любые наборы файлов, например, заголовочных). Более того, отдельные программы интегрируются в некий общий продукт, воплощающий прикладную идею.
Структура и жизненный цикл проекта
Например, при разработке торгового робота зачастую требуется подключение готовых или собственных индикаторов, использование внешних алгоритмов машинного обучения подразумевает написание скрипта экспорта котировочных данных и скрипта для обратного импорта обученных моделей, а программы, связанные с обменом данными через Интернет (например, торговыми сигналами) могут требовать веб-сервера и его настройки на других языках программирования, хотя бы для отладки и тестирования, если не для разворачивания публичного сервиса.
Весь комплекс нескольких взаимосвязанных продуктов, вместе с их "зависимостями" (то есть использованными ресурсами и библиотеками, написанными самостоятельно или взятыми из сторонних источников), образуют программный проект.
При превышении программой некоего размера её удобное и эффективное развитие затруднено без специальных средств управления проектами. Это в полной мере относится и к программам на MQL5, поскольку многие трейдеры эксплуатируют комплексные торговые системы.
Поэтому с недавнего времени концепция проектов стала развиваться и в MetaEditor. Пока данный функционал находится в начале своего развития, и к моменту выхода книги, вероятно, изменится.
При работе с проектами на MQL5 следует учитывать, что на платформе термин "проект" применяется для двух разных сущностей:
- локального проекта в виде mqproj-файла;
- папки в облачном хранилище MQL5.
Локальный проект позволяет систематизировать, собрать воедино всю информацию об исходных кодах, ресурсах и настройках, необходимых для сборки конкретной MQL-программы. Такой проект находится только на вашем компьютере и может ссылаться на файлы из разных папок.
Файл с расширением mqproj имеет широко распространенный, универсальный, текстовый формат JSON (JavaScript Object Notation). Он удобен, прост и хорошо подходит для описания данных любой предметной области: вся информации группируется в объекты или массивы с именованными свойствами, с поддержкой значений разных типов. Все это делает JSON особенно близким по духу к ООП языкам, да и сам он родом из объектно-ориентированного JavaScript, как легко догадаться по названию.
Облачное хранилище функционирует на основе системы контроля версий и коллективной работы над ПО под названием SVN (Subversion). Здесь под проектом понимается папка верхнего уровня, внутри локальной папки MQL5/Shared Projects, причем для этой папки назначается одноименная папка, расположенная на сервере MQL5 Хранилища. Внутри папки проекта можно организовать иерархию вложенных папок. Как видно из названия, сетевые проекты можно "разделять" с другими разработчиками и делать вообще публичными (содержимое смогут скачивать любые желающие, зарегистрированные на mql5.com).
Система обеспечивает синхронизацию по запросу (с помощью специальных команд пользователя) между образом папки в облаке и на локальном диске, и наоборот — то есть можно как "подтягивать" чужие изменения проекта к себе на компьютер, так и "отправлять" в облако свои правки. Синхронизироваться может как полный образ папки, так и выборочные файлы, включая, разумеется, mq5-файлы, заголовочные mqh-файлы, мультимедиа, настройки (set-файлы), а также и mqproj-файлы. Более подробно об облачном хранилище читайте документацию MetaEditor и системы SVN.
Важно отметить, что существование mqproj-файла не означает создание на его основе какого-либо облачного проекта, точно так же как и создание разделяемой папки не обязывает вас использовать mqproj-проект.
На момент написания книги mqproj-файл может описывать структуру только одной программы, но не нескольких, однако поскольку такое требование является частым при разработке сложных проектов, в будущем данный функционал, вероятно, будет добавлен в MetaEditor.
В данной главе мы опишем основные функции по созданию и организации mqproj-проектов и приведем серию примеров.