Я недавно начал использовать пакет MetaTrader5 python. Все работает отлично, получаю данные, получаю открытые позиции. Проблема заключается в отправке ордеров. Я попробовал пример и получил следующее сообщение:
Пожалуйста, разработчик, сделайте дистрибутив для Python 3.5.0. Это скромная просьба. Все мои коды работают на Python 3.5.0, и мне придется менять весь проект, если я перейду на другую версию Python. Пожалуйста, рассмотрите мою просьбу.
Бета-версия терминала 2323 с новыми возможностями доступна на тестовом сервере (сервер MetaQuotes-Beta, адрес 78.140.180.203-00-0043). Публичная бета-версия будет доступна завтра.
Также мы выпустили новую версию MetaTrader 5.0.20 для Python (pip install --upgrade metatrader5) с новым синтаксисом для переключения счетов:
Теперь авторизацию можно указывать прямо в инициализации, как в полном, так и в сокращенном виде.
Функция ожидания была отменена, и теперь полный цикл инициализации с ожиданием выполняется прямо в initialize, где также можно задать таймаут в миллисекундах.
Библиотека Python уже гарантированно находит последнюю активную копию терминала, даже если он был установлен в портативном (key / portable) режиме.
Программы на Python уже отображаются прямо в навигаторе:
В релизе, который выйдет в эту пятницу, их уже можно будет запускать как обычные MQL5-скрипты, и они будут прикрепляться к графикам.
В будущем мы добавим в библиотеку Python доступ ко всем (в том числе пользовательским) индикаторам в режиме чтения. Это сделает работу на Python более продуктивной. Но это не приоритет, мы сделаем это гораздо позже.
Параллельно мы расширяем возможности редактора и в следующем релизе (не за горами пятница) будет полноценная возможность использовать Clang / LLVM и Microsoft Visual Studio для компиляции C++ программ:
Я недавно начал использовать пакет MetaTrader5 python. Все работает отлично, получаю данные, получаю открытые позиции. Проблема заключается в отправке ордеров. Я попробовал воспользоваться предоставленным примером и получил следующее сообщение:
Обновление платформы MetaTrader 5 выйдет в пятницу, 21 февраля 2020 года. В новой версии произойдут следующие изменения:
MetaEditor: Добавлен новый функционал для работы с базами данных SQLite.
В предыдущем обновлении платформы мы внедрили поддержку операций с базами данных SQLite непосредственно из MQL5. Основные функции стали доступны через пользовательский интерфейс MetaEditor:
Создание и подключение баз данных
Просмотр таблиц и выполнение быстрых запросов к данным
Создание и выполнение SQL-запросов, откат изменений
Как это работает Функции быстрого создания базы данных доступны из Мастера MQL5. Вы можете легко создать свою первую таблицу и определить ее поля.
После создания базы данных вы перейдете в новый раздел Навигатора, в котором представлены команды для управления данными.
Таблицы базы данных отображаются в левом окне. Дважды щелкните по названию таблицы, чтобы быстро запросить первые 1000 записей. В этом разделе навигатора можно также создавать и открывать другие базы данных, а также работать с таблицами.
Управление базой данных осуществляется в главном окне редактора, в котором можно заполнять таблицы, искать и выбирать данные, вводить SQL-запросы и выполнять другие операции:
MetaEditor: Расширенная поддержка мультиязычных проектов. Это обновление расширяет возможности работы с Python-скриптами:
Теперь такие скрипты можно создавать с помощью Мастера MQL5, а в код можно мгновенно добавлять необходимые библиотечные зависимости.
В навигатор добавлены специальные иконки, а в редакторе доступен соответствующий синтаксис.
При запуске скрипта через MetaEditor в разделе "Ошибки" появляются сообщения из консоли Python (stdout, stderr).
Для запуска скрипта нажмите кнопку "Компилировать" в редакторе:
Для работы с Python не забудьте указать путь к нему в разделе Настройки \ Компиляторы в MetaEditor. Чтобы включить использование библиотеки MetaTrader 5, установите ее с помощью следующей команды:
pip install MetaTrader 5
Подробнее об интеграции Python читайте в соответствующей документации.
MQL5: Полностью переработанная интеграция с Python. Обновление включает в себя множество новых функций и новое именование команд.
Новые команды Расширен список поддерживаемых команд. Добавлены торговые функции, а также функции для работы с историей торгов и для получения данных о финансовом символе и текущем счете.
positions_total() получает количество открытых позиций. Аналог PositionsTotal.
positions_get(symbol, ticket) получает открытые позиции по символу или тикету.
orders_total() получает количество ордеров. Аналог OrdersTotal.
orders_get(symbol, ticket) получает открытые ордера по символу или тикету.
history_orders_total(from, to) получает количество ордеров в указанном историческом временном интервале.
history_orders_get(from, to, position, ticket) получает ордера из указанного исторического временного интервала, по тикету или отфильтрованные по позиции.
history_deals_total() получает количество сделок в истории. Аналог HistoryDealsTotal.
history_deals_get(from, to, position, ticket) получает сделки из указанного исторического временного интервала, по тикету или отфильтрованные по позиции.
Запуск скриптов Python на графиках Python-скрипты можно запускать непосредственно на графиках платформы, аналогично обычным MQL5-программам. Такие скрипты отмечены специальными иконками в Навигаторе.
Сообщения о скриптах будут отображаться в разделе "Инструменты \ Эксперты". Если в скрипте используется библиотека MetaTrader 5, он может получать данные о торговых символах и счетах, а также выполнять торговые операции.
Python-скрипты могут выполняться на одном графике параллельно с другими MQL5-скриптами и экспертами. Чтобы остановить скрипт с зацикленным исполнением, удалите его с графика.
Дополнительная защита Чтобы включить дополнительную защиту счета при использовании сторонних библиотек Python, вы можете воспользоваться опцией "Отключить автоматическую торговлю через внешние Python API" в настройках терминала.
Скрипты Python могут совершать торговые операции только при отключенной опции.
MQL5: Значительно ускорен перезапуск MQL5-программ и воссоздание пользовательских индикаторов из MQL5-программ. В некоторых случаях операции выполняются в 100 раз быстрее.
MQL5: Добавлены функции для работы с базами данных:
long DatabaseImport(
int database, // database handle received in DatabaseOpenconststring table, // table name to insert data toconststring filename, // file name to import data fromuint flags, // combination of flagsconststring separator, // data separatorulong skip_rows, // number of first rows to skipconststring skip_comments // string of characters, which define comments
);
DatabaseExport Экспортирует таблицу или результат SQL-запроса в CSV-файл. Файл создается в кодировке UTF-8.
long DatabaseExport(
int database, // database handle received in DatabaseOpen conststring table_or_sql, // table name or SQL queryconststring filename, // CSV file name for data exportuint flags, // combination of flagsconststring separator // data separator in the CSV file
);
DatabasePrint Печать таблицы или результата SQL-запроса в журнал Experts.
long DatabasePrint(
int database, // database handle received in DatabaseOpenconststring table_or_sql, // table or SQL queryuint flags // combination of flags
);
MQL5: Добавлена функция FileSelectDialog, которая вызывает системный диалог создания/открытия файла или папки.
int FileSelectDialog(
string caption, // window titlestring initial_dir, // initial directorystring filter, // extension filteruint flags, // combination of flagsstring& filenames[], // array with file namesstring default_filename // default file name
);
Новая функция обеспечивает эффективное взаимодействие пользователя с MQL5-программой.
MQL5: Новое значение DEAL_FEE в перечислении ENUM_DEAL_PROPERTY_DOUBLE. Оно используется для комиссии за сделку. Значение указывает на отдельный тип комиссии, взимаемой брокером.
Тестер: Добавлена функциональность для задания пользовательских настроек торгового счета при тестировании стратегии, таких как торговые ограничения, настройки маржи и комиссии. Новые функции предоставляют расширенные возможности для моделирования различных торговых условий.
Общие настройки В этом разделе вы можете задать максимальное количество открытых ордеров и позиций, которые могут одновременно существовать на счете. Кроме того, вы можете настроить сессии, во время которых программа не имеет права торговать.
Маржа Раздел позволяет настроить правила резервирования маржи и системы учета позиций, которые будут использоваться при тестировании:
Риск-менеджмент - модель управления рисками: Внебиржевая и биржевая модель, системы неттинга и хеджирования. Подробнее об этом читайте в Документации.
Уровень маржинального требования - при достижении этого уровня счет переходит в состояние Margin Call.
Уровень Stop Out - при достижении этого уровня все ордера отменяются, а все торговые позиции закрываются. Эти уровни могут быть указаны в процентах и в деньгах. Если выбрано значение "В деньгах", уровни определяются как стоимость капитала счета. Если выбрано значение "В процентах", то уровни определяются как значение "Маржинального уровня" счета (Средства/Маржа*100).
Нереализованная прибыль - учет текущей плавающей прибыли/убытка в свободной марже:
Не использовать нереализованную прибыль/убыток - не включать в расчет прибыли/убытки открытых позиций.
Использовать нереализованную прибыль/убыток - включать в расчет прибыль/убыток открытых позиций.
Использовать нереализованную прибыль - включать только прибыль.
Использовать нереализованный убыток - включать только убыток.
Использовать ежедневную фиксированную прибыль/убыток - включать в свободную маржу прибыль и убыток, полученные в течение торгового дня.
Использовать ежедневный фиксированный убыток - включать только убыток, полученный в течение торгового дня. В течение дня полученная прибыль накапливается в поле специального счета ("Заблокировано"). В конце торгового дня накопленная прибыль освобождается (обнуляется) и добавляется к балансу счета (включается в свободную маржу).
Снимать фиксированную прибыль в конце дня - эта опция становится доступной, только если выбрана опция "Использовать ежедневный фиксированный убыток". Если она включена, накопленная прибыль будет высвобождаться (и таким образом включаться в свободную маржу) в конце дня. В противном случае эта сумма прибыли останется заблокированной.
Комиссия В данном разделе осуществляется контроль над комиссиями, взимаемыми за все торговые операции.
Комиссия может быть одноуровневой и многоуровневой, то есть быть одинаковой вне зависимости от объема/оборота сделки или зависеть от их размера. Соответствующие данные отображаются в терминале.
Комиссия может взиматься сразу при совершении сделки или в конце торгового дня/месяца.
В зависимости от направления сделки могут взиматься различные комиссии: за вход, за выход или за оба вида операций.
Комиссия может взиматься за лот или сделку.
Комиссия может рассчитываться в деньгах, процентах или пунктах.
Тестер: Оптимизированная и ускоренная работа в режиме Сканера рынка, во время которой выполняется несколько проходов тестирования для всех символов, доступных в Обзоре рынка.
Тестер: Размер сделки или позиции теперь учитывается при расчете прибыли в пунктах. Ранее расчет производился только на один лот.
Тестер: Улучшен контроль над графиком результатов оптимизации. Для увеличенного графика оптимизации добавлена опция прокрутки. Двойной щелчок на точке графика выбирает соответствующий результат в таблице результатов тестирования.
MetaEditor: Добавлено отображение файлов баз данных SQLite (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) в Навигаторе.
Метаредактор: Исправлены ошибки сохранения свойств проекта.
Обновлена документация.
Новая версия MetaTrader 5 будет доступна через систему LiveUpdate.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Всем привет
Я недавно начал использовать пакет MetaTrader5 python. Все работает отлично, получаю данные, получаю открытые позиции. Проблема заключается в отправке ордеров. Я попробовал пример и получил следующее сообщение:
In [4]: import MetaTrader5 as mt5
In [5]: mt5.initialize()
Out[5]: True
In [6]: mt5.Sell("EURUSD", 0.001)
Out[6]: OrderSendResult(retcode=10030, deal=0, order=0, volume=0.0, price=0.0, bid=0.0, ask=0.0, comment='Unsupported filling mode', request_id=0, retcode_external=0)
похоже, что у metatrader есть проблема со способом отправки ордера. Пожалуйста, помогите
ERROR: Не удалось найти версию, удовлетворяющую требованию MetaTrader5 (из версий: нет)
ERROR: Не найдено подходящего дистрибутива для MetaTrader5
Я не смог установить MetaTrader5 с помощью pip install. Ошибка выглядит следующим образом.
Кто-нибудь может мне помочь? Большое спасибо.
ОШИБКА: Не удалось найти версию, удовлетворяющую требованию MetaTrader5 (из версий: нет)
ERROR: Не найдено подходящего дистрибутива для MetaTrader5
Я не смог установить MetaTrader5 с помощью pip install. Ошибка выглядит следующим образом.
Кто-нибудь может мне помочь? Большое спасибо.
Я думаю, что лучше подождать - из-за следующего:
В следующую пятницу мы сделаем релиз MT5, одновременно обновляя документацию.
Мы опишем это позже в документации.
Так что лучше подождать пятницы, когда все (новые функции и т.д.) будет описано в документации с примерами.
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Ренат Фатхуллин, 2020/02/18 22:05
Бета-версия терминала 2323 с новыми возможностями доступна на тестовом сервере (сервер MetaQuotes-Beta, адрес 78.140.180.203-00-0043). Публичная бета-версия будет доступна завтра.
Также мы выпустили новую версию MetaTrader 5.0.20 для Python (pip install --upgrade metatrader5) с новым синтаксисом для переключения счетов:
Теперь авторизацию можно указывать прямо в инициализации, как в полном, так и в сокращенном виде.
Функция ожидания была отменена, и теперь полный цикл инициализации с ожиданием выполняется прямо в initialize, где также можно задать таймаут в миллисекундах.
Библиотека Python уже гарантированно находит последнюю активную копию терминала, даже если он был установлен в портативном (key / portable) режиме.
Программы на Python уже отображаются прямо в навигаторе:
В релизе, который выйдет в эту пятницу, их уже можно будет запускать как обычные MQL5-скрипты, и они будут прикрепляться к графикам.
В будущем мы добавим в библиотеку Python доступ ко всем (в том числе пользовательским) индикаторам в режиме чтения. Это сделает работу на Python более продуктивной. Но это не приоритет, мы сделаем это гораздо позже.
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Ренат Фатхуллин, 2020/02/18 22:15
Параллельно мы расширяем возможности редактора и в следующем релизе (не за горами пятница) будет полноценная возможность использовать Clang / LLVM и Microsoft Visual Studio для компиляции C++ программ:
Возможно, будет включен и C #.
Была проделана большая работа по полноценному использованию баз данных SQLite: SQLite: нативная работа с базами данных SQL на MQL5
Это позволяет удобно оперировать и обмениваться большими объемами данных между различными системами и внутри терминала.
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Ренат Фатхуллин, 02/20/19 08:53
В рамках проектов можно указать множество целевых параметров:
DLL / EXE файлы имеют пользовательские настройки определения, библиотеки и дополнительные параметры для компилятора:
Линкер автоматически используется Clang или Visual Studio. В явном виде его указывать не нужно.
Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий
MetaTrader 5 Python User Group - как использовать Python в Metatrader
Ренат Фатхуллин, 02/20/19 09:05
Build 2323 уже доступен на MetaQuotes-Demo и по команде обновления на бета-версии из меню помощи.
Не забудьте, пожалуйста, обновиться до библиотеки MetaTrader 5.0.20 для Python.
Всем привет
Я недавно начал использовать пакет MetaTrader5 python. Все работает отлично, получаю данные, получаю открытые позиции. Проблема заключается в отправке ордеров. Я попробовал воспользоваться предоставленным примером и получил следующее сообщение:
In [4]: import MetaTrader5 as mt5
In [5]: mt5.initialize()
Out[5]: True
In [6]: mt5.Sell("EURUSD", 0.001)
Out[6]: OrderSendResult(retcode=10030, deal=0, order=0, volume=0.0, price=0.0, bid=0.0, ask=0.0, comment='Unsupported filling mode', request_id=0, retcode_external=0)
похоже, что у metatrader есть проблема со способом отправки ордера. Пожалуйста, помогите
Форум о трейдинге, автоматических торговых системах и тестировании торговых стратегий
Новая платформа MetaTrader 5 Build 2340: управление настройками счета в тестере и расширенная интеграция с Python
MetaQuotes, 2020.02.20 14:59
Обновление платформы MetaTrader 5 выйдет в пятницу, 21 февраля 2020 года. В новой версии произойдут следующие изменения:
В предыдущем обновлении платформы мы внедрили поддержку операций с базами данных SQLite непосредственно из MQL5. Основные функции стали доступны через пользовательский интерфейс MetaEditor:
Как это работает
Функции быстрого создания базы данных доступны из Мастера MQL5. Вы можете легко создать свою первую таблицу и определить ее поля.
После создания базы данных вы перейдете в новый раздел Навигатора, в котором представлены команды для управления данными.
Таблицы базы данных отображаются в левом окне. Дважды щелкните по названию таблицы, чтобы быстро запросить первые 1000 записей. В этом разделе навигатора можно также создавать и открывать другие базы данных, а также работать с таблицами.
Управление базой данных осуществляется в главном окне редактора, в котором можно заполнять таблицы, искать и выбирать данные, вводить SQL-запросы и выполнять другие операции:

