MetaTrader 5 build 1860: функции для работы с барами в MQL5 и улучшения в тестере стратегий

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

15 июня 2018

Терминал

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

    Также для облегчения поиска в список добавлены логотипы компаний. Если нужного брокера нет в списке, просто наберите название компании или адрес сервера в поисковой строке и нажмите "Найти вашего брокера".

    Чтобы помочь начинающим трейдерам, в диалог добавлены описания типов счетов. Также в связи с обновлением General Data Protection Regulation (GDPR) при открытии счета теперь могут показываться ссылки на различные соглашения и политики брокерских компаний:

    Значительно расширены возможности для открытия реальных счетов. Функция загрузки документов для подтверждения личности и адреса, представленная ранее в мобильных терминалах, теперь доступна и в десктопной версии. MiFID-регулируемые брокеры теперь могут запрашивать всю необходимую информацию для идентификации клиента, включая данные о занятости, доходах, опыте торговли и т.п. Все это позволит проще и быстрее получать реальные счета, а также избавит от лишней бюрократии.

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

  3. В историю позиций добавлено отображение значений Стоп Лосс и Тейк Профит. Они заполняются в соответствии со значениями Стоп Лосс и Тейк Профит сделок, открывающих и закрывающих соответствующие позиции.

  4. Теперь при отображении отложенных ордеров на графике используется текущий объем ордера вместо изначально запрошенного.

  5. Оптимизировано и значительно ускорено отображение стакана цен в расширенном режиме с включенным показом спреда.
  6. Оптимизирована обработка результатов выполнения торговых запросов. В некоторых случаях это может дать значительное ускорение обработки.
  7. Исправлена ошибка работы Трейлинг Стопа, в некоторых случаях приводившая к отправке нескольких запросов на изменение уровня Стоп Лосс у одной позиции.
  8. Исправлена установка минимального и максимального объема, а также шага объема в свойствах пользовательских инструментов.
  9. Исправлена ошибка, из-за которой опция "Фиксировать масштаб" не учитывалась при применении шаблона к графику торгового инструмента.
  10. Исправлена ошибка, в некоторых случаях приводившая к некорректному накоплению тиковой истории.

