Новая версия платформы MetaTrader 5 build 4350: больше аналитических объектов в веб-платформе и стартовая страница в MetaEditor

 

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

Мы добавили новые аналитические объекты в веб-версию платформы. Теперь вы можете использовать «линейку» для измерения времени и цен, фигуры (прямоугольник, эллипс, треугольник, круг), а также добавлять любые подписи на график.

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

Новая версия платформы MetaTrader 5 build 4350: больше аналитических объектов в веб-платформе и стартовая страница в MetaEditor

Помимо этого, для функции автоматического дополнения кода AI Assistant появилась поддержка последней модели ChatGPT — GPT-4o.

MetaTrader 5 Client Terminal

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


    Добавлена стартовая страница


    Материалы для новичков
    Раздел «Знакомство» подробно расскажет об обучающих материалах, доступных на MQL5.com: полная документация языка, книги, статьи, форум разработчиков, а также библиотека готовых кодов. Здесь же вы познакомитесь с сервисами, где вы можете применить и монетизировать свои знания: маркет приложений, фриланс-биржа и торговые сигналы.

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

    Полезные функции для тех, кто уже занимается разработкой
    В разделе «Что нового» мы собрали максимум информации, которая нужна разработчику, чтобы держать руку на пульсе:


    Здесь же есть список последних открытых файлов для быстрого доступа.

    Полезные функции для тех, кто уже занимается разработкой


    Если вы уже активно продаете свои приложения в Маркете, отчет «Мои продажи» поможет оценить ваши успехи. Вам доступны:

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


    Мои продажи


  2. MetaEditor: Улучшен встроенный поиск. Теперь верхняя поисковая строка используется только для поиска текста в текущем документе или в локальных файлах. Для глобального поиска по учебным материалам и кодам используйте отдельный раздел в «Инструментах».


    Улучшен встроенный поиск


  3. MetaEditor: Для AI Assistant добавлена поддержка GPT-4o — новейшей модели ChatGPT. Теперь вы можете использовать ее для автоматического дополнения кода и получения подсказок. Выбрать новую модель можно в настройках MetaEditor.


    Для Copilot добавлена поддержка GPT-4o — новейшей модели ChatGPT


  4. MetaEditor: Обновлены переводы пользовательского интерфейса.
  5. Terminal: Увеличена точность отображения расчетной цены в спецификации торгового инструмента.
  6. Terminal: Исправлен расчет показателей MFE и MAE в торговом отчете.
  7. Terminal: Исправлено сохранение и восстановление настроек фильтрации экономического календаря по стране и валюте.
  8. Terminal: Исправлено применение шаблонов к графикам. Теперь, если для графика включено отображение торговой истории, соответствующие объекты не будут исчезать после применения шаблона.
  9. Terminal: Исправлена ошибка в работе доски опционов. В некоторых случаях при добавлении символов платформа могла зависать.
  10. Terminal: Исправлена ошибка в диалоге редактирования позиций. В некоторых случаях вместо текущих значений Стоп Лосс и Тейк Профит в соответствующие поля могли подставляться некорректные уровни.
  11. Terminal: Обновлены переводы пользовательского интерфейса.
  12. MQL5: Оптимизирована и значительно ускорена работа функции ArrayResize. В некоторых случаях ускорение работы может достигать 40%.
  13. MQL5: Обновлена поддержка ONNX.
  14. MQL5: Исправлен вызов функции MessageBox в программах-сервисах. Независимо от того, какую кнопку пользователь нажимал в диалоге, функция возвращала нулевое значение.
  15. MQL5: Исправлена ошибка, в некоторых случаях приводившая к неполной инициализации MQL5-программ.
  16. MQL5: Исправлена ошибка парсинга некоторых макросов. Ошибка возникала при использовании большого количества констант.
  17. Исправления по крешлогам.

MetaTrader 5 Web Terminal

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


    Расширен набор доступных аналитических объектов


  2. Добавлена возможность переименования объектов.
  3. Улучшена интеграция с экономическим календарем. Оптимизирован и ускорен запрос данных.
  4. Ускорена работа графиков.
  5. Ускорены запуск приложения и подключение к торговому счету.
  6. Исправлена работа настройки, управляющей отображением торговых операций на графике.
  7. Исправлено отображение маржинальных требований в спецификации контракта.
  8. Исправлено отображение состояния счета в разделе истории. Проблема возникала на устройствах с узким экраном.
  9. Исправлено отображение стакана цен.

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

