MetaTrader 5 build 2265: Функции DirectX для 3D-визуализации в MQL5 и настройка инструментов в тестере стратегий

Что нового в MetaTrader 5?

6 декабря 2019

Terminal

  1. Расширен список доступных колонок в Обзоре рынка. Теперь в основном разделе вы можете включить до 40 дополнительных параметров инструментов, которые ранее были доступны только на вкладке "Детали".




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




  3. Обновлен дизайн рамок у графиков. Они стали более компактными, освобождая больше пространства для полезной информации.




  4. Изменен алгоритм подсчета итогов при отображении торговой истории в виде позиций. Теперь они рассчитываются по фактическим записям.

    Для представления истории в виде позиций терминал использует информацию о сделках, совершенных в период, за который запрошена история. При этом показываются только позиции, которые были закрыты в этот период. Если позиция все еще открыта или время ее закрытия не попадает в выбранный интервал, она не будет отображена. В связи с этим итоговые показатели (прибыль, комиссия) при просмотре позиций и при просмотре ордеров/сделок могут отличаться.

    Например, вы просматриваете историю за последнюю неделю. За нее было совершено 100 сделок, 98 из которых открыли и закрыли 20 позиций. Две последние сделки открыли новые позиции, которые в настоящий момент не закрыты. В этом случае при просмотре истории в виде сделок вы увидите 100 записей, а также итоговые показатели, рассчитанные на их основе. При просмотре истории в виде позиций вы увидите 20 записей, собранных на основе 98 сделок. И именно эти данные будут учтены при расчете итоговых показателей. Если брокер взимает комиссию со сделок входа, то итоговый размер комиссии при просмотре истории сделок и позиций будет отличаться, поскольку в последнем случае 2 последние сделки не будут учтены.

  5. Ускорен запуск MQL5-программ.
  6. Добавлен ключ /beta для инсталляционного файла терминала, позволяющий загрузить бета-версию программы вместо релизной. В обычном режиме для получения бета-версии требуется сначала установить релизную, а затем уже обновить ее. Теперь этот шаг можно пропустить, сэкономив время и трафик. Пример запуска установки:
    C:\mt5setup.exe /beta
  7. Исправлена ошибка в отображении маржинальных требований для биржевых акций (инструменты с типом "Exchange Stocks").
  8. Ускорена работа всех компонентов платформы за счет перехода на компилятор Clang/LLVM. В некоторых случаях ускорение достигает 20%.

