Новая версия платформы MetaTrader 5 build 2340: Управление настройками счета в тестере и расширение интеграции с Python

MetaQuotes  

В пятницу 21 февраля 2020 года будет выпущена обновленная версия платформы MetaTrader 5. Обновление содержит следующие изменения:

  1. MetaEditor: Добавлена возможность удобной работы с SQLite базами данных.

    В предыдущем обновлении платформы мы добавили поддержку работы с базами данных SQLite прямо из MQL5. Теперь основные функции стали доступны и через пользовательский интерфейс MetaEditor:

    • Создание и подключение к базам данных
    • Просмотр таблиц и быстрый запрос данных
    • Составление и выполнение SQL-запросов, откат изменений

    Как это работает
    Для быстрого создания баз данных воспользуйтесь "Мастером MQL5". Здесь вы можете сразу создать первую таблицу и определить список ее полей.




    Создав базу, вы перейдете в новый раздел "Навигатора". Из него происходит вся работа с данными.

    В левой части отображаются таблицы базы данных. Для быстрого запроса первой 1 000 записей дважды нажмите на имя таблицы. Здесь же вы можете создавать и открывать другие базы, а также работать с таблицами.

    В основной части редактора происходит работа с базой: заполняйте таблицу данными, делайте поиск и выборки, вводите SQL-запросы и т.д.



    Более подробно о работе с базами данных в MetaTrader 5 читайте в статье "SQLite: нативная работа с базами данных на SQL в MQL5".

  2. MetaEditor: Продолжается работа по добавлению поддержки мультиязычных проектов. В этой версии мы расширили функции для работы со скриптами на Python:

    • Теперь их можно удобно создавать через "Мастер MQL5", сразу включая в код зависимости от необходимых библиотек.
    • В навигаторе для них добавлены специальные иконки, в редакторе — подсветка синтаксиса.
    • При запуске скрипта через MetaEditor сообщения из консоли Python (stdout, stderr) выводятся в раздел "Ошибки".




    Для запуска скрипта в редакторе нажмите "Компилировать":





    Для работы с Python не забудьте указать путь к нему в разделе "Настройки / Компиляторы" в MetaEditor. А для работы с библиотекой MetaTrader 5 установите ее командой:
    pip install MetaTrader5
    Подробнее об интеграции с Python читайте в документации.

  3. MQL5: Полностью переработана интеграция с Python. Добавлено множество новых функций и изменено именование команд.

    Новое именование команд
    Имеющиеся команды были переименованы:
    MT5Initialize       -> initialize
    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

    Новые команды
    Список поддерживаемых команд значительно расширен. Добавлены функции торговли и работы с торговой историей, получения информации о финансовых инструментах и текущем счете.

    • account_info() — получение информации о текущем счете. Аналог AccountInfoInteger , AcountInfoDouble и AccountInfoString.
    • 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) — получение сделок из истории в заданном промежутке по тикету или с фильтрацией по позиции.
    • symbol_info(symbol) — получение информации о финансовом инструменте. Аналог SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString.
    • symbol_info_tick(symbol) — получение последнего тика по символу. Аналог SymbolInfoTick.
    • symbol_select(symbol, enable) — включение/выключение символа в "Обзоре рынка". Аналог SymbolSelect.
    • order_check(request) — проверка маржи для ордера. Аналог OrderCheck.
    • order_send(request) — отправка ордера на сервер. Аналог OrderSend.
    • order_calc_margin(action, symbol, volume, price) — расчет маржи для ордера. Аналог OrderCalcMargin.
    • order_calc_profit(action, symbol, volume, price_open, price_close) — расчет прибыли. Аналог OrderCalcProfit.

    Запуск скриптов Python на графиках
    Теперь скрипты на Python можно запускать прямо на графиках в платформе, аналогично обычным MQL5-программам. В "Навигаторе" они будут отображаться специальными иконками.



    Сообщения скрипта будут выводиться в раздел "Инструменты / Эксперты". Если в скрипте используется библиотека MetaTrader 5, то он сможет получать информацию об инструменте, счете и торговать.

    Python-скрипты можно запускать на одном и том же графике параллельно с другими MQL5-скриптами и советниками. Для остановки скрипта, если его исполнение зациклено, просто удалите его с графика.

    Дополнительная защита
    Чтобы дополнительно защитить ваши счета при использовании сторонних библиотек Python, в настройки терминала добавлена опция "Отключить автоматическую торговлю через внешний Python API".




    Скриптам на Python будут разрешены торговые операции только при явном отключении этой опции.

  4. MQL5: Значительно ускорен повторный запуск MQL5-программ и повторное создание пользовательских индикаторов из MQL5-программ. В некоторых случаях скорость повысилась в сотни раз.
  5. MQL5: Добавлены функции для работы с базами данных:

    DatabaseImport
    Импортирует в таблицу данные из файла.
    long  DatabaseImport(
       int           database,          // хендл базы данных, полученный в DatabaseOpen
       const string  table,             // имя таблицы для вставки данных
       const string  filename,          // имя файла для импорта данных
       uint          flags,             // комбинация флагов
       const string  separator,         // разделитель данных 
       ulong         skip_rows,         // сколько первых строк пропустить 
       const string  skip_comments      // строка символов, которые определяют комментарии
       );

    DatabaseExport
    Экспортирует таблицу или результат выполнения SQL-запроса в CSV-файл. Файл создается в кодировке UTF-8.
    long  DatabaseExport( 
       int           database,           // хендл базы данных, полученный в DatabaseOpen 
       const string  table_or_sql,       // имя таблицы или SQL-запрос 
       const string  filename,           // имя CSV-файла для экспорта данных 
       uint          flags,              // комбинация флагов 
       const string  separator           // разделитель данных в CSV-файле 
       );

    DatabasePrint
    Печатает таблицу или результат выполнения SQL-запроса в журнал экспертов.
    long  DatabasePrint(
       int           database,          // хендл базы данных, полученный в DatabaseOpen
       const string  table_or_sql,      // таблица или SQL-запрос
       uint          flags              // комбинация флагов
       );

  6. MQL5: Добавлена функция FileSelectDialog, которая вызывает системный диалог создания/открытия файла или папки.
    int  FileSelectDialog(
       string   caption,              // заголовок окна
       string   initial_dir,          // начальная папка
       string   filter,               // фильтр расширений
       uint     flags,                // комбинация флагов
       string&  filenames[],          // массив с именами файлов
       string   default_filename      // имя файла по умолчанию
       );
    Новая функция позволит реализовать удобное взаимодействие пользователя с MQL5-программой.

  7. MQL5: В перечисление ENUM_DEAL_PROPERTY_DOUBLE добавлено значение DEAL_FEE — оплата за проведение сделки. Фактически, это отдельный вид комиссии, которая может взиматься брокером.

  8. Tester: Добавлена возможность задавать собственные настройки торгового счета при тестировании стратегий — торговые ограничения, настройки маржи и комиссии. Таким образом, вы получаете еще больше возможностей для моделирования различных торговых условий у брокеров.




    Общие настройки
    В этом разделе вы можете задать максимальное количество открытых ордеров и позиций, которое можно одновременно иметь на счете. Также здесь можно настроить сессии, когда тестируемой программе будет запрещено торговать.


    Маржа
    Здесь вы можете полностью контролировать, как будет резервироваться маржа и какая система учета позиций будет использована при тестировании:

    • Управление рисками — модель управления рисками: внебиржевые и биржевые, с неттингом и хеджингом. Подробная информация о них доступна в справке.
    • Уровень "Margin call" — уровень средств на счете, при достижении которого он переходит в состояние Margin call.
    • Уровень "Stop out" — уровень средств, при достижении которого на счете принудительно снимаются ордера и закрываются торговые позиции. Оба уровня можно указывать в деньгах и в процентах. В первом случае уровни определяются как значение показателя "Средства" на счету. При выборе опции "В процентах" уровни определяются как значение показателя "Уровень маржи" на счету (Средства/Маржа*100).
    • Нереализованная — в данном поле указывается, каким образом будет учитываться текущая незафиксированная прибыль/убыток в свободной марже:
      • Не использовать нереализованную прибыль/убыток — не учитывать открытые позиции при расчете.
      • Использовать нереализованную прибыль/убыток — использовать при расчете убыток и прибыль по открытым позициям.
      • Использовать нереализованную прибыль — использовать только прибыль.
      • Использовать нереализованный убыток — использовать только убыток.
    • Дневная фиксированная — в данном поле указывается, каким образом будет учитываться прибыль/убыток, зафиксированный трейдером в течение торгового дня, в свободной марже:
      • Использовать дневную фиксированную прибыль/убыток — учитывать прибыль и убыток, зафиксированные в течение торгового дня, в свободной марже.
      • Использовать дневной фиксированный убыток — учитывать только убыток, зафиксированный в течение торгового дня, в свободной марже. В течение дня накопленная прибыль фиксируется в отдельном поле счета ("Заблокировано"). По окончании торгового дня накопленная прибыль освобождается (обнуляется) и отражается на балансе счета (учитывается в свободной марже).
    • Освобождать накопленную прибыль в конце дня — данная опция доступна только при включении опции "Использовать дневной фиксированный убыток". Если она включена, то в конце торгового дня прибыль, накопленная в течение дня, будет освобождаться и записываться на баланс (а соответственно учитываться в свободной марже). В ином случае — не будет.


    Комиссия
    В этом разделе вы полностью контролируете, как взимается комиссия со всех торговых операций.

    • Комиссии могут быть одноуровневыми и многоуровневыми, т.е. взиматься в одинаковом размере независимо от объема сделки/оборота или разниться в зависимости от их величины. Соответствующая информация выводится в спецификации.
    • Комиссии могут взиматься сразу при совершении сделки или в конце торгового дня/месяца.
    • Комиссии могут взиматься в зависимости от направления сделки: за вход, за выход или за оба типа операций.
    • Комиссии могут взиматься за каждый лот или за каждую сделку.
    • Комиссии могут взиматься в разных величинах: в деньгах, процентах или пунктах.



  9. Tester: Оптимизирована и значительно ускорена работа в режиме "Сканирование рынка", когда производится несколько проходов тестирования по всем символам из "Обзора рынка".
  10. Tester: При расчете прибыли в пипсах теперь учитывается размер сделки или позиции. Ранее расчет велся без учета объема — как для одного лота.
  11. Tester: Улучшено управление графиком результатов оптимизации. При увеличении масштаба обычного графика оптимизации появилась возможность его прокручивать. Двойной клик на точке графика теперь выделяет соответствующий результат в таблице проходов.
  12. MetaEditor: Добавлен показ файлов баз данных SQLite (*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3) в "Навигаторе".
  13. MetaEditor: Исправлены ошибки при сохранении свойств проекта.
  14. Обновлена документация.

