Особенности языка mql5, тонкости и приёмы работы - страница 318

 
amrali # :
Кроме того, для отладки расширений макросов в MQL:

Вывод:

Спасибо, отличный совет.
 
hini #:
Можно ли повторно использовать существующий Handle?
Иногда можно, но это просто совпадение.
 
fxsaber #:

Возможно ли как-то освобождать память/файл в случае, если висят открытые дескрипторы? Сейчас проблема решается только перезагрузкой процесса - Терминала.

Простое воспроизведение.
Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии
Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии
  • 2025.11.09
  • www.mql5.com
В пятницу 17 октября 2025 года будет выпущена обновленная версия платформы MetaTrader 5...
 
fxsaber #:
Если во время оптимизации нажать на Стоп, то дескрипторы прерванных проходов остаются открытыми

Утилита командной строки Handle из Sysinternals не поможет?

Если надо через WinAPI, можно сделать UnmapViewOfFile и CloseHandle (обязательно оба). Детально не знаю, не разбирался.

 
Edgar Akhmadeev #:

Утилита командной строки Handle из Sysinternals не поможет?

Надо через WinAPI.

Если надо через WinAPI, можно сделать UnmapViewOfFile и CloseHandle (обязательно оба). Детально не знаю, не разбирался.

Здесь подробнее.

Библиотеки: File Mapping без DLL
Библиотеки: File Mapping без DLL
  • 2023.03.26
  • www.mql5.com
File Mapping без DLL: Автор: o_o...
 

Способ получить окно безымянного символа.



  1. Закрыть все чарты и очистить Обзор рынка от символов.
  2. В мат. режиме запустить оптимизацию советника ниже.

input int inRange = 0;

int OnTesterInit() { return(INIT_FAILED); }
void OnTesterDeinit() {}
double OnTester() { return(0); }


Появится такое окно. Практическая польза от него, наверное, нулевая, т.к. на нем далее ничего нельзя запустить.


Но сам фрейм-режим на нем работает исправно и это правильно.

2025.11.11 16:28:06.025 EAToMath_Example (XAUUSD.pro,M1)        [2025.11.11 16:28:06.025] EAToMath.mqh 1114: XAUUSD.pro: math optimization of Experts\fxsaber\EAToMath_Example.ex5 from 2025.10.03 00:00:00 to 2025.11.04 00:00:00, 1 Month 1 Day
2025.11.11 16:28:06.025 EAToMath_Example (XAUUSD.pro,M1)        
2025.11.11 16:28:06.025 EAToMath_Example (XAUUSD.pro,M1)        FileOpen mode: C:\Users\Unknown\AppData\Roaming\MetaQuotes\Terminal\Common\EAToMath.mqh\RannForex-Server\XAUUSD.pro\Ticks_0.tsh
2025.11.11 16:28:06.025 EAToMath_Example (XAUUSD.pro,M1)        StartTime = 2025.11.11 16:28:06
2025.11.11 16:28:49.696 EAToMath_Example (XAUUSD.pro,M1)        ExpertRemove() function called
2025.11.11 16:29:13.041 EAToMath_Example        [2025.11.11 16:29:13.040] EAToMath.mqh 1114: XAUUSD.pro: math optimization of Experts\fxsaber\EAToMath_Example.ex5 from 2025.10.03 00:00:00 to 2025.11.04 00:00:00, 1 Month 1 Day
2025.11.11 16:29:13.041 EAToMath_Example        
2025.11.11 16:29:13.041 EAToMath_Example        FileOpen mode: C:\Users\Unknown\AppData\Roaming\MetaQuotes\Terminal\Common\EAToMath.mqh\RannForex-Server\XAUUSD.pro\Ticks_0.tsh
2025.11.11 16:29:13.041 EAToMath_Example        StartTime = 2025.11.11 16:29:13
2025.11.11 16:30:20.324 EAToMath_Example        ExpertRemove() function called

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


Наверное, это наиболее подходящая ветка для описания такого случая.

 
fxsaber #:

...

Появится такое окно. Практическая польза от него, наверное, нулевая, т.к. на нем далее ничего нельзя запустить.

...

Он зависает в режиме ожидания окончания инициализации?

Как в этом случае? 👇

 

Anatoli Kazharski #:
Он зависает в режиме ожидания окончания инициализации?

Он не зависает, а полноценно выполняет фрейм-код советника.

Как в этом случае? 👇

В этом случае открыт график, исторических данных которого нет в базе данных (среди реальных и кастомных символов). Но поведение у него идентичное, просто имеется название символа.

 
fxsaber #:

Он не зависает, а полноценно выполняет фрейм-код советника.

В этом случае открыт график, исторических данных которого нет в базе данных (среди реальных и кастомных символов). Но поведение у него идентичное, просто имеется название символа.

На нём нельзя создать графические объекты? То есть будет ли их видно, когда график в таком состоянии?
 
Anatoli Kazharski #:
На нём нельзя создать графические объекты? То есть будет ли их видно, когда график в таком состоянии?
Что-либо делать на этом графике возможно только во фрейм-режиме. Даже "создать" объект, но он не будет виден.
input int inRange = 0;

int OnTesterInit()
{
  const string Name = __FILE__;
  
  Print(ObjectCreate(0, Name, OBJ_VLINE, 0, 0, 0)); // true - получилось.
  Print(ObjectFind(0, Name));                       // -1 - но не находится.
  
  return(INIT_FAILED);
}

void OnTesterDeinit() {}
double OnTester() { return(0); }