Новая версия платформы MetaTrader 5 build 4150: экспорт торгового отчета и новые методы машинного обучения в MQL5

 

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

В новой версии появилась функция сохранения торгового отчета в виде файла HTML или PDF. Теперь вы можете легко поделиться своими торговыми достижениями с коллегами или инвесторами. Также в обновлении появилась возможность сохранить в файле текущее состояние показателей в «Обзоре рынка».

Новая версия платформы MetaTrader 5 build 4150: экспорт торгового отчета и новые методы машинного обучения в MQL5

В MQL5 появились новые функции для работы с матрицами и векторами, которые применяются в машинном обучении. Помимо этого, в обновлении были внесены улучшения в профилировщик кода и тестер стратегий.


MetaTrader 5 Client Terminal

  1. Terminal: Добавлен экспорт торгового отчета в файл HTML и PDF. Теперь вы можете легко поделиться своими торговыми достижениями с коллегами или инвесторами. Для экспорта воспользуйтесь меню в самом отчете или меню «Файл».


    Экспорт торгового отчета в файл HTML и PDF


  2. Terminal: Добавлена возможность сохранить текущее состояние окна «Обзор рынка» в файл CSV. Для этого нажмите «Экспорт» в контекстном меню. В файле сохранятся значения выбранных показателей на момент экспорта. Чтобы выгрузить больше данных, включите дополнительные колонки через контекстное меню.


    Экспорт состояния «Обзора рынка»


  3. Terminal: Улучшено отображение маржевых требований в спецификации контракта. Теперь вместо коэффициентов и исходных параметров для расчета отображается итоговое значение маржи. Если сумма залога зависит от объема позиции, в диалоге будут показаны соответствующие уровни.


    Улучшено отображение маржевых требований в спецификации контракта


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

  4. Terminal: Отключена поддержка сервиса "Сигналы" для демо-счетов. Для получения расширенной статистики по вашим тренировочным счетам используйте новый торговый отчет. Он предоставляет массу показателей по прибыльности и рискованности вашей стратегии, содержит графики прироста, баланс и эквити, диаграммы распределения сделок по направлению и инструментам и многое другое.
  5. Terminal: Исправлен показ потенциальной прибыли/убытка при редактировании Тейк Профита и Стоп Лосса для ордеров Stop Limit.
  6. Terminal: Внесены многочисленные исправления и доработки в платежную систему.
  7. Terminal: Исправлена проверка дубликатов при загрузке набора инструментов в «Обзор рынка» из файла *.set.
  8. Terminal: Исправлена работа веб-инсталлятора для Parallels. Теперь при использовании этой системы виртуализации на macOS с процессорами M1/M2/M3 платформа будет устанавливаться корректно.
  9. Terminal: Обновлены переводы пользовательского интерфейса.
  10. MQL5: Добавлены новые методы для работы с матрицами и векторами. Они используются в машинном обучении.

    • ConfusionMatrix — вычисляет матрицу ошибок. Метод применяется к вектору предсказанных значений.
    • ConfusionMatrixMultilabel — вычисляет матрицу ошибок для каждой метки. Метод применяется к вектору предсказанных значений.
    • ClassificationMetric — вычисляет классификационную метрику для оценки качества предсказанных данных по отношению к истинным данным. Метод применяется к вектору предсказанных значений.
    • ClassificationScore — вычисляет классификационную метрику для оценки качества предсказанных данных по отношению к истинным данным.
     
  11. MQL5: Исправлено сохранение данных в текстовый файл формата UTF-8 при помощи функции FileWrite.
  12. MQL5: Отключены и объявлены устаревшими функции Signal*. Теперь они будут возвращать пустые наборы сигналов.
  13. MetaEditor: Увеличена частота сэмплирования при профилировании. Теперь состояние приложения снимается 10000 раз в секунду, что позволяет замерять скорость исполнения функций гораздо точнее.
  14. MetaEditor: Обновлены доступные модели в инструменте автоматического дополнения кода Copilot. Добавлена модель ChatGPT-4 Turbo, убраны устаревшие реализации.
  15. MetaEditor: Исправлены ошибки при замене слов в выделенном фрагменте текста.
  16. Tester: Исправлено зависание форвардного тестирования. Проблема могла возникать в режиме генетической оптимизации.
  17. Tester: Оптимизирована и значительно ускорена работа с торговой историей из MQL5-программ.
  18. Tester: Исправлен расчет прибыли по операциям закрытия встречной. Ошибка могла возникать для торговых инструментов, которые не являются основным инструментом тестирования.
  19. Исправления по крешлогам.