Подробнее об операциях MetaTrader 5 с базами данных читайте в статье"SQLite: нативная работа с базами данных SQL в MQL5".Для запуска скрипта нажмите кнопку "Компилировать" в редакторе:
Для работы с Python не забудьте указать путь к нему в разделе Настройки \ Компиляторы в MetaEditor. Чтобы включить использование библиотеки MetaTrader 5, установите ее с помощью следующей команды:
Новое именование
Существующие команды были переименованы следующим образом:
MT5Shutdown -> shutdown
MT5TerminalInfo -> terminal_info
MT5Version -> version
MT5CopyRatesFrom -> copy_rates_from
MT5CopyRatesFromPos -> copy_rates_from_pos
MT5CopyRatesRange -> copy_rates_range
MT5CopyTicksFrom -> copy_ticks_from
MT5CopyTicksRange -> copy_tick_range
Новые команды
Расширен список поддерживаемых команд. Добавлены торговые функции, а также функции для работы с историей торгов и для получения данных о финансовом символе и текущем счете.
Запуск скриптов Python на графиках
Python-скрипты можно запускать непосредственно на графиках платформы, аналогично обычным MQL5-программам. Такие скрипты отмечены специальными иконками в Навигаторе.
Сообщения о скриптах будут отображаться в разделе "Инструменты \ Эксперты". Если в скрипте используется библиотека MetaTrader 5, он может получать данные о торговых символах и счетах, а также выполнять торговые операции.
Python-скрипты могут выполняться на одном графике параллельно с другими MQL5-скриптами и экспертами. Чтобы остановить скрипт с зацикленным исполнением, удалите его с графика.
Дополнительная защита
Чтобы включить дополнительную защиту счета при использовании сторонних библиотек Python, вы можете воспользоваться опцией "Отключить автоматическую торговлю через внешние Python API" в настройках терминала.
Скрипты Python могут совершать торговые операции только при отключенной опции.
DatabaseImport
Импортирует данные из файла в таблицу.
DatabaseExport
Экспортирует таблицу или результат SQL-запроса в CSV-файл. Файл создается в кодировке UTF-8.
DatabasePrint
Печать таблицы или результата SQL-запроса в журнал Experts.
Новая функция обеспечивает эффективное взаимодействие пользователя с MQL5-программой.
Общие настройки
В этом разделе вы можете задать максимальное количество открытых ордеров и позиций, которые могут одновременно существовать на счете. Кроме того, вы можете настроить сессии, во время которых программа не имеет права торговать.
Маржа
Раздел позволяет настроить правила резервирования маржи и системы учета позиций, которые будут использоваться при тестировании:
Комиссия
В данном разделе осуществляется контроль над комиссиями, взимаемыми за все торговые операции.
Новая версия MetaTrader 5 будет доступна через систему LiveUpdate.