MQL5

  1. Добавлены новые функции и шейдеры DirectX 11 для 3D-визуализации. Теперь вы можете создавать мощную трехмерную графику прямо из MQL5.

    Новый класс CCanvas3D является расширением класса пользовательской графики CCanvas. Он доступен в каталоге \MQL5\Include\Canvas\. В нем реализованы функции для рендеринга трехмерных объектов через DirectX API.

    • Create — создание сцены.
    • Attach — привязка сцены к графику.
    • Destroy — уничтожение сцены.
    • ObjectAdd — добавление объекта-наследника базового класса CDXObject на сцену.
    • Render — полный цикл отрисовки с очисткой буферов и отрисовкой всех CDXObject, добавленных с помощью метода ObjectAdd.
    • RenderBegin — начинает отрисовку сцены, заполянет буфер изображения заданным цветом (при использовании флага DX_CLEAR_COLOR) и буферы глубины (при использовании DX_CLEAR_DEPTH), а также устанавливает буфер сцены DXInputScene для шейдеров по умолчанию.
    • RenderEnd — завершает отрисовку сцены и получает результат во внутренний буфер. При redraw==true выводит изображение на график, к которому присоединен.
    • ViewMatrixGet — получение матрицы отображения.
    • ViewMatrixSet — установка матрицы отображения. Матрица несовместима с методами ViewPositionSet, ViewRotationSet, ViewTargetSet, ViewUpDirectionsSet.
    • ViewPositionSet — установка точки зрения/положения камеры.
    • ViewRotationSet — установка матрицы вращения камеры.
    • ViewTargetSet — установка точки, на которую направлена камера. Совместно с ViewUpDirectionsSet является альтернативой ViewRotationSet.
    • ViewUpDirectionsSet — установка вертикального направления камеры. Совместно с ViewTargetSet является альтернативой ViewRotationSet.
    • ProjectionMatrixGet — получение матрицы проекции.
    • ProjectionMatrixSet — установка матрицы проекции.

    Полная документация по новой библиотеке станет доступна в ближайшее время.




  2. Добавлена поддержка работы с базами данных SQLite прямо из MQL5. Теперь вы можете легко выполнять SQL-запросы без создания сложных обвязок. Новое расширение стандартной библиотеки берет всю внутреннюю работу на себя.

    Доступны следующие функции:

    • DatabaseOpen — открывает или создаёт базу данных в указанном файле
    • DatabaseClose — закрывает базу данных
    • DatabaseTableExists — проверяет наличие таблицы в базе данных
    • DatabaseExecute — исполняет запрос к указанной базе данных
    • DatabasePrepare — создает хендл запроса, который затем может быть исполнен с помощью DatabaseRead()
    • DatabaseRead — выполняет переход к следующей записи в результате запроса
    • DatabaseFinalize — удаляет запрос, созданный в DatabasePrepare()
    • DatabaseTransactionBegin — начинает выполнение транзакции
    • DatabaseTransactionCommit — завершает выполнение транзакции
    • DatabaseTransactionRollback — выполняет откат транзакций
    • DatabaseColumnsCount — получает количество полей в запросе
    • DatabaseColumnName — получает имя поля по номеру
    • DatabaseColumnType — получает тип поля по номеру
    • DatabaseColumnSize — получает размер поля в байтах
    • DatabaseColumnText — получает из текущей записи значение поля в виде строки
    • DatabaseColumnInteger — получает из текущей записи значение типа int
    • DatabaseColumnLong — получает из текущей записи значение типа long
    • DatabaseColumnDouble — получает из текущей записи значение типа double
    • DatabaseColumnBlob — получает из текущей записи значение поля в виде массива

    Для работы с новыми функциям добавлены следующие коды ошибок:

    • ERR_MQL_DATABASE_INTERNAL (5120) — внутренняя ошибка базы данных
    • ERR_MQL_DATABASE_INVALID_HANDLE (5121) — невалидный хендл базы данных
    • ERR_MQL_DATABASE_TOO_MANY_OBJECTS (5122) превышено максимально допустимое количество объектов Database
    • ERR_MQL_DATABASE_CONNECT (5123)ошибка подключения к базе данных
    • ERR_MQL_DATABASE_EXECUTE (5124) ошибка выполнения запроса
    • ERR_MQL_DATABASE_PREPARE (5125) ошибка создания запроса
    • ERR_MQL_DATABASE_NO_MORE_DATA (5126) — данных для чтения больше нет
    • ERR_MQL_DATABASE_STEP (5127) ошибка перехода к следующей записи запроса
    • ERR_MQL_DATABASE_NOT_READY (5128) данные для чтения результатов запроса еще не готовы
    • ERR_MQL_DATABASE_BIND_PARAMETERS (5129) ошибка автоподстановки параметров в SQL-запрос

  3. Добавлено новое свойство MQL5-программ для выбора метода визуализации по умолчанию.
    #property optimization_chart_mode "3d,InpX,InpY"
    Используя его, вы можете задать вид графика, открываемого по окончании оптимизации, а также параметры программы для его осей X и Y.

    Свойство задает только вид графика по умолчанию. Пользователь может в любой момент изменить его вручную через контекстное меню.

  4. Добавлена функция MathArctan2. Она возвращает в радианах значение угла, тангенс которого равен отношению двух указанных чисел.
    double  MathArctan2(
       double  y      // y-координата точки
       double  x      // x-координата точки
       );
  5. Проведена общая оптимизация программ для улучшения производительности и снижения потребления ресурсов.
  6. Добавлены примеры математических расчетов, которые можно выполнять в тестере стратегий. Вы можете найти их в каталоге \MQL5\Experts\Examples\Math 3D\.
  7. Реализован более жесткий контроль областей видимости (namespaces).
  8. Добавлена загрузка связанных библиотек при использовании библиотек .NET в MQL5-программах. Если используемая .NET библиотека требует для своей работы другие библиотеки, то компилятор попытается автоматически загрузить их из текущего каталога или из каталога \MQL5\Libraries.
  9. Исправлена работа со временем в модуле MetaTrader для интеграции с Python. Теперь во всех выходных данных используется время торгового сервера, к которому подключен терминал.