MetaTrader 5 Web Terminal

  1. Исправлено обновление свойств торгового инструмента при их изменении на стороне брокера.
  2. Исправлено отображение тела свечи на графике. Тело могло быть не видно, если оно имело малый размер.
  3. Исправлена работа поля «Страна» в форме открытия счета.

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

 

Форум по трейдингу, автоматизированным торговым системам и тестированию торговых стратегий

Ограничение в библиотеке ковариационной матрицы?

Лоренцос Руссос , 2023.12.22 19:07

Существует ли ограничение на размер библиотеки ковариационной матрицы?

948 функций x 16 000 образцов

   Print ( "Starting eigenveck" );
           matrix original;
                  original.Init( ArraySize (samples), ArraySize (samples[ 0 ].features));   
                   //fill
                   for ( int i= 0 ;i< ArraySize (samples);i++){
                   for ( int j= 0 ;j< ArraySize (samples[ 0 ].features);j++){
                  original[i][j]=samples[i].features[j];                  
                  }
                  } 
             Print ( "Filled original matrix" );
             matrix covariance_matrix=original.Cov( false );
             Print ( "Created covariance matrix" );
 2023.12 . 22 19 : 59 : 48.289 SVMNET_optimizer_01 (EURUSD,H1) Total features( 948 ) Total Outcomes( 966 )
2023.12 . 22 19 : 59 : 48.400 SVMNET_optimizer_01 (EURUSD,H1) Total samples 16144
2023.12 . 22 19 : 59 : 48.400 SVMNET_optimizer_01 (EURUSD,H1) Starting eigenveck
2023.12 . 22 19 : 59 : 48.465 SVMNET_optimizer_01 (EURUSD,H1) Filled original matrix
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) Access violation at 0x00007FF66F790B0E write to 0x0000024959388000
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)    crash -->   00007 FF66F790B0E C5FDE7A1E0000000  vmovntdq   [rcx+ 0xE0 ], ymm4
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B16 4881 C100010000    add        rcx, 0x100
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B1D 4881 C200010000    add        rdx, 0x100
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B24 4981 E800010000    sub        r8, 0x100
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B2B 4981 F800010000    cmp        r8, 0x100
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B32 0 F8378FFFFFF      jnb         0x00007FF66F790AB0
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B38 4 D8D481F          lea        r9, [r8+ 0x1F ]
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B3C 4983 E1E0          and        r9, 0xFFFFFFFFFFFFFFE0
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B40 4 D8BD9            mov        r11, r9
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1)               00007 FF66F790B43 49 C1EB05          shr        r11, 0x05
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 00 : 0x00007FF66F790B0E
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 01 : 0x00007FF66EF0B5E1
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 02 : 0x0000000000E98740
2023.12 . 22 19 : 59 : 50.252 SVMNET_optimizer_01 (EURUSD,H1) 03 : 0x00007FF66EF5189E
int OnInit()
  {
  EventSetMillisecondTimer(44); 
   return(INIT_SUCCEEDED);
  }
  
void OnTimer(){
EventKillTimer();
matrix original;
//original.Init(160,10);//works
original.Init(16000,1000);//fails
for(int r=0;r<original.Rows();r++){
   for(int c=0;c<original.Cols();c++){
      original[r][c]=((double)MathRand())/((double)32767.0);
      }
   }
Print("Values filled");
matrix covariance_matrix=original.Cov(false);
Print("DONE");
ExpertRemove();
}

void OnDeinit(const int reason)
  {
  }

void OnTick()
  {
  }

 
Alain Verleyen #:

Ограничений никаких нет. Будем проверять

 
Slava #:

b4120, в кеше одиночного прохода (tst-формат) не заполняется (нулевое) поле id-позиции.

//+------------------------------------------------------------------+
//| Структура результатов для позиции                                |
//+------------------------------------------------------------------+
struct TesterPositionProfit
{
  UINT64            id;                     // id позиции
  double            mfe;                    // MFE
  double            mae;                    // MAE
  double            profit;                 // прибыль
  INT64             lifetime;               // время жизни позиции в секундах
  UINT64            reserve[3];
};
 

всем привет

есть ли в планах разработки MetaQuotes улучшения MetaEditor ? Интересует вывод интерфейса дебагера из MetaEditor, что бы можно было отлаживать код в сторонних IDE к примеру VSCode ?

 

Какой макрос использовать для определения включения/отключения оптимизации компилятором.

Макрос _DEBUG доступен при компиляции под отладку.
Макрос _RELEASE доступен при компиляции не под отладку.

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

Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
  • www.mql5.com