Торговый отчет - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Отчет позволяет оценить результаты своей торговли в удобной визуальной форме. Он поможет оптимизировать портфель, понять, как снизить риски и...
 
MetaQuotes:
MetaEditor: Добавлена стартовая страница

Главное, чтобы её можно было отключить.

И вкладки "Articles" и "Code Base" - тоже. А то попадаешь мышкой случайно, и начинается ненужный трафик и расход памяти.

 

Какие-то мелочные исправления -  не затрагивают ни одну из имеющихся у реальных трейдеров проблем с терминалом МТ5!

Из того что реально важно: необходимо дальше развивать "Торговый отчет" - в направлении предоставлению трейдерам полной информации по  проскальзывании при исполнении ордеров (Slippage ).

Речь идет о разнице в котировке по которой на сервере брокера исполнилась отправленная трейдером/экспертов сделка с теми котировками ask/bid, которые отражались в "MarketWatch" в момент отправки сделки на сервер.

Проблема значима - так отсутствие встроенного в терминал МТИ5 мониторинга параметра Slippage  уже привело к тому что девиз "Slip them to hell" стал внутренним девизом многих брокеров (погулите для деталей).

 

Итак, то что терминал МТ5 не учитывает и не отображает проскальзывания при исполнении ордеров (Slippage ) как убытки трейдеров, и это значимое упущение   в развитии Торгового отчета и эту проблему  необходимо адресовать в следующих релизах.

Соответственно большая просьба в следующих релизах терминала МТ5:

  1. ввести учет проскальзывания по каждой сделке, и отражать значение этого показателя по каждой сделке в Торговом Отчете на закладке "History";
  2. при  наличии проскальзывания размером более 1х  спреда, наблюдаемого на момент отправки сделки на сервер, засчитывать этот размер как доп. убыток  трейдера;
  3. в Торговом отчете на странице "Summary" внести графу "Убытки от проскальзывания" ("Losses on slippage") в целом по счету;
  4. в Торговом отчете на странице "Symbols" внести таблицу "Убытки от проскальзывания" ("Losses on slippage")  в разрезе символов.
 

Ренат, крайне не удобно смотреть лог-журналы если не подходишь времени сервера


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

но может уже поставить просто конец этой не правильно изначально созданной,

 
MetaQuotes:

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

Так в бета или в релизе? Я в релизе обновление вижу.
 
b4330, актуальны длительные паузы Тестера в одиночных прогонах.

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

Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы

fxsaber, 2024.05.23 12:56

b4305, на одном и том же кастомном символе (в режиме по пипсам) запускаю подряд (автоматически) одиночные проходы.

При этом во время запуска каждый раз получаю непонятные паузы на 24 секунды суммарно. Логи ниже.

