
Интеграция MQL5: Python
Введение
В статье я опишу важный инструмент, который повысит ценность ваших навыков программирования. Мы рассмотрим интеграцию Python. То, как это может быть полезно для нас как разработчиков, будет зависеть от наших целей, поскольку Python — это язык программирования высокого уровня, который легко читать. К тому же, он прост сам по себе. Python — язык программирования, предоставляющий обширные библиотеки для таких областей, как анализ данных, статистические вычисления и машинное обучение. Таким образом, интеграция Python и MQL5 может обеспечить более глубокое понимание ситуации, что может быть полезно участникам финансового рынка для улучшения своих результатов за счет обработки данных и прогностической аналитики.
В этой статье я объясню, как использовать Python с MQL5, дав вам простые основы Python и несколько простых примеров после того, как мы настроим нашу среду. Рассмотрены следующие темы:
Давайте углубимся в эту интересную тему, чтобы понять, как мы можем улучшить результаты нашей торговли, используя Python с MQL5.
Обзор Python
Python был разработан Гвидо ван Россумом и выпущен в 1991 году. Это язык программирования высокого уровня, известный своей читабельностью и простотой, что делает его идеальным как для новичков, так и для опытных разработчиков. Он подходит для широкого спектра приложений, от простых скриптов до сложных систем, а его лаконичный синтаксис позволяет создавать чистый и удобный в обслуживании код.
Ключевые особенности Python включают в себя:
- Удобочитаемость: синтаксис Python интуитивно понятен и напоминает естественный язык, что упрощает чтение и написание кода.
- Интерпретативный язык: Python выполняет код построчно, что упрощает отладку и разработку.
- Динамическая типизация: типы переменных определяются во время выполнения, что обеспечивает гибкость при кодировании.
- Обширная стандартная библиотека: комплексная библиотека Python обеспечивает поддержку распространенных задач, таких как файловый ввод-вывод, системные вызовы и манипулирование данными.
- Универсальность: Python поддерживает широкий спектр парадигм программирования, включая объектно-ориентированное, процедурное и функциональное программирование.
- Кроссплатформенная совместимость: Python работает на различных операционных системах, включая Windows, MacOS и Linux, не требуя никаких изменений кода.
- Активное сообщество и экосистема: большое сообщество и экосистема Python предлагают многочисленные библиотеки и инструменты, расширяющие возможности языка.
Области применения Python включают в себя:
- Наука о данных: библиотеки анализа и визуализации данных, такие как Pandas и Matplotlib.
- Искусственный интеллект: инструменты машинного обучения, такие как scikit-learn, TensorFlow и Keras.
- Автоматизация: Selenium и Beautiful Soup для автоматизации повторяющихся задач.
- Веб-разработка: фреймворки для разработки веб-приложений, такие как Django и Flask.
- Научные исследования: язык идеально подходит для моделирования, статистического анализа и построения моделей.
Pandas, NumPy, SciPy, scikit-learn, TensorFlow, Matplotlib, Selenium, Django и Flask — одни из самых популярных библиотек и фреймворков Python. Подводя итог, можно сказать, что неизменная популярность и актуальность Python в мире программирования обусловлены сочетанием его читабельности, простоты и мощных библиотек.
Преимущества интеграции Python
Как уже говорилось ранее, интеграция Python с MQL5 предлагает множество полезных функций, что делает его ценным дополнением к системе. В этом разделе предпринята попытка представить наиболее существенные преимущества, связанные с интеграцией Python в данную систему MQL5.
Таким образом, интеграция этих двух систем дает следующие преимущества:
- Упрощение сложной обработки и анализа данных с помощью передовых методов анализа данных, используя обширные библиотеки, доступные в Python, включая Pandas и NumPy.
- Внедрение библиотек машинного обучения, таких как scikit-learn, TensorFlow и Keras, позволяет разрабатывать и внедрять модели машинного обучения для прогностической аналитики.
- Автоматизация сложных торговых стратегий и их оптимизация с помощью надежной экосистемы Python.
- Улучшение торговых алгоритмов с использованием обширной коллекции библиотек и фреймворков Python.
Рассмотрим подробнее:
Анализ данных:
Библиотеки Python можно использовать с большим эффектом. Python предлагает множество библиотек, специально предназначенных для анализа данных, включая Pandas и NumPy. Библиотеки облегчают сложную обработку данных и статистический анализ, тем самым повышая качество и глубину анализа торговых стратегий.
- Библиотека Pandas предоставляет высокоуровневые структуры данных и методы, которые облегчают быстрый и простой анализ данных. Библиотека Pandas позволяет пользователям эффективно обрабатывать большие наборы данных и выполнять такие операции, как сортировка, группировка и агрегация данных, с минимальными усилиями.
- NumPy — это вычислительная библиотека, которая поддерживает эффективные числовые вычисления, что делает ее подходящей для обработки больших массивов и матриц числовых данных. Она предлагает широкий спектр математических операций и часто используется в качестве базовой библиотеки, на которой строятся другие библиотеки, такие как Pandas и scikit-learn.
Машинное обучение:
В области машинного обучения язык Python является предпочтительным выбором из-за его простоты и наличия надежных библиотек, включая scikit-learn, TensorFlow и Keras. При интеграции с MQL5 трейдеры могут использовать эти библиотеки для создания, разработки и развертывания прогностических моделей, которые используют исторические данные для прогнозирования движений рынка.
- Scikit-learn - эта библиотека предоставляет пользователям простые, но эффективные инструменты машинного обучения, позволяющие им проводить углубленный анализ и добычу данных. Она может похвастаться разнообразным набором алгоритмов, удовлетворяющих различные потребности, включая классификацию, кластеризацию, регрессию и многое другое.
- TensorFlow и Keras - это очень популярные и широко используемые разработчиками инструменты для глубокого обучения, предлагающие комплексный набор инструментов для создания и обучения нейронных сетей с целью создания сложных моделей.
Автоматизация и эффективность:
В контексте повторяющихся задач и сложных торговых стратегий автоматизация может стать эффективным решением. Автоматизируя процессы, трейдеры могут оптимизировать свои операции и снизить вероятность человеческих ошибок. Это особенно полезно при работе со сложными стратегиями, поскольку наличие четкого и точного кода для рассматриваемой стратегии может помочь снизить риски.
- Такую автоматизацию можно применять к различным задачам, связанным с данными, включая сбор, обработку и анализ, чтобы освободить время трейдеров и позволить им сосредоточиться на разработке и реализации стратегий.
- Кроме того, этот подход можно применять для тестирования на истории и оптимизации, используя исторические данные для оценки эффективности стратегии и выявления областей для улучшения посредством оптимизации параметров, что в конечном итоге приведет к улучшению результатов.
Доступ к широкому спектру библиотек и фреймворков:
Функциональность MQL5 может быть расширена за счет использования комплексной экосистемы библиотек и фреймворков. К ним относятся расширенные статистические инструменты, API для внешних источников данных и сложные визуализации, которые можно использовать для расширения возможностей ваших приложений MQL5.
- Визуализация данных: такие библиотеки, как Matplotlib и Seaborn, предоставляют инструменты для создания информативных графиков — от простых до сложных, которые можно использовать для визуализации имеющихся данных, таких как эффективность торговли и другие показатели.
- API и источники данных: библиотеки Python предлагают удобное решение для извлечения финансовых данных, в том числе из веб-ресурсов, и доступа к источникам данных. Эти библиотеки могут взаимодействовать с многочисленными API, что выгодно для тех, кто хочет улучшить свои торговые стратегии.
Есть много других преимуществ, которые можно рассмотреть при обсуждении этой темы, но я думаю, что мы упомянули самые важные преимущества интеграции Python в наши системы.
Мы предоставим простые приложения для областей, связанных с трейдингом, которые можно применять на практике. Это поможет проиллюстрировать, как мы используем торговые концепции при интеграции Python в MQL5. Мы рассмотрим, как эти концепции и методы можно использовать в различных областях, а также продемонстрируем, как их можно интегрировать в торговые процессы.
Настройка среды
В этом разделе мы настроим необходимое программное обеспечение для использования Python с MQL5. Ниже приведены шаги, которые необходимо выполнить.
- Установите MetaTrader 5, загрузив файл установщика с сайта https://www.metatrader5.com/ru и установив платформу на свое устройство.
- Загрузите последнюю версию Python с сайта https://www.python.org/downloads/windows
- При установке Python установите флажок Add Python to PATH%, чтобы иметь возможность запускать скрипты Python из командной строки.
- Очень важно создать отдельную среду для каждого проекта, чтобы поддерживать чистоту, изолированность и воспроизводимость. Следующие шаги иллюстрируют, как этого можно добиться с помощью командной строки:
- Навигация по каталогу проекта
cd /path/to/your/project
- Используйте venv для создания среды mytestenv (встроенный инструмент виртуальной среды)
python -m venv mytestenv
- Теперь необходимо активировать созданную среду.
mytestenv\Scripts\activate
- Модуль MetaTrader 5 следует устанавливать из командной строки. Вы можете открыть пакет MetaTrader 5 Python по ссылке https://pypi.org/project/MetaTrader5/
pip install MetaTrader5
- Показать подробности установки MetaTrader
pip show MetaTrader5
- Для облегчения использования вышеупомянутых функций необходимо добавить пакеты matplotlib и pandas.
pip install matplotlib pip install pandas
- В случае деактивации можно использовать следующую команду в командной строке
deactivate
На данном этапе на устройство установлено необходимое программное обеспечение, а именно MetaTrader 5, Python и требуемые библиотеки, что позволяет приступить к работе.
Простые способы применения
Как уже говорилось ранее, Python и MQL5 — бесценные инструменты, которые можно использовать во множестве задач и областей, включая анализ данных, машинное обучение и автоматизацию. В этом разделе мы попытаемся представить простые способы применения, связанные с трейдингом, которые поясняют использование скриптов Python с MetaTrader 5, чтобы получить обзор некоторых основных задач, которые можно выполнить.
Первое применение: Открываем MetaTrader 5 с помощью скрипта Python:
Целью здесь является создание скрипта Python, который откроет терминал MetaTrader 5 и выведет сообщение о том, инициализирован ли терминал. Следующий код представляет собой полный скрипт. Необходимо заменить (xxxxx) на соответствующие данные вашего счета, включая номер счета, логин, пароль и сервер брокера.
import MetaTrader5 as mt5 print ("MetaTrader5 PKG version: ",mt5.__version__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
После запуска этого кода вы обнаружите, что терминал MetaTrader 5 инициализирован так же, как при щелчке по исполняемому файлу, после чего вы можете использовать его для обычной торговли. В дополнение к этому, вы увидите в консоли следующий результат:
- MetaTrader5 PKG version: 5.0.4424
- MetaTrader5 PKG author: MetaQuotes Ltd.
- MT5 initialized Successfully
Второе применение: Открытие позиций с использованием скрипта Python:
Целью здесь является создание скрипта Python, который позволит открыть позицию на покупку в терминале MetaTrader 5. Для этого будут предприняты следующие шаги: будет создан скрипт для открытия позиции на покупку 0,01 по XAUUSD по цене Ask с уровнем стоп-лосса и тейк-профита.
Модель MetaTrader 5 необходимо импортировать как mt5.
import MetaTrader5 as mt5
Отображение версии MetaTrader 5 в виде информации о пакете.
print ("MetaTrader5 PKG version: ",mt5.__version__)
Отображение автора MetaTrader 5 в информации о пакете.
print ("MetaTrader5 PKG author: ",mt5.__author__)
Соединение MetaTrader 5 инициализируется с сообщением, указывающим, была ли инициализация успешной или нет. В случае неудачи в сообщении указывается код ошибки. Данные учетной записи, включая логин, сервер брокера и пароль, следует заменить фактическими данными учетной записи.
if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
Объявлены следующие переменные: symbol, lot, point, order_type, price, sl, tp, offset, magic, comment, type_time и type_filling.
symbol="XAUUSD" lot=0.01 point=mt5.symbol_info(symbol).point order_type=mt5.ORDER_TYPE_BUY price=mt5.symbol_info_tick(symbol).ask sl=mt5.symbol_info_tick(symbol).ask-100 tp=mt5.symbol_info_tick(symbol).ask+150 deviation=10 magic=2222222 comment="python order" type_time=mt5.ORDER_TIME_GTC type_filling=mt5.ORDER_FILLING_IOC
Отправка ордера с деталями, совпадающими с заявленными ранее.
request={ "action":mt5.TRADE_ACTION_DEAL, "symbol":symbol, "volume":lot, "type":order_type, "price":price, "sl":sl, "tp":tp, "deviation":deviation, "magic":magic, "comment":comment, "type_time":type_time, "type_filling":type_filling, }
Проверьте наличие достаточных средств для выполнения запрошенной торговой операции, используя (order_check) в качестве эквивалента результирующего значения. Результат проверки возвращается в виде структуры MqlTradeCheckResult.
result=mt5.order_check(request)
Выполнение торговых операций осуществляется путем передачи запроса через функцию order_send, которая служит эквивалентом результирующего значения в качестве обновления.
result=mt5.order_send(request)
Теперь необходимо завершить соединение с терминалом MetaTrader 5, установленное ранее с помощью функции shutdown().
mt5.shutdown()
Следовательно, полный код может быть расположен таким же образом, как показано ниже.
import MetaTrader5 as mt5 print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error()) symbol="XAUUSD" lot=0.01 point=mt5.symbol_info(symbol).point order_type=mt5.ORDER_TYPE_BUY price=mt5.symbol_info_tick(symbol).ask sl=mt5.symbol_info_tick(symbol).ask-100 tp=mt5.symbol_info_tick(symbol).ask+150 deviation=10 magic=2222222 comment="python order" type_time=mt5.ORDER_TIME_GTC type_filling=mt5.ORDER_FILLING_IOC request={ "action":mt5.TRADE_ACTION_DEAL, "symbol":symbol, "volume":lot, "type":order_type, "price":price, "sl":sl, "tp":tp, "deviation":deviation, "magic":magic, "comment":comment, "type_time":type_time, "type_filling":type_filling, } result=mt5.order_check(request) result=mt5.order_send(request) mt5.shutdown()
Результат, полученный при выполнении кода, будет выглядеть так:
- MetaTrader5 PKG version: 5.0.4424
- MetaTrader5 PKG author: MetaQuotes Ltd.
- MT5 initialized Successfully
- Была инициирована сделка на покупку золота (XAUUSD) по цене Ask с размером лота 0,01, стоп-лосс по цене Ask минус 100 и тейк-профит по цене Ask плюс 150.
Третье применение: использование MT5 Python API для получения данных:
Множество задач можно выполнить с помощью использования MQL5 и Python в контексте управления данными. В этом разделе будет представлен простой пример, связанный с торговлей, в котором финансовые данные получаются с помощью API MT5 Python. Помимо построения графика для наглядности, будет получена, распечатана и визуализирована в виде линейного графика цена на золото (XAUUSD) с 1 августа 2023 года по настоящее время (12 августа 2024 года). Для этого процесса будут представлены следующие шаги.
Нужно импортировать необходимые библиотеки:
Модуль MetaTrader 5, обозначенный как "mt5", должен быть импортирован для будущего использования в качестве объекта для взаимодействия с торговым терминалом MetaTrader 5, как было определено ранее.
import MetaTrader5 as mt5
Библиотека Pandas импортируется как pd для обработки и анализа данных.
import pandas as pd
plotly.express импортируется как px для использования при визуализации данных для представления данных XAUUSD.
import plotly.express as px
Импорт графиков из plotly.offline для облегчения создания графиков без необходимости подключения к Интернету.
from plotly.offline import plot
Для облегчения работы с датами и временем необходимо импортировать модуль datetime из datetime.
from datetime import datetime
Отображение информации о пакете MetaTrader 5 (версия и автор).
print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__)
Терминал MetaTrader 5 инициализируется, и на консоль выводится сообщение, указывающее, была ли инициализация успешной. Если инициализация прошла успешно, появится сообщение "MT5 initialized successfully". И наоборот, если инициализация не удалась, отображается сообщение "MT5 initialization failed, error code", а также код ошибки и последнее сообщение об ошибке.
if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error())
Исторические данные (открытие, максимум, минимум, закрытие, объем, спред и реальный объем) по XAUUSD были получены с платформы MetaTrader 5. Для этой цели использовалась следующая команда:
- pd.DataFrame - создается с определенными критериями, что приведет к двухмерной маркированной структуре данных.
- mt5.copy_rates_range - используется для определения типа данных с точки зрения символа (XAUUSD), таймфрейма (mt5.TIMEFRAME_D1), начальной даты (datetime(2023,8,1)) и конечной даты (datetime.now()).
xauusd_data=pd.DataFrame(mt5.copy_rates_range("XAUUSD", mt5.TIMEFRAME_D1, datetime(2023,8,1), datetime.now()))
Столбец времени преобразуется из временных меток Unix в читаемый формат даты и времени с помощью функции pandas.to_datetime.
xauusd_data['time'] = pd.to_datetime(xauusd_data['time'],unit='s')
Полученные данные для XAUUSD должны быть выведены в соответствии со следующей строкой кода.
print(xauusd_data)
Полученные данные были нанесены на график с помощью функции px.line, которая позволяет создавать линейный график с помощью Plotly Express. На этом графике представлена цена XAUUSD с первого августа 2023 года по настоящее время.
fig = px.line(xauusd_data, x=xauusd_data['time'], y=xauusd_data['close']) plot(fig)
Полный код показан ниже.
import MetaTrader5 as mt5 import pandas as pd import plotly.express as px from plotly.offline import plot from datetime import datetime print ("MetaTrader5 PKG version: ",mt5.__version__) print ("MetaTrader5 PKG author: ",mt5.__author__) if mt5.initialize(login=xxxxx, server="xxxxx",password="xxxxx"): print ("MT5 initialized Successfully") else: print ("MT5 initialization Failed, Error code ",mt5.last_error()) xauusd_data=pd.DataFrame(mt5.copy_rates_range("XAUUSD", mt5.TIMEFRAME_D1, datetime(2023,8,1), datetime.now())) xauusd_data['time'] = pd.to_datetime(xauusd_data['time'],unit='s') print(xauusd_data) fig = px.line(xauusd_data, x=xauusd_data['time'], y=xauusd_data['close']) plot(fig)
При выполнении кода получены следующие результаты.
- Сообщение (MetaTrader5 PKG version: 5.0.4424) было выведено на консоль
- Сообщение (MetaTrader5 PKG author: MetaQuotes Ltd.) было выведено на консоль
- Сообщение (MT5 initialized Successfully) выводится на консоль
- Данные XAUUSD, выведенные на консоль, представлены ниже.
- График XAUUSD в браузере выглядит так:
Как показано на рисунке, линейный график отображает цены закрытия на золото (XAUUSD) с течением времени, охватывающим период с августа 2023 года по настоящее время. Вышеупомянутые простые приложения демонстрируют потенциал использования Python с MQL5 в различных аспектах автоматизированной торговли, анализа данных и других связанных задач.
Заключение
Python — это универсальный и мощный язык программирования, который можно использовать в различных областях, включая трейдинг и финансовые рынки. Использование Python обеспечивает автоматизацию, анализ данных и реализацию стратегий, что в свою очередь способствует принятию более обоснованных торговых решений. Сочетание Python и MQL5 позволяет создавать сложные торговые системы, использующие данные и машинное обучение. Это представляет собой значительный прогресс в области алгоритмической торговли, позволяя создавать более адаптируемые торговые системы, основанные на данных. Такое сочетание может улучшить результаты торговли на финансовых рынках.
В статье продемонстрировано использование Python совместно с MQL5. Кроме того, в статье описаны шаги, необходимые для настройки среды Python для MetaTrader 5. Организовав эффективный рабочий процесс, разработчики могут более эффективно управлять зависимостями и повышать масштабируемость своих торговых систем. Python способен автоматизировать задачи и анализировать рыночные тренды. Это демонстрируется практическим применением, включая открытие MetaTrader 5, совершение сделок, получение данных об активах и их визуализацию.
Надеюсь, статья поможет вам начать использовать Python с MQL5. Эксперименты с различными приложениями могут быть весьма полезны как для трейдеров, так и для разработчиков. Дополнительная информация:
- Python for Dummies by Stef Maruch
- Python Crash Course by Eric Matthes
- Python All-In-One by John Shovic and Alan Simpson
Документация на сайте MQL5: https://www.mql5.com/en/docs/python_metatrader5
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/14135





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Очень интересно, но, к сожалению, библиотека metaTrader python пока недоступна на MacOs.
Спасибо,
только нашел ошибку в 3-м приложении
from plotly.offline import plot could not be resolved
Я решил эту проблему, переустановив : pandas и matplotlib
c:\pip install MetaTrader5 pandas matplotlib
затем измените код следующим образом:
Надеюсь, это поможет
Спасибо,
просто найдите ошибку в третьем приложении
из plotly.offline import plot не удалось разрешить
Я решил эту проблему, переустановив : pandas и matplotlib
c:\pip install MetaTrader5 pandas matplotlib
...Также можно установить библиотеку Plotly:
Подробнее:
https://plotly.com/python/getting-started/