Новая версия платформы MetaTrader 5 build 3210: изменен алгоритм расчета Sharpe Ratio и добавлено управление минимальным/максимальным значением индикатора

 

В пятницу 11 февраля 2022 года будет выпущена обновленная версия платформы MetaTrader 5.

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

Также мы добавили два новых свойства INDICATOR_FIXED_MINIMUM и INDICATOR_FIXED_MAXIMUM в перечисление ENUM_CUSTOMIND_PROPERTY_INTEGER, которые позволят фиксировать/отменять минимальное и максимальное значение индикатора с помощью функции IndicatorSetDouble.


Помимо этого, мы исправили некоторые ошибки в математической библиотеке Math\Stat\Math.mqh и поправили работу функций CopyTicks/CopyTicksRange, которые могли отдавать устаревшие данные при переходе через полночь.

Подробнее об этих и других изменениях в новой версии платформы MetaTrader 5 читайте ниже.


  1. MQL5: Добавлены функции Min, Max, ArgMin, ArgMax и Sum для векторов и матриц, которые позволяют находить минимальное и максимальное значения, соответствующие индексы и сумму.
  2. MQL5: Добавлена поддержка методов Flat для матриц. Это позволяет адресоваться к элементу матрицы через один индекс, а не через два.
    double matrix::Flat(ulong index) const;      // getter
    void matrix::Flat(ulong index,double value); // setter

    Псевдокод вычисления адреса элемента матрицы:

    ulong row=index / mat.Cols();
    ulong col=index % mat.Cols();
    
    mat[row,col]

    Например, для матрицы matrix mat(3,3) доступы можно записать так:

      на чтение — x=mat.Flat(4), что эквивалентно записи x=mat[1][1]
      на запись — mat.Flat(5, 42), что эквивалентно записи mat[1][2]=42

    В случае вызова функции с некорректным для матрицы индексом будет сгенерирована критическая ошибка исполнения OutOfRange.

  3. MQL5: Улучшено форматирование дробных чисел во входных параметрах MQL5-программы. При чтении некоторых вещественных чисел в input-параметры подставлялись числа с большим количеством нулей, например, 0.4 представлялось как 0.400000000002.
  4. MQL5: Исправлены ошибки в математической библиотеке Math\Stat\Math.mqh. Кроме того, изменена работа функции MathSample этой библиотеки, чтобы соответствовать классическому поведению таких же математических библиотек при выборке с возвратом.
    MQL5: Исправлена ошибка в работе CopyTicks/CopyTicksRange, приводящая к отдаче устаревших данных при переходе через полночь для тех случаев, когда по инструменту не поступают тики
  5. MQL5: Добавлены новые значения INDICATOR_FIXED_MINIMUM и INDICATOR_FIXED_MAXIMUM в перечисление ENUM_CUSTOMIND_PROPERTY_INTEGER.
    При помощи этих свойств можно включать/отключать фиксирование минимального и максимального значений индикатора с помощью функции IndicatorSetInteger. При вызове IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true) используется текущее минимальное/максимальное значение, соответственно





  6. Tester: Изменен алгоритм расчета Sharpe Ratio — теперь он считается классическим способом, а его значение приводится к годовому интервалу. Предыдущий алгоритм строился на разбросе полученных прибылей и убытков (PnL), но не учитывал колебания эквити при открытых позициях. Теперь в расчет принимаются взлеты и падения эквити, а само значение коэффициента Шарпа трактуется классическим образом:
    •  Sharpe Ratio < 0              Стратегия убыточна, не годится. Плохо.
    •  0 < Sharpe Ratio  < 1.0    Риск не окупается. Такие стратегии могут браться в работу, если нет альтернатив. Неопределенно.
    • Sharpe Ratio ≥ 1.0             Если коэффициент Шарпа превышает единицу, это означает, что риск окупается, портфель/стратегия работает. Хорошо.
    • Sharpe Ratio ≥ 3.0            Высокий показатель говорит о том, что вероятность получить убыток в каждой конкретной сделке очень мала. Очень хорошо.

  7. Terminal: Оптимизировано потребление памяти терминалом.
  8. Terminal: Улучшена работа сетевой подсистемы для повышения производительности и уменьшения сетевых задержек.
  9. Terminal: Убрано отображение нулевого уровня сетки в индикаторе в тех случаях, когда отрисовка сетки отключена.


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

 
MetaQuotes:


Убедительно прошу обновить документацию по всем доступным методам.
Описанные прототипы в документации, привести в соответствие с редактором кода.

Документация по MQL5: Основы языка / Типы данных / Матрицы и векторы
Документация по MQL5: Основы языка / Типы данных / Матрицы и векторы
  • www.mql5.com
Матрицы и векторы - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

MetaQuotes:

Tester: Изменен алгоритм расчета Sharpe Ratio

Представляю, что бы было, если б микрософт изменила поведение хотя бы одного из флагов dwCreationDisposition функции CreateFile.

Ребят, как можно с вашей системой работать в среде такого волюнтаризма?

Приведите тогда эквивалентный код расчёта шарпа в MQL, который бы давал прежние значения.

 

Работаю с МТ5 недавно. Пожалуйста, подскажите, как в новой версии включить отображение комиссии для каждой открытой позиции (сделки) в окне "Терминал"?

В МТ4 с этим не было проблем, достаточно было щёлкнуть правой кнопкой мыши в списке открытых позиций. А здесь я что-то не пойму, как это сделать. Ищу здесь:



 
Ivan Skvortsoff #:

Работаю с МТ5 недавно. Пожалуйста, подскажите, как в новой версии включить отображение комиссии для каждой открытой позиции (сделки) в окне "Терминал"?

В МТ4 с этим не было проблем, достаточно было щёлкнуть правой кнопкой мыши в списке открытых позиций. А здесь я что-то не пойму, как это сделать. Ищу здесь:

никак, только в истории.

но можно написать программу, которая будит выводить комиссии на экран (чарт). 

 
Andrey Dik #:

никак, только в истории.

но можно написать программу, которая будит выводить комиссии на экран (чарт). 

Неожиданный поворот событий 😮

А в чём преимущество такого подхода перед тем, что реализован в МТ4, где можно включить отображение комиссии в окне терминала, а если это не нужно, то можно выключить?

 
Ivan Skvortsoff #:

Неожиданный поворот событий 😮

А в чём преимущество такого подхода перед тем, что реализован в МТ4, где можно включить отображение комиссии в окне терминала, а если это не нужно, то можно выключить?

Комиссия взимается за совершение сделки. А в окне «Терминал» отображаются только позиции и отложенные ордера. Информация о сделках только в истории


 
SeriousRacoon #:

Приведите тогда эквивалентный код расчёта шарпа в MQL, который бы давал прежние значения.

Почитайте статью Математика в трейдинге. Оценка результатов торговых сделок

Составьте массив полученных прибылей и убытков каждого трейда и посчитайте на нем коэффициент Шарпа

Математика в трейдинге. Оценка результатов торговых сделок
Математика в трейдинге. Оценка результатов торговых сделок
  • www.mql5.com
Все мы слышали фразу "Никакая полученная прибыль в прошлом не гарантирует успешных результатов в будущем". Но необходимость оценки торговых систем тем не менее является актуальной. В этой статье мы рассмотрим некоторые простые и удобные методики оценки торговых результатов.
 
Ivan Skvortsoff #:

Неожиданный поворот событий 😮

А в чём преимущество такого подхода перед тем, что реализован в МТ4, где можно включить отображение комиссии в окне терминала, а если это не нужно, то можно выключить?

Комиссия может не быть фиксированной и не быть известной до закрытия позиции (на той же МБ ФОРТС комиссия и довольно хитро считается,  и в некоторых случаях может не браться за закрывающую сделку). И ещё комиссия брокера - отдельная история, может зависеть и от капитала, и от дневного/месячного оборота.

 
Ivan Skvortsoff #:

А в чём преимущество такого подхода перед тем, что реализован в МТ4, где можно включить отображение комиссии в окне терминала, а если это не нужно, то можно выключить?

преимуществ нет.

 
JRandomTrader #:

Комиссия может не быть фиксированной и не быть известной до закрытия позиции (на той же МБ ФОРТС комиссия и довольно хитро считается,  и в некоторых случаях может не браться за закрывающую сделку). И ещё комиссия брокера - отдельная история, может зависеть и от капитала, и от дневного/месячного оборота.

почему бы в таких "сложных" случаях не показывать знак "?" в поле "Комиссия", если таковая не известна и не может быть отображена до закрытия позиции?

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