Новая версия платформы MetaTrader 5 build 2615: Фундаментальный анализ и комплексный критерий в тестере стратегий

 

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

  1. Terminal: Расширены возможности для фундаментального анализа инструментов.

    Добавлены новые свойства торговых инструментов, позволяющие еще более точно категоризировать их:

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

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



    Также новые свойства теперь доступны в спецификации контрактов:



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



    Доступность новых данных зависит от брокеров, поскольку именно они контролируют настройки. Однако мы постарались сделать так, чтобы информация стала доступна по умолчанию для максимального количества инструментов. Как только брокеры обновят свои серверы на новую версию, данные по странам, секторам и индустрии появятся в ваших платформах.
  2. Terminal: Улучшена витрина Сигналов и Маркета. В частности, в левую часть окна добавлены кнопки для оформления подписки и для всех вариантов аренды:



    Помимо этого, внесены улучшения для более удобной работы: новые яркие цвета для кнопок, более заметные кнопки входа в MQL5-аккаунт и др.

  3. Terminal: Исправлено вычисление потенциальной прибыли/убытка для уровней Стоп Лосс и Тейк Профит на графиках.



  4. Terminal: Исправлены ошибки в расчете синтетических инструментов. В некоторых случаях ошибки могли приводить к зависанию платформы при запуске.
  5. Terminal: Исправлено отображение значений встроенного индикатора Fractals в Окне данных.
  6. Terminal: Полностью обновлены иконки на панелях инструментов для поддержки HiDPI-мониторов.
  7. Terminal: Исправлена ошибка коррекции объема позиции при копировании торговых сигналов. В некоторых случаях корректировка могла не производиться из-за неправильного применения стоп-уровней, что приводило к ошибке "invalid stops".
  8. Terminal: Оптимизировано перестроение ценовой истории в случае ее изменения на сервере.
  9. Terminal: Исправлен показ подсказок для торговых уровней на графиках. В некоторых случаях они могли показываться даже при отключенном показе торговых уровней.
  10. Terminal: Исправлена работа опции "Показать на графиках \ Автообновление" в контекстном меню ордеров и позиций в разделе "Инструменты \ Торговля". Теперь при отключении этой опции показ торговой истории отключается для всех открытых графиков.
  11. MQL5: Добавлена функция MathClassify. Она определяет тип вещественного числа и возвращает результат в виде значения из нового перечисления ENUM_FP_CLASS.
    ENUM_FP_CLASS  MathClassify(
       double  value      // вещественное число
       );
    Перечисление содержит следующие значения:

    • FP_SUBNORMAL — субнормальное число, которое находится ближе к нулю, чем наименьшее представимое нормализованное число DBL_MIN — 2.2250738585072014e-308.
    • FP_NORMAL — нормализованное число, которое находится в диапазоне от 2.2250738585072014e-308 до 1.7976931348623158e+308.
    • FP_ZERO — положительный или отрицательный ноль.
    • FP_INFINITE — число, которое не может быть представлено соответствующим типом — положительная или отрицательная бесконечность.
    • FP_NAN — не является числом.

    Для проверки вещественного числа на валидность можно использовать следующий код:
    if(MathClassify(value)>FP_ZERO)
      {
       Print("value is not a valid number");
      }
  12. MQL5: Добавлены новые свойства символов, которые можно получить функциями SymbolInfoString:

    • SYMBOL_COUNTRY — страна компании, чьи акции обращаются на бирже.
    • SYMBOL_SECTOR_NAME — сектор экономики, к которому относится инструмент. Например: энергетика, финансы, здравоохранение и т.д.
    • SYMBOL_INDUSTRY_NAME — индустрия, к которой относится инструмент. Например: спортивная одежда и аксессуары, производство автомобилей, ресторанный бизнес и т.д.

    Свойства возвращаются в виде строки.

    Сектор и индустрия, к которым относится инструмент, также можно получить в виде значения перечисления. Для этого запросите следующие свойства при помощи функции SymbolInfoInteger:

    • SYMBOL_SECTOR
    • SYMBOL_INDUSTRY

    Для работы с этими свойствами добавлены перечисления ENUM_SYMBOL_SECTOR и ENUM_SYMBOL_INDUSTRY.

  13. MQL5: Реализован новый механизм управления памятью в MQL5-программах. Он выделяет память до 3-х раз быстрее. Также он позволяет избежать ряда потенциальных ошибок доступа к памяти.
  14. MQL5: Оптимизирована и значительно ускорена работа с торговой историей счета при помощи функций History*.
  15. MQL5: Исправлен вызов WebRequest из точки входа OnDeinit. Ранее при остановке эксперта эта функция не вызывалась.
  16. MQL5: Исправлен вызов функции WebRequest из сервисов. Ранее функция могла не вызываться после перезапуска сервиса.
  17. MQL5: Добавлена проверка поддержки устройством типа double при использовании OpenCL. В финансовых расчетах тип float не подходит из-за слишком большого округления. В связи с этим при расчетах платформа явно требует поддержку double. Теперь при ее отсутствии в журнал платформы будут выводиться сообщения вида device '<name>' does not support type 'double'. Ранее вместо него выдавалось общее сообщение об ошибке.
  18. MQL5: Значительно ускорено выполнение функции AccountInfoDouble с параметрами ACCOUNT_EQUITY и ACCOUNT_BALANCE.
  19. MQL5: Исправлена ошибка, возникавшая при применении шаблона к графику при помощи функции ChartApplyTemplate.
  20. MQL5: Исправлена ошибка вызова функции ChartSetInteger с параметром CHART_BRING_TO_TOP.
  21. MQL5: В поставляемую библиотеку Alglib добавлен метод Conjugate для расчета сопряженного числа комплексного числа. Библиотека находится в каталоге MQL5\Include\Math\Alglib.
  22. MQL5: Полностью обновлен профилировщик кода. Новый профилировщик работает значительно быстрее и точнее предыдущего.

    • Для анализа в новом профилировщике используется код, оптимизированный точно также, как при компиляции релизной версии программы. Это позволяет более точно определить скорость работы кода, поскольку именно такой код будет использоваться в реальной работе программы.
    • Новый профилировщик использует метод профилирования "Sampling". Это легковесный и точный метод, который собирает статистические данные о работе приложения: через определенные интервалы времени снимаются данные о стеке вызовов и на основе них производится расчет производительности.
    • В отличие от предыдущей версии, новый профилировщик не вносит никаких изменений в анализируемый код. Ранее используемый метод "Instrumentation" добавлял в код определенные конструкции, которые использовались для замера скорости работы функции. Это могло влиять на скорость работы конечного кода.

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

  23. Tester: Оптимизирована работа с облачной сетью вычислений MQL5 Cloud Network. Исправлены ошибки загрузки экспертов агентами.
  24. Tester: Добавлен новый критерий оптимизации "Complex Criterion max". Это интегральный, комплексный показатель качества прохода тестирования. Он учитывает сразу несколько параметров:

    • Количество сделок
    • Просадка
    • Фактор восстановления
    • Мат. ожидание выигрыша
    • Коэффициент Шарпа

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

    Выберите новый критерий в настройках тестера стратегий и запустите оптимизацию.



    В результатах оптимизации значение "Complex Criterion max" будет выведено отдельной колонкой "Result". По ней можно сортировать проходы. Новый критерий также поддерживает цветовую подсветку, которая позволяет визуально определить наиболее удачные проходы. Значения ниже 20 подсвечиваются красным, выше 80 — темно зеленым.



  25. Tester: Исправлено начисление пользовательских комиссий в тестере стратегий.
  26. MetaEditor: Начата глобальная переработка функций интеллектуального управления кодом (интеллисенс).

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

    Дальнейшие улучшения ожидайте в ближайших версиях платформы.

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

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

 
MetaQuotes:

Обновление содержит следующие изменения:

  1. Terminal: Расширены возможности для фундаментального анализа инструментов.

    Добавлены новые свойства торговых инструментов, позволяющие еще более точно категоризировать их:

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

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

    Также новые свойства теперь доступны в спецификации контрактов:

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

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


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

В связи с этим, убедительно прошу Вас добавить константы-свойств в кастомные символы. Чтобы пользователь сам мог заполнять необходимые ему свойства кастомного символа.
Так же убедительно прошу, исправить текущие ошибки по заполнению свойств кастомных символов.
Скрипт воспроизводящий ошибки я предоставлял @Ilyas им была создана заявка.
Будут ли исправлены эти ошибки, в этом обновлении?
    

 

MetaQuotes:

23 MetaEditor: Начата глобальная переработка функций интеллектуального управления кодом (интеллисенс). 


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

это не работает правильно, начал набирать CopyOpen() - окно подсказки вылезло за левый край монитора:


 

MQL5: Значительно ускорено выполнение функции AccountInfoDouble с параметрами ACCOUNT_EQUITY и ACCOUNT_BALANCE.

Похоже, проделали ревизию всего на тормоза.

 

MQL5: Исправлена ошибка, возникавшая при применении шаблона к графику при помощи функции ChartApplyTemplate.