2024.05.23 13:40:41.094 Tester  CUCTOM_EURUSD: ticks data begins from 2021.01.01 00:00
2024.05.23 13:40:41.094 Core 01 connecting to 127.0.0.1:3017
2024.05.23 13:40:41.098 Core 01 connected
2024.05.23 13:40:41.100 Core 01 authorized (agent build 4305)
2024.05.23 13:40:41.103 Tester  CUCTOM_EURUSD,M1 (RannForex-Live): testing of Experts\Test.ex5 from 2021.01.01 00:00 to 2024.01.01 00:00
2024.05.23 13:40:41.143 Core 01 common synchronization completed
2024.05.23 13:40:41.148 Core 01 CUCTOM_EURUSD: history for 2020 year synchronized
2024.05.23 13:40:41.152 Core 01 CUCTOM_EURUSD: ticks synchronized already [91 bytes]
// Что-то здесь делается 6 секунд.
2024.05.23 13:40:47.256 Core 01 test Experts\Test.ex5 on CUCTOM_EURUSD,M1 thread finished
2024.05.23 13:40:47.256 Core 01 prepare for shutdown
2024.05.23 13:40:47.256 Core 01 shutdown finished
2024.05.23 13:40:47.256 Core 01 login (build 4305)
2024.05.23 13:40:47.256 Core 01 account info found with currency USD
2024.05.23 13:40:47.256 Core 01 20164 bytes of input parameters loaded
2024.05.23 13:40:47.256 Core 01 expert file added: Experts\Test.ex5. 326106 bytes loaded
2024.05.23 13:40:47.256 Core 01 calculate profit in pips, initial deposit 100000000, leverage 1:100
2024.05.23 13:40:47.256 Core 01 successfully initialized
2024.05.23 13:40:47.256 Core 01 319 Kb of total initialization data received
2024.05.23 13:40:47.256 Core 01 Intel Xeon Gold 6258R  @ 2.70GHz, 24574 MB
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: symbol to be synchronized
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: symbol synchronized, 3720 bytes of symbol info received
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: load 75 bytes of history data to synchronize in 0:00:00.000
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: history synchronized from 2021.01.01 to 2024.05.17
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: ticks synchronization started
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: load 82 bytes of tick data to synchronize in 0:00:00.000
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: history ticks synchronized from 2021.01.01 to 2024.05.17
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: start time changed to 2021.01.05 00:00 to provide data at beginning
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: history cache allocated for 1123613 bars and contains 1441 bars from 2021.01.01 00:00 to 2021.01.04 23:59
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: history begins from 2021.01.01 00:00
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1 (RannForex-Live): generating based on real ticks
2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: testing of Experts\Test.ex5 from 2021.01.01 00:00 to 2024.01.01 00:00 started with inputs:
// Что-то здесь делается 18 секунд.
2024.05.23 13:41:05.569 Core 01 CUCTOM_EURUSD : real ticks begin from 2021.01.01 00:00:00


Возможно ли узнать, что происходит в выделенных местах?

 
b4340, непонятки со скоростью итогового EX5_x64. Добавление строки ускоряет выполнение предыдущей.
input datetime inFrom = D'2023.01.01';

class TICKS_ARRAY
{
public:
  MqlTick Ticks[];
};

template <typename T>
long GetSum( const T &TicksArray[] )
{
  const int Amount = ::ArraySize(TicksArray);

  int Count = 0;
  
  int Size[];
  bool Res[];
  int Pos[];

  ::ArrayResize(Pos, Amount);
  ::ArrayInitialize(Pos, 0);

  long Tmp = 0;
      
  for (uint i = ::ArrayResize(Res, ::ArrayResize(Size, Amount)); (bool)i--;)
  {
    Size[i] = ::ArraySize(TicksArray[i].Ticks);
    
    if (Res[i] = Size[i])
      Count++;
  }
 
  while (Count)
  {
    MqlTick MinTick = {0, 0, 0, 0, 0, LONG_MAX};
    uint Index;
      
    for (int i = 0; i < Amount; i++)
      if (Res[i])
      {
        // Количество вызовов в ~(1+Amount)/2 раз больше общего числа элементов.
        const MqlTick Tick = TicksArray[i].Ticks[Pos[i]];
        
        if (Tick.time_msc < MinTick.time_msc)
        {
          MinTick = Tick;
          
          Index = i;
        }
      }
      
    if (!(Res[Index] = (++Pos[Index] != Size[Index])))
      Count--;
      
    Tmp += MinTick.time_msc;
  }
    
  return(Tmp);
}

#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart()
{
  const string Symbols[] = {"EURUSD", "GBPUSD", "AUDUSD"};
  
  TICKS_ARRAY TicksArray[];
  
  const int Size = ::ArrayResize(TicksArray, ::ArraySize(Symbols));

  for (int i = 0; i < Size; i++)
    Print(CopyTicksRange(Symbols[i], TicksArray[i].Ticks, COPY_TICKS_ALL, inFrom * 1000));    

  _B(GetSum(TicksArray), 1);
  _B(GetSum(TicksArray), 1); // Ускоряет выполнение предыдущей строки!
}


Если строка добавлена, то такой результат (воспроизводится на повторных запусках).

22248074
26320684
25557149
Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 76 in OnStart: GetSum(TicksArray)] = 1049103 mcs.
Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 77 in OnStart: GetSum(TicksArray)] = 1057312 mcs.