MQL5

  1. Увеличена скорость работы MQL5-программ за счет дополнительной оптимизации исходного кода при компиляции. Чтобы получить прирост скорости, перекомпилируйте ваши программы в новой версии MetaEditor.
    К сожалению, дополнительная оптимизация привела к потере совместимости новых программ с предыдущими версиями терминала. Все программы, скомпилированные в MetaEditor версии 1860 и выше, не будут запускаться в терминалах версии ниже 1860. При этом программы, скомпилированные ранее в предыдущих версиях MetaEditor, будут в работать в новых терминалах.
  2. Добавлены функции iTime, iOpen, iHigh, iLow, iClose, iVolume, iBars, iBarShift, iLowest, iHighest, iRealVolume, iTickVolume, iSpread. Эти функции аналогичны используемым в MQL4. Таким образом, пользователям будет проще переносить код торговых программ в платформу пятого поколения.

    Ранее большинство задач, решаемых этими функциями, можно было легко выполнить при помощи функций Copy*. Однако для поиска максимальных/минимальных значений на графике и поиска баров по времени пользователю требовалось реализовывать собственные функции. Теперь это можно легко выполнить функциями iHighest, iLowest и iBarShift.

    iTime
    Возвращает значение времени открытия бара (указанного параметром shift) соответствующего графика.
    datetime  iTime(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iOpen
    Возвращает значение цены открытия бара (указанного параметром shift) соответствующего графика.
    double  iOpen(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iHigh
    Возвращает значение максимальной цены бара (указанного параметром shift) соответствующего графика.
    double  iHigh(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iLow
    Возвращает значение минимальной цены бара (указанного параметром shift) соответствующего графика.
    double  iLow(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iClose
    Возвращает значение цены закрытия бара (указанного параметром shift) соответствующего графика.
    double  iClose(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iVolume
    Возвращает значение тикового объема бара (указанного параметром shift) соответствующего графика.
    long  iVolume(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iBars
    Возвращает количество баров в истории по соответствующему символу и периоду.
    int  iBars(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe        // период
       );

    iBarShift
    Поиск бара по времени. Функция возвращает индекс бара, в который попадает указанное время.
    int  iBarShift(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       datetime         time,            // время
       bool             exact=false      // режим
       );

    iLowest
    Возвращает индекс наименьшего найденного значения (смещение относительно текущего бара) соответствующего графика.
    int  iLowest(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              type,            // идентификатор таймсерии
       int              count,           // число элементов
       int              start            // индекс
      );

    iHighest
    Возвращает индекс наибольшего найденного значения (смещение относительно текущего бара) соответствующего графика.
    int  iHighest(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              type,            // идентификатор таймсерии
       int              count,           // число элементов
       int              start            // индекс
      );

    iRealVolume
    Возвращает значение реального объема бара (указанного параметром shift) соответствующего графика.
    long  iRealVolume(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iTickVolume
    Возвращает значение тикового объема бара (указанного параметром shift) соответствующего графика.
    long  iTickVolume(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

    iSpread
    Возвращает значение спреда бара (указанного параметром shift) соответствующего графика.
    long  iSpread(
       string           symbol,          // символ
       ENUM_TIMEFRAMES  timeframe,       // период
       int              shift            // сдвиг
       );

  3. Добавлена функция TesterHideIndicators. Она задает режим показа/скрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. Укажите флаг true, если необходимо скрывать создаваемые индикаторы, иначе false.
    void  TesterHideIndicators(
       bool      hide     // флаг
       );
  4. Добавлена генерация события CHARTEVENT_CLICK при нажатии мышью на торговых уровнях графика.
  5. Исправлена и оптимизирована работа функций CopyTicks.
  6. Исправлено значение, отдаваемое функцией SymbolInfoDouble для свойства SYMBOL_PROP_LIQUIDITY_RATE.
  7. Исправлена ошибка копирования строковых массивов с пересекающейся областью памяти.
  8. Исправлена ошибка выделения строкового массива в функции FileReadArray.
  9. Исправлен ряд ошибок в стандартной библиотеке MQL5.

Tester

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

    Изменения в формате хранения кэша оптимизации

    Ранее кэш оптимизации хранился в виде одного XML-файла, в который попадали все проходы оптимизации эксперта с заданными настройками тестирования. В один и тот же файл попадали результаты оптимизации с разными входными параметрами.

    Теперь кэш оптимизации хранится в виде бинарных файлов отдельно для каждого набора оптимизируемых параметров. За счет изменения формата и сокращения размера файлов работа тестера с кэшем оптимизации значительно ускорилась. Это ускорение будет особенно заметно при продолжении ранее приостановленной оптимизации.

    Просмотр результатов ранее выполненных оптимизаций

    Теперь вы можете просматривать результаты ранее выполненных оптимизаций прямо в тестере стратегий, не разбирая огромные XML-файлы в сторонних программах. Откройте вкладку "Результаты оптимизации", выберите эксперта и файл с кэшем оптимизации:

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

    Пересчет критерия оптимизации на ходу

    Критерий оптимизации — некий показатель, значение которого определяет качество тестируемого набора входных параметров. Чем больше значение критерия оптимизации, тем лучше оценивается результат тестирования с данным набором параметров.

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

    Как использовать кэш оптимизации вручную

    Ранее кэш оптимизации хранился в виде XML-файла, который можно было открывать и анализировать в сторонних программах. Теперь он хранится в закрытых бинарных файлах. Чтобы получить данные в формате XML, экспортируйте их через контекстное меню вкладки "Результаты оптимизации".

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

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




  3. Убран запрет на использование OpenCL в агентах тестирования. Ранее OpenCL-устройства можно было использовать только при тестировании на локальных агентах. Теперь агентам разрешено использовать все доступные OpenCL-устройства (процессор, видеокарту) при работе в локальной сети и в MQL5 Cloud Network.

MetaEditor

  1. Оптимизирована и ускорена работа с версионным хранилищем данных MQL5 Storage.
  2. Исправлено возобновление отладки после приостановки в MQH-файле.
  3. Исправлены ошибки подсветки исходного кода в редакторе.
  4. Исправлена ошибка перехода по результатам поиска.
  5. Исправлена массовая замена текста. В некоторых случаях заменялось только первое вхождение заменяемой последовательности вместо всех.

Обновлена документация.