Что именно было поправлено ?

Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
Применяет к графику указанный шаблон. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Если посредством этой...
 

Будет ли реализована работай Айсберг заявок на ФОРТС Moex?

https://www.moex.com/s3171

Московская Биржа - Заявки типа "Айсберг"
Московская Биржа - Заявки типа "Айсберг"
  • www.moex.com
Заявки типа «Айсберг». *Сервис будет доступен с запуском новой версии ТКС SPECTRA 6.5 14 сентября 2020 г. Заявки типа "Айсберг" представляют собой классические безадресные лимитированные заявки, в которых указывается общее количество контрактов и их "видимое количество". Данный тип заявки проявляется в стакане порциями. Когда видимая часть полностью исполняется в рынке, тогда "всплывает" следующая порция. Так может повторяться до тех пор, пока вся скрытая часть не будет исчерпана.
 
Остается гореть кнопка Стоп после такого.
2020.09.12 04:05:52.498 Core 5  genetic pass (0, 1) tested with error "Tester Agent is wrong for task processing due low disk space" in 0:00:04.105
2020.09.12 04:05:52.498 Core 5  connection closed


Думаю, это правильно. Правда, при большом количестве кастомных символов папка bases забивается быстро.

Например, имеются 200 кастомных символов. Если залогиниться на Server1, то эти кастомные символы будут располагаться в этой папке Tester\bases\Server1\.

Если после этого сделать логин на Server2, то эти же символы продублируются в другую папку:  Tester\bases\Server2\.

Наверное, это не очень правильно, что одни и те же символы повторяются.


Регулярно чищу bases-папку от кастомных символов. Особенно это нужно делать, когда кастомный символ обновился. Иначе рискуешь на старой не актуально истории получать результаты бектеста.

 

Профилировщик отменяет загрузку.


MT5, сборка 2605

Пример:

 int test_1()
{  
   switch ( 10 )
   {
   case 0 :
       return 1 ;
   case 1 :
       return 1 ;
   case 2 :
       return 1 ;
   case 3 :
       return 1 ;
   case 4 :
       return 1 ;
   case 5 :
       return 1 ;
   case 6 :
       return 1 ;
   case 7 :
       return 1 ;
   case 8 :
       return 1 ;
   case 9 :
       return 1 ;
   case 10 :
       return 1 ;
   default :
         return 0 ;
   }
  
   return 2 ; 
}   
 int test_2()
{  
 
   
         switch ( 3 )
      {
       case 0 :
         return    1 ;
       case 1 :
         return 1 ;
       case 2 :
         return 1 ;
       case 3 :
         return 1 ;
   
       default :
             return 0 ;
      }
    
 return 2 ;
}

 void OnTick ()
  {
     for ( int x= 1 ;x<= 100000 ; x++) 
     {  
       int res1 = test_1();
     }
     for ( int x= 1 ;x<= 100000 ; x++) 
     {  
       int res2 = test_2();
     }


   // TesterStop(); 
  
  }
 
Igor Makanu:

this does not work correctly, I started typing CopyOpen() - the hint window popped out over the left edge of the monitor:


I also came to report this. It has made me revert to previoud builds over ten time. Each time coming back to see if it is fixed.

Too bad I'm reverting again.

 
Christian:

Профилировщик отменяет загрузку.


MT5, сборка 2605

Пример:

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

 
Renat Fatkhullin :

Der Code wird vom Optimierer vollständig geschnitten, bis die OnTick-Funktion leer wird.

Renat Fatkhullin :

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

Хорошо я понял. Потому что «случай переключения» всегда идет одним и тем же путем.

Спасибо за чаевые.