Я известен сообществу программистов на MQL5 под ником Roffild и это моя библиотека с открытым кодом для MQL5. Попытка реализовать возможности на MQL5, которые уже давно стали стандартом для популярных языков программирования. В каждом файле реализована одна идея. Библиотека пополняется по мере необходимости в новых возможностях.
Мало кто пытался выложить проект в Github. Единого стандарта нет. MetaQuotes не учитывают использование системы контроля версий при создании проекта. Почему-то программисты из MetaQuotes считают, что проект должен быть одного типа. Для мелких проектов, которые публикуются в CodeBase на сайте MQL5.com, такое разделение обосновано. Для средних и крупных проектов невозможно выбрать один тип проекта.
Я экспериментировал с разной структурой построения проекта. Для использования Git пришлось вынести файлы за пределы стандартной структуры папок, принятой в MetaQuotes. Создать ссылку на промежуточную папку (в этой библиотеке папка "Roffild") - лучший вариант.
MetaEditor может сохранять код в UTF-16, но кодировка UTF-8 с BOM тоже поддерживается. Для конвертации файла с исходным кодом нужно использовать сторонний редактор (рекомендую Notepad++).
Библиотеку можно разделить на интересы:
- обычные задачи (ArrayList, Log4MQL, ToIndicator и т.д.);
- эксперименты с AlgLib в машинном обучении;
- использование Apache Spark с Amazon Web Services (EC2 и EMR), когда возможностей AlgLib перестало хватать;
- использование TensorFlow или PyTorch через PythonDLL.
MQL5 является частью торговой платформы MetaTrader 5 (MT5) для Forex, CFD и Futures. До сих пор используется версия MetaTrader 4 (MT4) с MQL4, но после последних обновлений совместима с синтаксисом MQL5. Официально версия MetaTrader 4 (MT4) уже не поддерживается, но для совместимости можно использовать #property strict
в начале файла.
Roffild.com
Github
GitLab
BitBucket
MQL5.com: topic for discussion in English
MQL5.com: тема для обсуждения на Русском
- Experts/Roffild/
- AmazonUtils - Можно использовать как пример разработки проекта на Java.
- Alglib_MultilayerPerceptron.mq5 - Создание нейронной сети (Multilayer Perceptron) с двумя скрытыми слоями.
- Alglib_RandomForest.mq5 - Создание случайного леса.
- Examples/
- PythonDLL_Example.mq5 и PythonDLL_Example.py - Пример использования PythonDLL.
- ToIndicator_Example.mq5
- Include/Roffild/
- MLPDataFile.mqh - Формат данных для Alglib_MultilayerPerceptron и Alglib_RandomForest. MLPDataFile = CSV в бинарном формате.
- ArrayList_macros.mqh - Этот вариант еще используется из-за плохой поддержки шаблонов редактором кода.
- ArrayList.mqh - ArrayList из Java.
- ArrayListClass.mqh - ArrayList из Java только для Класса.
- ForestSerializer.mqh - Сохранение и загрузка данных для класса CDecisionForest (Alglib).
- Log4MQL.mqh и Log4MQL_tofile.mqh + модуль (скачать) для LogMX - Logger for MQL5 (Log4MQL).
- OrderData.mqh - Симуляция ордеров с прикреплёнными данными для исследований.
- OrderSql.mqh - Запись данных от ордеров (COrderData) в файл формата MySQL.
- SqlFile.mqh - Запись данных в файл формата MySQL.
- CsvFile.mqh - Запись данных в файл формата CSV.
- Statistic.mqh - Подсчёт данных и распечатка накопленной информации.
- TesterSql.mqh - Запись результатов оптимизации в файлы SQL и CSV.
- ToIndicator.mqh - Отображение данных из Эксперта или Скрипта с помощью индикаторов.
- UnitTest.mqh - Базовый класс для UnitTest.
- Serialization.mqh
- RoffildJava/
- AmazonUtils
- RoffildLibrary
- Spark - Чтение из MLPDataFile.
- aws_ubuntu_user_data.sh - Рабочий скрипт для поднятия агентов тестирования на Ubuntu в AWS. Инструкция здесь.
- PythonDLL.mqh - Класс для PythonDLL.
- RoffildPython/
- Indicators/Roffild/
- Libraries/Roffild/
- Scripts/Roffild/
- MLPDataFileSparkTest - Пример проекта для Spark и тест MLPDataFile.
- UnitTests
- buildall_and_tests.py - Скрипт сборки всех компонентов библиотеки и запуска тестов.
(Необязательно)
mklink /j ссылка куда
- не требует прав администратора.
Имеет смысл вынести папку %APPDATA%\MetaQuotes
в корень раздела или на раздел большего размера.
Windows имеет ограничения на 255 символов пути к файлу. Полный путь к папке MQL5 у меня состоит из 88 символов.
При тестировании терминал копирует историю по количеству локальных агентов, что увеличивает размер этой папки на несколько гигабайт.
- Переместить папку
%APPDATA%\MetaQuotes
вD:\MQLProjects
mklink /j "%APPDATA%\MetaQuotes" "D:\MQLProjects"
mklink /j "D:\MQLProjects\MQL5" "D:\MQLProjects\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5"
(Важно)
Запустить create_links.bat
из папки MQL5\MyProjects\RoffildLibrary
после клонирования проекта.
Tab = 3 spaces
Column limit = 110