Условная компиляция (#ifdef, #ifndef, #else, #endif) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
b4120, Терминал не освобождает тиковый кеш после закрытия чарта, поэтому легко забивается вся доступная память на машине.
// Следующий символ в Обзоре рынка.
string NextSymbol()
{
  for (uint i = SymbolsTotal(true); (bool)i--;)
    if (SymbolName(i, true) == _Symbol)
      return(SymbolName(++i, true));
    
 return("");
}

// Запуск себя на следующем символе в Обзоре рынка.
void NextRun()
{
  static const string FileName = "\\Template.tpl";
  const string Symb = NextSymbol();
  
  if ((Symb != "") && ChartSaveTemplate(0, FileName))
    ChartApplyTemplate(ChartOpen(Symb, _Period), FileName);
}

sinput datetime inFrom = D'2023.12.01';

void OnInit()
{
  MqlTick Ticks[];
  
  // Запросили тики для проверки механизма освобождения внутреннего кеша тиков.
  CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, inFrom * 1000);
  ArrayFree(Ticks);

  Print(TerminalInfoInteger(TERMINAL_MEMORY_USED)); // Смотрим потребление памяти Терминалом.
  
  NextRun();    // Запустили себя на следующем символе из Обзора рынка 
  ChartClose(); // и закрыли свой чарт.
}


Результат.

2024.01.08 23:31:27.799 Test6 (GBPHUF,M1)       706
2024.01.08 23:31:28.347 Test6 (GBPNOK,M1)       837
2024.01.08 23:31:28.823 Test6 (GBPNZD,M1)       971
2024.01.08 23:31:29.372 Test6 (GBPSEK,M1)       1032
2024.01.08 23:31:29.785 Test6 (GBPSGD,M1)       1101
2024.01.08 23:31:30.380 Test6 (NZDCAD,M1)       1226
2024.01.08 23:31:30.934 Test6 (NZDCHF,M1)       1298
2024.01.08 23:31:31.301 Test6 (NZDJPY,M1)       1338
2024.01.08 23:31:31.981 Test6 (NZDUSD,M1)       1397
2024.01.08 23:31:32.985 Test6 (NOKJPY,M1)       1442
2024.01.08 23:31:33.976 Test6 (NOKSEK,M1)       1513
2024.01.08 23:31:34.773 Test6 (SGDJPY,M1)       1675
2024.01.08 23:31:35.363 Test6 (USDCAD,M1)       1767
2024.01.08 23:31:35.973 Test6 (USDCHF,M1)       1833
2024.01.08 23:31:36.909 Test6 (USDJPY,M1)       1932
2024.01.08 23:31:37.627 Test6 (USDCNH,M1)       2027
2024.01.08 23:31:38.428 Test6 (CHFNOK,M1)       2108
2024.01.08 23:31:39.007 Test6 (NZDSGD,M1)       2150
2024.01.08 23:31:39.537 Test6 (SEKJPY,M1)       2221
2024.01.08 23:31:39.949 Test6 (EURDKK,M1)       2238
2024.01.08 23:31:40.552 Test6 (USDSGD,M1)       2355

Постоянный рост потребления памяти Терминалом.

Строка для поискаOshibka 088.

 
fxsaber #:
b4120, Терминал не освобождает тиковый кеш после закрытия чарта, поэтому легко забивается вся доступная память на машине.

Постоянный рост потребления памяти Терминалом.

Похоже, потребление идет за счет MaxBars-установки.

// Следующий символ в Обзоре рынка.
string NextSymbol()
{
  for (uint i = SymbolsTotal(true); (bool)i--;)
    if (SymbolName(i, true) == _Symbol)
      return(SymbolName(++i, true));
    
 return("");
}

void OnInit()
{
  Print(TerminalInfoInteger(TERMINAL_MEMORY_USED)); // Смотрим потребление памяти Терминалом.
  
  if (NextSymbol() != "")
    ChartSetSymbolPeriod(0, NextSymbol(), _Period); // Сменили символ на следующий в Обзоре рынка.
  else
    Alert(TerminalInfoInteger(TERMINAL_MAXBARS));
}

Данный советник сам никак не использует исторические данные. При этом вызывает серьезное потребление памяти Терминалом.

 
Добрый день, Сделайте темную тему для терминала мт5  как в веб версии.
 

не про платформу, но про сайт

с недавних пор (день-полтора), последние сообщения в форуме приобрели загадочный вид:

именно последние, и при первом открытии (кнопка F5 "обновить" это дело исправляет)

что-то намудрили в JS с асинхронной загрузкой (и/или кешированием?).

 
Maxim Kuznetsov #:

не про платформу, но про сайт

с недавних пор (день-полтора), последние сообщения в форуме приобрели загадочный вид:

именно последние, и при первом открытии (кнопка F5 "обновить" это дело исправляет)

что-то намудрили в JS с асинхронной загрузкой (и/или кешированием?).

Та же фигня.