Обновление будет доступно через систему LiveUpdate.

fxsaber  

Если в такой ситуации (только три exe-файла и MQL5.zip) запустить terminal64.exe, то zip-файл будет удален.

Несколько раз так потерял подготовленные данные для воспроизведения трудно-уловимого бага.

Строка для поиска: Uluchshenie 006.
SeriousRacoon  

DirectX есть, базы данных есть, теперь давайте воткнём в пятёрку окошко с порн-хабом.

Между тем, есть баг, который тянется ооооч давно - это баг именно пятёрки. Если какое-то значение гистограммы в индикаторе очень мало, оно просто не отображается - на гистограмме пустая дырка, причём это зависит от высоты окна индикатора (дырка моргает при изменении высоты). Можно проверить на штатном osma. Что интересно, в 4 этого бага нет, любое самое малое значение отображается высотой в 1 пиксель.

fxsaber  

MetaQuotes:

Tester: Добавлена возможность задавать собственные настройки торгового счета при тестировании стратегий — торговые ограничения, настройки маржи и комиссии. Таким образом, вы получаете еще больше возможностей для моделирования различных торговых условий у брокеров.

Хотелось бы иметь режим "без ограничений". Чтобы не было никаких проверок - ради ускорения. При исследованиях очень востребовано.

Tester: При расчете прибыли в пипсах теперь учитывается размер сделки или позиции. Ранее расчет велся без учета объема — как для одного лота.