Tester

  1. Множество новых функций и улучшений в тестере стратегий:


    Пользовательские настройки для финансовых инструментов
    Теперь вы можете изменять настройки основного торгового инструмента, на котором происходит тестирование/оптимизация. Вам доступны практически все параметры спецификации: объемы, режим торговли, маржинальные требования, режим исполнения и многое другое. Таким образом, для проверки советника в иных торговых условиях теперь необязательно создавать пользовательский символ и загружать в него историю. Можно просто поменять настройки стандартного инструмента.



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




    Последние настройки/эксперты/графики
    Для быстрой настройки тестирования или оптимизации воспользуйтесь новыми командами контекстного меню. Выбирайте последние использованные настройки тестера, последние графики или программы:


MetaEditor

  1. Добавлена возможность работы с проектами С/С++ и Python прямо из MetaEditor. Теперь, используя встроенный редактор, вы можете вести мультиязычные проекты.

    Если на вашем компьютере уже установлены соответствующие компиляторы, MetaEditor обнаружит их и добавит в настройки. Также вы можете самостоятельно указать пути к необходимым компонентам, перейдя к вкладке "Компиляторы". Если компоненты еще не установлены, вы можете их скачать, нажав "Установить" напротив соответствующего поля.




    После этого вы сможете работать с проектами на С/С++ и Python так же, как с обычными MQL5-программами.

  2. Теперь внутри каталога Shared Projects, предназначенного для работы с групповыми проектами через MQL5 Storage, можно создавать подпроекты. Ранее допускалось создание только одиночных проектов на верхнем уровне.
  3. Обновлен встроенный отладчик.
  4. Исправлено добавление заголовка функций при использовании стилизатора кода.
  5. Команды перехода к предыдущему и следующему положению курсора теперь доступны не только в меню "Вид", но и на панели инструментов.
  6. Теперь в именах проектов разрешается использовать пробелы.

Android

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

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



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

  2. Теперь позиции в истории сортируются по дате закрытия.
  3. Позиции, закрытые по Стоп Лоссу или Тейк Профиту, теперь подсвечиваются красными и зелеными вертикальным линиями в разделе истории.
  4. В спецификацию торгового инструмента добавлены новые поля:

    • Категория — свойство используется для дополнительной маркировки финансовых инструментов. Например, в нем могут быть указаны секторы рынка, к которым относится символ: Agriculture, Oil & Gas и т.д. Показывается, только если соответствующая информация предоставляется брокером.
    • Биржа — здесь указывается название биржи или площадки, на которой торгуется символ. Показывается, только если соответствующая информация предоставляется брокером.

  5. Добавлена индикация состояния "Маржин колл" в разделе торговли. При его наступлении параметры "Маржа", "Свободная маржа" и "Уровень маржи" становятся красными.
  6. Исправлено отображение кнопки перехода к разделу одноразовых паролей на планшетах.
  7. Многочисленные исправления и улучшения.

iPhone/iPad

  1. Добавлена возможность быстрого перехода к пополнению/снятию средств с торгового счета на сайте брокера. Подробности работы приведены выше в описании изменений терминала для Android.



  2. Добавлена поддержка темной схемы оформления для iOS/iPadOS.
  3. Раздел работы с OTP паролями теперь доступен и в версии для iPad.
  4. Позиции, закрытые по Стоп Лоссу или Тейк Профиту, теперь подсвечиваются красными и зелеными вертикальным линиями в разделе истории.
  5. Теперь позиции в истории сортируются по дате закрытия. Если позиция еще не закрыта, для сортировки используется дата открытия.
  6. Многочисленные исправления и улучшения.