Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 42

 
fxsaber #:
Спасибо за всплывающие HEX и Bits-представления целых типов

Хотелось бы ещё, чтобы в контекстном меню при наведении на "Копировать значение" появлялся попап с этими HEX и bit для копирования. Ну и в других случаях аналогично.

 
Stanislav Korotky #:

Красным давно обозначаются переменные, которые были только что изменены.

Спасибо.

 
b5146, разное поведение последствий вызова ExpertRemove до OnInit в Терминале и Тестере.
class A
{
public:
  A() { ExpertRemove(); }
} a;

void OnInit() { Print(__FUNCSIG__); }
void OnDeinit( const int ) { Print(__FUNCSIG__); }

В Терминале идут вызовы OnInit/OnDeinit, в Тестере - нет.

2025.07.07 22:02:55.341 2025.06.29 00:00:00   ExpertRemove() function called
2025.07.07 22:02:55.341 removed itself within global initialization
2025.07.07 22:02:55.341 tester stopped because expert initialization failed
2025.07.07 22:02:55.344 disconnected
2025.07.07 22:02:55.344 connection closed

Просьба подумать над запретом вызовов OnInit/OnDeinit в случае, если ExpertRemove была вызвана до OnInit. Спасибо.

Строка для поиска: Uluchshenie 126.
 
b5146, ParameterSetRange возвращает true для некорректных значений, и OnTesterDeinit не вызывается в случае отсутствия диапазона проходов.
sinput int inRange = 0;

int OnTesterInit()
{
//  const bool Res = ParameterSetRange("inRange", true, 0, 0, 1, 1);
  const bool Res = ParameterSetRange("Hello World!", true, 0, 0, 1, 1);
  
  Print(Res); // true
  
  return(Res ? INIT_SUCCEEDED : INIT_FAILED); 
}

void OnTesterDeinit() { ChartClose(); }


Тестер выдает следующее.

2025.07.08 08:05:40.506 input parameter 'Hello World!' set to: enable=true, value=0, start=0, step=1, stop=1
2025.07.08 08:05:40.506 optimization frame expert MACD Sample (EURUSD,M1) processing started
2025.07.08 08:05:40.516 OnTesterInit failed. Optimization cannot be started.
2025.07.08 08:05:40.516 optimization frame expert MACD Sample (EURUSD,M1) processing stopped

При этом в Терминале соответствующий Frame-режим работы советника не прерывается - нет вызова OnTesterDeinit.

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

 
fxsaber #:
b5146, разное поведение последствий вызова ExpertRemove до OnInit в Терминале и Тестере.

В Терминале идут вызовы OnInit/OnDeinit, в Тестере - нет.


В тестере отродясь не вызывался OnDeinit - они это сделали специально и пытались обосновать, но крайней нелогично.

 
fxsaber #:
b5146, ParameterSetRange возвращает true для некорректных значений, и OnTesterDeinit не вызывается в случае отсутствия диапазона проходов.


В чем некорректность значений от 0 до 1 с шагом 1, т.е. 2 прохода? Более того, это стандарт для логических переменных.

 
Stanislav Korotky #:

В чем некорректность значений от 0 до 1 с шагом 1, т.е. 2 прохода? Более того, это стандарт для логических переменных.

Нет входного параметра "Hello World!"

 
Stanislav Korotky #:

В тестере отродясь не вызывался OnDeinit - они это сделали специально и пытались обосновать, но крайней нелогично.

Попробуйте.

void OnDeinit( const int ) { Print(__FUNCSIG__); }
 
fxsaber #:

Попробуйте.

Это я почему-то из более узкого контекста тестирования индикаторов присовокупил, для экспертов OnDeinit вызывается.

 

b5147, возврат INIT_FAILED  в OnTesterInit создает "запись" среди запущенных советников, которая снимается только вручную.


Для воспроизведения запустить оптимизацию этого советника.

sinput int inRange = 0;

int OnTesterInit() { return(INIT_FAILED); }

void OnTesterDeinit() {}

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

Строка для поиска: Uluchshenie 127.