Когда строка не добавлена.

22248074
26320684
25557149
Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 76 in OnStart: GetSum(TicksArray)] = 1286175 mcs.


Т.е. при удалении строки получаем, что предыдущая строка начинает выполняться на 20% медленнее.

 

MetaQuotes:

MQL5: Оптимизирована и значительно ускорена работа функции ArrayResize. В некоторых случаях ускорение работы может достигать 40%.

Просьба рассказать подробнее про это ускорение.
 

Случайно узнал, что в MetaEditor (двойной клик рядом с вкладками открытых файлов) можно открыть окно 'Окна' со списком всех открытых файлов.

 

//---

Это удобно, когда открыто очень много файлов.

Но лучше сделать так, чтобы это окно можно было прикрепить к левой/правой части редактора, как это можно сделать сейчас с окном 'Навигатор' . 

Также нужно добавить вызов окна по нажатию горячих клавиш и добавить в контекстное меню Главное меню -> Вид 

 

Извиняюсь,что напоминаю, но господин Sergey Golubev сказал писать об этом во всех темах новой версии терминала.


Не работает OBJPROP_ANCHOR для OBJ_BITMAP в тестере.

Для OBJ_TEXT работает, а для  OBJ_BITMAP нет. 

Господа разработчики, сделайте пожалуйста, чтоб работало и для  OBJ_BITMAP.

#resource "\\Images\\dollar.bmp"
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectCreate(0, "txt", OBJ_TEXT, 0, 0, 0);
   ObjectCreate(0, "bmp", OBJ_BITMAP, 0, 0, 0);
   ObjectSetString(0, "bmp", OBJPROP_BMPFILE, "::Images\\dollar.bmp");
   ObjectSetInteger(0, "bmp", OBJPROP_XSIZE, 32);
   ObjectSetInteger(0, "bmp", OBJPROP_YSIZE, 32);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   static int i = 0;
   static datetime lasttime = 0;
   datetime time = iTime(_Symbol, PERIOD_CURRENT, 0);

   if(lasttime != time)
     {
      lasttime = time;
      double price = iHigh(_Symbol, PERIOD_CURRENT, 0);

      ObjectSetDouble(0, "txt", OBJPROP_PRICE, price);
      ObjectSetInteger(0, "txt", OBJPROP_TIME, time);

      ObjectSetDouble(0, "bmp", OBJPROP_PRICE, price);
      ObjectSetInteger(0, "bmp", OBJPROP_TIME, time);

      i = i == 9 ? 0 : i;

      ObjectSetString(0, "txt", OBJPROP_TEXT, EnumToString((ENUM_ANCHOR_POINT)i));
      ObjectSetInteger(0, "txt", OBJPROP_ANCHOR, (ENUM_ANCHOR_POINT)i);
      ObjectSetInteger(0, "bmp", OBJPROP_ANCHOR, (ENUM_ANCHOR_POINT)i);

      i++;
      ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

Для графического стиля DRAW_ARROW или DRAW_COLOR_ARROW с точкой 158

как например в этом индикаторе https://www.mql5.com/ru/code/49558

Если скрыть точки, а затем отобразить их по новой, то сбивается размер этих точек.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_type1  DRAW_ARROW
#property indicator_color1 clrRed
#property indicator_width1 2
#include <Comm.mqh>
double   ExtBuffer[];
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0, ExtBuffer, INDICATOR_DATA);
   PlotIndexSetInteger(0, PLOT_ARROW, 158);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
   static int start = rates_total;
   if(start + 5 < rates_total)
     {
      if(PlotIndexGetInteger(0, PLOT_DRAW_TYPE) != DRAW_NONE)
        {
         Comm("Скроем отображение точек\nPlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE)");
         PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE);
        }
      else
        {
         Comm("Отобразим точки\nPlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW)");
         PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW);
        }
      start = rates_total;
     }

   for(int i = MathMax(prev_calculated - 1, 0); i < rates_total; i++)
      ExtBuffer[i] = high[i];

   return(rates_total);
  }
//+------------------------------------------------------------------+


Volatility Stop
Volatility Stop
  • www.mql5.com
Volatility Stop - индикатор уровней стопов по волатильности