Предлагаю учитывать комисиию в этом режиме, если задана кастомная комиссия в пипсах. Это очень удобно. Сейчас приходится отказываться от режима по пипсам, когда нужно учесть комиссию в пипсах.

Tester: Улучшено управление графиком результатов оптимизации. При увеличении масштаба обычного графика оптимизации появилась возможность его прокручивать. Двойной клик на точке графика теперь выделяет соответствующий результат в таблице проходов.

Удобно!

Строка для поиска: Uluchshenie 007.

Vladimir Perervenko  

Эти нововведения дают возможность создавать инфраструктуру для серьезных комплексов торговых стратегий. Впечатляет. Это новый, более высокий уровень платформы.

Очень жаль, что отказано во внедрении R.

Удачи в дальнейшей работе.

fxsaber  

Будут ли настройки исполнения отложенных ордеров и TP-уровней? Имеется в виду вопрос скольжений. И проверка исполнения лимитного ордера на том же тике, на котором он установлен.

Сейчас HFT очень трудно тестить.

Igor Makanu  

нововведения хорошие, но нужно как то в справке в одном разделе - тестер? указать, что не будет работать в тестере стратегий

очень много новых возможностей, но найти инфу, что не работает в тестере - сейчас это уже труд

Vladimir Pastushak  
MetaQuotes:

В пятницу 21 февраля 2020 года будет выпущена обновленная версия платформы MetaTrader 5. Обновление содержит следующие изменения:

Обновление будет доступно через систему LiveUpdate.

Лучше бы реализовали возможность в любом советнике, с закрытым кодом, подключать любой индикатор с закрытым кодом...

Сейчас не возможно сделать советник в котором можно вывести параметры подключаемого индикатора. А было бы очень хорошо, для всех...

Лучше бы партнерку вернули в маркет, обещали несколько лет назад....

В МетаЕдиторе то же бы неплохо добавить функционала и удобств... Новые возможности добавляете, а работать с ними как в блокноте не всегда удобно...

Artyom Trishkin  

Ну перевести-то можно было и по-русски:


Внизу кнопки "Импорт" и почему-то "Экспортировать", которое не влезает в кнопку. Тогда уж "Экспорт" - влезет, да и созвучно импорту...

Ну или "Импортировать" и "Экспортировать" и ширину кнопок увеличить.

Надписи в выпадающем меню не помещаются в размер:


Чтобы всё это влезло, нужно растянуть окно шире одного экрана:


по причине, что ширина столбцов не настраивается вручную, а растягивается автоматически пропорционально ширине окна.

Valentin Dobroletov  

А на биржевых данных работает комиссия? 

Ставлю такие настройки, не работает. Кто может подсказать, что не так делаю?

вкладка "Общие"


вкладка "комиссии" без галки


вкладка "комиссии" с галкой


отчет


fxsaber  
Valentin Dobroletov:

Ставлю такие настройки, не работает. Кто может подсказать, что не так делаю?

Нулевые поля не заполнены. Зайдите на любой демо-счет с комиссией и посмотрите, чему соответствуют эти поля.

Конечно, их перевод далек от быстрого понимания.

Причина обращения: