Бета-версия платформы MetaTrader 5 build 6030: Интеграция с ИИ, Passkey и удобная работа с кодом в MetaEditor

 

В четверг 16 июля 2026 года будет выпущена обновленная версия платформы MetaTrader 5 в бета-режиме.

Главное нововведение этого обновления — встроенная поддержка Model Context Protocol (MCP) и агентного искусственного интеллекта. Благодаря этому терминал и MetaEditor получают встроенного AI Assistant, который помогает анализировать рынки и торговую активность, разрабатывать программы на MQL5, объяснять код, находить ошибки и автоматизировать решение сложных задач. Кроме встроенного помощника, платформа поддерживает подключение внешних ИИ-агентов, совместимых с MCP, включая OpenAI Codex, Claude Code и другие решения.

Бета-версия платформы MetaTrader 5 build 6030: Интеграция с ИИ, Passkey и удобная работа с кодом в MetaEditor

Еще одним важным нововведением стала поддержка Passkey — современного механизма защиты торговых счетов. Passkey обеспечивает дополнительный фактор аутентификации при входе в аккаунт, защищая пользователей от фишинга и несанкционированного доступа. Хранить ключ можно как на мобильном устройстве, так и на аппаратном ключе безопасности.

Для разработчиков мы существенно улучшили MetaEditor. В редакторе появились долгожданные функции сворачивания блоков кода и подсветки всех вхождений выделенного идентификатора, упрощающие работу с большими проектами. Также расширены математические возможности языка MQL5: добавлены новые методы линейной алгебры и работы с матрицами на основе LAPACK и OpenBLAS, оптимизированы отдельные функции стандартной библиотеки и внесено множество исправлений и улучшений в терминал, тестер стратегий и справочную систему.

Призываем всех трейдеров присоединиться к тестированию новой версии платформы, чтобы самостоятельно опробовать все ее возможности и помочь разработчикам в исправлении найденных ошибок. Для обновления на новый билд платформы MetaTrader 5 достаточно нажать «Помощь \ Проверить обновления десктопа \ Последняя бета-версия»:

Обновление на бета-версию

После окончания данного этапа бета-тестирования будет выпущен финальный билд новой платформы MetaTrader 5.

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


MetaTrader 5 Client Terminal

  1. Представляем встроенную поддержку Model Context Protocol (MCP) и агентного искусственного интеллекта. Она открывает совершенно новый сценарий работы с торговой платформой: торгуйте, анализируйте стратегии и рынки, разрабатывайте и тестируйте советников с помощью ИИ.


    Что такое MCP

    Model Context Protocol (MCP) — это открытый стандарт взаимодействия приложений с ИИ-агентами. В отличие от привычных чат-ботов, агент способен самостоятельно выполнять сложные задачи, разбивая их на последовательность действий и используя возможности подключенных приложений.

    Благодаря встроенной поддержке MCP терминал MetaTrader 5 становится полноценным источником данных и торговых функций для современных ИИ-агентов. Они могут получать рыночную информацию, анализировать графики, работать с торговым окружением и выполнять необходимые операции через стандартный интерфейс MCP.

    Кроме встроенного помощника, вы сможете использовать и внешние агентные системы, поддерживающие MCP, включая OpenAI Codex, Claude Code и другие совместимые решения.


    Настройка не требуется

    Для доступа к функциям ИИ достаточно войти в платформу под своей учетной записью MQL5.community — всем пользователям станет доступен бесплатный тариф MQL5 Lite. После обновления необходимые настройки будут выполнены автоматически: в качестве провайдера будет выбран MQL5.community, для него будет добавлен ключ API.

    При желании можно использовать собственные API-ключи OpenAI, Anthropic, Gemini, DeepSeek, Ollama и других сервисов, выбирая нужную модель прямо в настройках терминала:


    Настройки ИИ


    Настройки ИИ синхронизируются между торговым терминалом и MetaEditor.


    AI Assistant в MetaTrader 5

    ИИ-помощник в MetaTrader 5 помогает анализировать рынок. Он может объяснить текущую ситуацию по инструменту, проанализировать открытые позиции, изучить историю торговли, ответить на вопросы о финансовых инструментах и последних рыночных событиях.


    Поручите ИИ проанализировать вашу торговлю


    Примеры запросов ассистенту:

    • Проанализируй текущую ситуацию по EURUSD на таймфрейме H1. Определи тренд, ближайшие уровни поддержки и сопротивления и объясни, что происходит на рынке.
    • Проанализируй мои открытые позиции. Какие сделки выглядят наиболее рискованными и почему?
    • Проанализируй историю моих сделок за последние три месяца. Найди наиболее прибыльные сделки и подскажи, что можно улучшить в торговой стратегии.
    • Просканируй все инструменты из «Обзора рынка» и найди, где сейчас формируется пробой важного уровня или сильный тренд.
    Рекомендации ИИ носят информационный характер и не являются инвестиционными советами. Используйте их как дополнительный инструмент анализа и всегда принимайте торговые решения на основе собственной оценки рынка.
    Безопасность работы контролируется настройками. Вы можете явно разрешить или запретить торговые операции через ИИ или включить режим ручного подтверждения. Помимо этого, отдельной настройкой контролируется доступ ИИ к сетевым запросам и операциям командной строки.


    AI Assistant в MetaEditor

    AI Assistant в MetaEditor стал полноценным помощником разработчика. Он способен:

    • Создавать новые программы на MQL5
    • Анализировать существующий код
    • Искать ошибки и предлагать исправления
    • Объяснять работу сложных алгоритмов
    • Помогать с рефакторингом и доработкой проектов

    Для вызова агента используйте меню «Файл», панель инструментов, а также контекстное меню в Навигаторе. Далее просто опишите задачу на естественном языке.


    Поручите ИИ написать для вас скрипт


    Примеры запросов ассистенту:

    • Напиши советник, который открывает позицию при пересечении двух скользящих средних (EMA 20 и EMA 50), использует Stop Loss 500 пунктов, Take Profit 1000 пунктов и риск 1% от депозита.
    • Проанализируй этот код MQL5, найди возможные ошибки, объясни причины и предложи исправленную версию.
    • Оптимизируй этот индикатор, чтобы уменьшить количество вычислений и ускорить его работу без изменения логики.
    • Перепиши этот советник с MQL4 на MQL5, используя современные возможности языка и стандартной библиотеки.
    • Объясни, как работает этот эксперт. Опиши его торговую логику, используемые индикаторы, условия входа и выхода, а также потенциальные недостатки стратегии.

    Чем подробнее будет описание задачи, тем точнее и полезнее окажется результат.

    История запросов доступна во вкладке «Чаты» в Навигаторе.

  2. Terminal: Добавлена поддержка авторизации при помощи Passkey. Это современный способ защиты торговых счетов, который значительно повышает безопасность входа. Технология Passkey защищает от фишинга и кражи учетных данных: даже если злоумышленник узнает логин и пароль от счета, он не сможет подключиться без подтверждения с зарегистрированного устройства или аппаратного ключа безопасности.


    Как включить и использовать

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


    Создание Passkey


    Сохранить Passkey можно двумя способами:

    • На мобильном устройстве — наведите камеру смартфона на QR-код, который отобразится в терминале, и выберите «Сохранить Passkey» на мобильном устройстве.
    • На аппаратном ключе безопасности (Security Key) — подключите совместимый FIDO2-ключ к компьютеру и следуйте инструкциям на экране.
    Для использования Passkey на мобильном устройстве компьютер должен поддерживать Bluetooth. Он используется для проверки физической близости вашего устройства к компьютеру. Это сделано для безопасности, чтобы злоумышленник не мог удаленно войти в ваш аккаунт, прислав вам QR-код.
    После регистрации Passkey он будет запрашиваться при каждом подключении к счету после ввода логина и пароля:

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

    При необходимости зарегистрированный Passkey можно удалить. Для этого выберите «Менеджер Passkey» в контекстном меню счета в окне «Навигатор». При следующем подключении к счету терминал предложит создать новый Passkey.


    Управление Passkey


  3. Terminal: Добавлена поддержка новых уровней доступа к счету:

    • Торговый — разрешает торговлю, но запрещает смену паролей, ввод и вывод средств.
    • Финансовый — разрешает пополнение счета, вывод средств и переводы между счетами, но запрещает торговлю и смену паролей.

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


    Добавлена поддержка новых уровней доступа к счету


  4. Terminal: Исправлена инициализация диалога торговли для инструментов с «Немедленным исполнением». Диалог мог открываться пустым, если ранее введенное значение объема превышало порог, при котором торговля переходит в режим «Исполнение по запросу».
  5. Terminal: Исправлен расчет графического объекта «Канал регрессии».
  6. Terminal: Убрана поддержка публикации торговых отчетов по FTP. Эта функция устарела и практически не используется.
  7. MQL5: Оптимизирована и значительно ускорена работа функции вывода текста TextOut. В некоторых случаях достигается ускорение 3 раза по сравнению с предыдущей версией.
  8. MQL5: Добавлена функция SymbolInfoCommissions для получения данных о комиссиях торгового инструмента 
    int  SymbolInfoCommissions(
       string           name,              // имя символа
       MqlCommission&   commissions[]      // массив правил комиссии
       );
    Каждый элемент массива commissions описывает отдельное правило начисления комиссии. Общие условия применения комиссии задаются полями структуры MqlCommission, а конкретные значения и диапазоны комиссии — массивом уровней tiers.

  9. MQL5: Добавлен метод для анализа структурных свойств матриц и векторов MatrixInfo. Он анализирует содержимое матрицы, определяет ее структурный тип (симметричная, эрмитовая, треугольная, ленточная и т.д.) и заполняет структуру MqlMatrixInfo.

  10. Также добавлены методы матрицы:

    • Write — анализирует содержимое матрицы, определяет ее структурный тип (симметричная, эрмитова, треугольная, ленточная и т.д.) и записывает матрицу в открытый файл в соответствии с выбранным способом хранения.
    • Read — читает из файла матрицу, записанную в него методом Write.
    • WriteBin — записывает матрицу в файл в соответствии с ее размером и типом.
    • ReadBin — читает из файла матрицу, записанную в него методом WriteBin.

  11. MQL5: Добавлены методы ортогонального разложения матриц:

    • FactorizationQRTallSkinny — вычисляет блочное QR-разложение высокой узкой матрицы размера m на n (m>n): A = Q * R. Функция LAPACK LATSQR.
    • FactorizationLQShortWide — вычисляет блочное LQ-разложение низкой широкой матрицы размера m на n (m<n): A = L * Q. Функция LAPACK LASWLQ.
    • FactorizationRZ — приводит действительную или комплексную верхнетрапециевидную матрицу A размера M на N (M<=N) к верхнетреугольному виду с помощью ортогональных преобразований. Функция LAPACK TZRZF.
    • FactorizationQR2 — вычисляет обобщенное QR-разложение двух матриц: A размера n на m и B размера n на p: A = Q * R, B = Q * T * Z. Функция LAPACK GGQRF.
    • FactorizationRQ2 — вычисляет обобщенное RQ-разложение матрицы A размера m на n и матрицы B размера p на n: A = R * Q, B = Z * T * Q. Функция LAPACK GGRQF.

  12. MQL5: Добавлен метод SylvesterEquation. Он решает уравнение Сильвестра для вещественных или комплексных квадратных матриц: A*X + X*B = scale*C где A — общая матрица размера m на m, а B — общая матрица размера n на n. Используются LAPACK-функции GEES и TRSYL.

  13. MQL5: Добавлен метод LeastSquaresGaussMarkov2. Решает общую задачу линейной модели Гаусса–Маркова: минимизирует норму ∣∣y∣∣2 при ограничении d=A⋅x+B⋅y, используя обобщенное QR-разложение матриц A и B. Используется LAPACK-функция GGGLM.

  14. MQL5: Добавлены методы BLAS Level 3:

    • BlasL3LACRM — умножает комплексную матрицу на квадратную вещественную матрицу.
    • BlasL3LARCM — умножает квадратную вещественную матрицу на комплексную матрицу.

  15. MQL5: Исправлена ошибка в расчете квантилей t-распределения в статистической библиотеке MQL5.
  16. MQL5: Исправлена установка предопределенной переменной _StopFlag для индикаторов.
  17. MQL5: Добавлено формирование события CHARTEVENT_CHART_CHANGE при изменении свойств CHART_PRICE_MIN и CHART_PRICE_MAX у графика. Для получения события используйте обработчик OnChartEvent.
  18. MQL5: Исправлено применение таймаута, указываемого при вызове WebRequest.
  19. MQL5: Исправлена работа функции ObjectGetValueByTime для графических объектов OBJ_REGRESSION и OBJ_STDDEVCHANNEL.
  20. MQL5: Добавлено значение MQL_LAST_OPENBLAS_ERROR в перечисление ENUM_MQL_INFO_INTEGER.

    Большинство LAPACK-функций библиотеки OpenBLAS используют целочисленный параметр info для возврата статуса завершения функции или подпрограммы: успешно ли она отработала, были ли обнаружены ошибки во входных параметрах или возникли численные проблемы. Константа MQL_LAST_OPENBLAS_ERROR содержит значение info после последнего неудачного выполнения функции OpenBLAS.

  21. MetaEditor: Добавлена функция сворачивания кода (folding). Теперь вы можете сворачивать и разворачивать функции, классы, циклы, условные операторы и другие блоки кода. Это упрощает навигацию по большим исходным файлам, помогает сосредоточиться на нужном участке программы и делает работу с объемными проектами значительно удобнее.


    Добавлена функция сворачивания кода


    Для включения/отключения функции используйте новую опцию в настройках:


    Включение и отключение функции сворачивания кода


  22. MetaEditor: Добавлена подсветка совпадений при выделении слова. При выделении идентификатора, переменной, функции или любого другого слова MetaEditor автоматически подсвечивает все его вхождения в текущем файле. Это позволяет быстро найти связанные участки кода, проследить за использованием переменных и функций, а также значительно упрощает анализ и навигацию по большим исходным файлам.


    Добавлена подсветка совпадений при выделении слова


  23. MetaEditor: Исправлены ошибки отображения файлов *.md файлов.
  24. MetaEditor: Добавлена поддержка UTF-8 для проектов *.mqproj. Теперь именно эта кодировка будет использоваться при сохранении таких файлов.
  25. MetaEditor: Изменена кодировка, в которой сохраняются файлы *.mq5, *.mqh. Теперь используется UTF-8 без BOM. 
  26. MetaEditor: Исправлена подсветка исходного кода. Для некоторых идентификаторов языка MQL5 могли использоваться некорректные цвета.
  27. MetaEditor: Исправлено сохранение и загрузка координат открепленных окон.
  28. MetaEditor: Исправлена обработка горячих клавиш в открепленных окнах.
  29. Tester: Исправлено применение пользовательского спреда в режиме тестирования «Только цены открытия».
  30. Tester: Исправлен расчет свопов в процентах.
  31. Tester: Исправлено отображение параметров тестирования, которые не могут участвовать в оптимизации (например, строковые параметры). Теперь для них будет отображаться пустой серый квадрат, означающий, что параметр не включен и не может быть выбран.
  32. Tester: Исправлено отображение цвета clrNONE в параметрах MQL5-программы при тестировании.
  33. Tester: Исправлено применение пользовательских настроек маржи.
  34. Help: Добавлена поддержка горячих клавиш: Ctrl+Tab и Shift+Tab для последовательного переключения между разделами, Alt+Right/Left для переключения на следующую/предыдущую просмотренную страницу.
  35. Обновлены переводы пользовательского интерфейса.

MetaTrader 5 Web Terminal

  • Улучшена работа на устройствах с сенсорными экранами.


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

 

в 6012 Сломан поиск русского текста без учёта регистра (латиница работает нормально), в 6030 пофикшено?


 
Nikolay Kuznetsov #:

в 6012 Сломан поиск русского текста без учёта регистра (латиница работает нормально), в 6030 пофикшено?


Все ищется. Это еще зависит от того, где курсор стоит.

Ищется и внутри файла и по всем файлам.

Проверьте еще раз, пожалуйста.

 

Почему TP не закрылся ?

 

Есть проблема с ChartXYToTimePrice МТ 5 билд 6013

Код:

bool XY_TP(const int aX, const int aY, datetime & aTime, double & aPrice)
  {
// ===
   int wind = 0;

   Print(" 1 Y " + aY + "  " + DoubleToString(aPrice, _Digits));
   
   aPrice = NormalizeDouble(aPrice, _Digits);
   
   Print(" 2 Y " + aY + "  " + DoubleToString(aPrice, _Digits));
   
   ::ChartXYToTimePrice(0, aX, aY, wind, aTime, aPrice); // < --- Бажит <<<<<<<<<<<<<<<<<<
   
   Print(" 3 Y " + aY + "  " + DoubleToString(aPrice, _Digits));
   
   aPrice = NormalizeDouble(aPrice, _Digits);
   
   Print(" 4 Y " + aY + "  " + DoubleToString(aPrice, _Digits));
   
   return(true);
// ===
  }


Результат:

2026.07.16 19:09:06.123 TestFinal (EURUSD,H1)    1 Y 653  1.14000
2026.07.16 19:09:06.123 TestFinal (EURUSD,H1)    2 Y 653  1.14000 <<<
2026.07.16 19:09:06.123 TestFinal (EURUSD,H1)    3 Y 653  1.14001 <<< Скачок на 1 пункт
2026.07.16 19:09:06.123 TestFinal (EURUSD,H1)    4 Y 653  1.14001

Координата Y не меняется, а цена изменилась....

 
Vladimir Pastushak # :

Есть проблема с  ChartXYToTimePrice МТ 5 билд 6013

Код:


Результат:

Координата Y не меняется, а цена изменилась....

Вызов кода для этой функции?

Нам нужен полноценный код, который компилируется и запускается. Я не буду гадать.

 
MetaQuotes:
MQL5: Добавлена функция SymbolInfoCommissions для получения данных о комиссиях торгового инструмента 
Каждый элемент массива commissions описывает отдельное правило начисления комиссии. Общие условия применения комиссии задаются полями структуры MqlCommission, а конкретные значения и диапазоны комиссии — массивом уровней tiers.

Это полноценная замена неработающей?

PositionGetDouble(POSITION_COMMISSION)
 
Vladimir Pastushak #:

Есть проблема с ChartXYToTimePrice МТ 5 билд 6013

Код:


Результат:

Координата Y не меняется, а цена изменилась....

сильно не рекомендую использовать эту функцию. Эта функция и все функции ChartGet... - это какое-то помутнение и испанский стыд за MQ.

можно использовать этот вариант, который пока не опубликовал в CB
Проверка библиотеки и функции ChartTimePriceToXY
Проверка библиотеки и функции ChartTimePriceToXY
  • 2026.06.09
  • www.mql5.com
Пользователь обсуждает проблемы с привязкой объектов к координатам цена-время в библиотеке, упоминает необходимость функции ChartTimePriceToXY, а также предлагает проверить новую версию библиотеки с улучшенной производительностью и функциональностью. Также отмечает преимущества использования Canvas по сравнению с другими методами.
 
Nikolai Semko #:
сильно не рекомендую использовать эту функцию. Эта функция и все функции ChatGet... - это какое-то помутнение и позор MQ
можно использовать этот вариант, который пока не опубликовал в CB

Буквально пару часов назад с вашей библиотеки выдернуты фрагменты- за что огромное спасибо, и написано в виде функции:

bool MyChartXYToTimePrice(const int aX, const int aY, datetime &aTime, double &aPrice)
{
  static long left_bar = 0;
  static long scale = 0;
  static long cwp = 0;
  static int  hh = 0;
  static double lo = 0;
  static double hi = 0;
  if(_flag) {
    left_bar = ChartGetInteger(0, CHART_FIRST_VISIBLE_BAR);
    scale    = ChartGetInteger(0, CHART_SCALE);
    cwp       = ChartGetInteger(0, CHART_WIDTH_IN_PIXELS);
    hh       = (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, 0);
    lo = ChartGetDouble(0, CHART_PRICE_MIN, 0);
    hi = ChartGetDouble(0, CHART_PRICE_MAX, 0);
    _flag=false;
  }
  double dx     = (double)(1 << scale);
  if(left_bar > 0 && dx > 0 && cwp > 0) {
    double B = (double)left_bar + 1.0 - (double)aX / dx;
    int    bi = (int)B;
    double fr = B - (double)bi;
    if(bi < 0) bi = 0;
    datetime t_buf[1];
    if(CopyTime(NULL, 0, bi, 1, t_buf) > 0) {
      aTime = t_buf[0] + (datetime)(PeriodSeconds() * (1.0 - fr));
    }
  }
  //--- цена
  if(hh <= 0) hh = 1;
  if(hi > lo) {
    int yy = (aY < 0 ? 0 : (aY >= hh ? hh - 1 : aY));
    aPrice = hi - (double)yy * (hi - lo) / (double)hh;
    return(true);
  }
  return(false);
}

Но чтобы почувствовать прирос производительности, а она примерно в 11 раз быстрее, нужно объявить глобально флаг, и сбрасывать его по изменению графика

void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
  if(id==CHARTEVENT_CHART_CHANGE) {
    _flag=true;
  }

--

Speed = ChartXYToTimePrice()

PP      0       22:12:09.810    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
HG      0       22:12:09.810    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=5
IQ      0       22:12:10.007    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
DM      0       22:12:10.007    eLSMC (AUDNZD,M30)      Speed=75
HL      0       22:12:10.007    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
PS      0       22:12:10.007    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=5
CF      0       22:12:10.193    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
FS      0       22:12:10.193    eLSMC (AUDNZD,M30)      Speed=174
DI      0       22:12:10.193    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
LN      0       22:12:10.193    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=5
GJ      0       22:12:10.412    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
FD      0       22:12:10.412    eLSMC (AUDNZD,M30)      Speed=53
JE      0       22:12:10.412    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
QJ      0       22:12:10.412    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=4
PO      0       22:12:10.606    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
LH      0       22:12:10.606    eLSMC (AUDNZD,M30)      Speed=122
KN      0       22:12:10.606    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
DQ      0       22:12:10.606    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=4
GS      0       22:12:10.809    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
KL      0       22:12:10.809    eLSMC (AUDNZD,M30)      Speed=108
DJ      0       22:12:10.809    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
KM      0       22:12:10.809    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=4
OH      0       22:12:11.011    eLSMC (AUDNZD,M30)      ChartXY             :2026.03.24 06:52:30=1.20319
LQ      0       22:12:11.011    eLSMC (AUDNZD,M30)      Speed=220
LG      0       22:12:11.011    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice:2026.03.24 06:52:30=1.20319375975039
DH      0       22:12:11.011    eLSMC (AUDNZD,M30)      MyChartXYToTimePrice=5
 
Volodymyr Zubov #:

Почему TP не закрылся ?

Если это происходит на MetaQuotes-Demo, то причина в том, что в это время мы гоняем профилировочные PGO тесты, при которых исполнение сделок тормозится на минуты.

Такое происходит пару раз в неделю.

 
Vitaly Muzichenko #:

Буквально пару часов назад с вашей библиотеки выдернуты фрагменты- за что огромное спасибо, и написано в виде функции:

Но чтобы почувствовать прирос производительности, а она примерно в 11 раз быстрее, нужно объявить глобально флаг, и сбрасывать его по изменению графика

--

Speed = ChartXYToTimePrice()

11 раз!!! О нет, это ужасный результат. Должно быть в несколько тысяч раз быстрее, особенно при частом использовании.
Напрасно Вы вынесли это отдельной функцией.  В моем классе и всей этой библиотеке не было ничего лишнего. Если кратко, то по сути все ChartGet функции были вынесены за скобки, а у Вас они внутри скобок.