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

 
hini #:

как?

В OnTester создаем Virtual и прогоняем через него все тики единого хранилища.

 

Большая просьба к модераторам. Ниже цитата поста. Замените, пожалуйста, цитируемую ссылку в том посте на вот эту.

Что бы было вот так:

Также удалите, пожалуйста, из того поста вот это:


И этот пост удалите, пожалуйста.

 
fxsaber #:

В OnTester создаем Virtual и прогоняем через него все тики единого хранилища.

Спасибо!
 
b5146, остается доступ к объекту после вызова его деструктора. Как следствие, вот так возникает ошибка "invalid pointer access".
class A { public: void Func() {} };

class B
{
public:  
  A* a;

  B() : a(new A) {}
  ~B() { delete this.a;  }
};

class C
{
public:
  void Func() { static B b; b.a.Func(); } // invalid pointer access in (15,31)

  C() { this.Func(); }
  ~C() { this.Func(); }
} c;

void OnStart () {}

Причина в том, что деструктор ~B вызывается раньше деструктора ~C. При этом доступ к объекту B остается. Что, возможно, создает потенциал креша.


Даже если так задумано, то, однозначно, нужно править Generic-библиотеку хотя бы здесь.

#include <Generic\HashMap.mqh>

class A
{
public:
  void Func()
  {
    static CHashMap<int, int> Index;
    int i;

    if (!Index.TryGetValue(0, i)) Index.Add(0, 0); // invalid pointer access in 'HashMap.mqh' (544,21)
  }

  A() { this.Func(); }
  ~A() { this.Func(); }
} a;

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

 

Продолжает раздражать распределение задач между ядрами.

Если при некоторых (редких) комбинациях параметров одно задание "зависает" бесконечно (отловить причину очень трудно), все остальные ядра после выполнения своих пакетов ждут. Оптимизация останавливается.

Надо бы по возможности (если это не конец эпохи) раздавать новые пакеты. И надо прерывать задания, которые длятся в N раз дольше, чем самые медленные успешные задания.

И ещё хотелось бы в логах видеть набор параметров заданий с ошибками.

 
Edgar Akhmadeev #:
И ещё хотелось бы в логах видеть набор параметров заданий с ошибками.

Я имею в виду прерванные терминалом задания. Свои причины возвращения INIT_FAILED и INIT_PARAMETERS_INCORRECT мы сами знаем.

 

b5146, в математическом режиме распринтовка в журнал идет вместе со временем.

void OnInit()
{
  Print("Hello World!");
}


Результат.

2025.07.06 16:03:52.437 math calculations test of Experts\Examples\MACD\MACD Sample.ex5 started
2025.07.06 16:03:52.437 1970.01.01 00:00:00   Hello World!
2025.07.06 16:03:52.437 0 : mathematical test passed in 0:00:00.026


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

Строка для поиска: Uluchshenie 125.
 
fxsaber #:

b5146, в математическом режиме распринтовка в журнал идет вместе со временем.


Результат.


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

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

void OnInit() {
  Print("OnInit Math Test");
}

и нет

 

b5146, что обозначает красное значение поля структуры?

ЗЫ Спасибо за всплывающие HEX и Bits-представления целых типов и нормализацию double.

 
fxsaber #:

b5146, что обозначает красное значение поля структуры?

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