Ошибки, баги, вопросы - страница 3185

 

При прогоне в тестере советника завис терминал наглухо, пришлось убить процесс.

После запуска терминала обнаружил, что все счета "слетели"!!! Да, проблем нет залогиниться вновь на нужных счетах, но зачем нужны эти дополнительные телодвижения пользователю - огромный вопрос.

Убедительная просьба к разработчикам, в очередной, незнамо какой раз, сделайте, пожалуйста, сохранение всех залогиненых счетов в терминале по желанию пользователя в зашифрованный файл и возможность последующего восстановления счетов. Для параноиков можно обеспечить 5ти, 10ти, 10000000кратное 512 битное шифрование. Вот уже который раз это происходит, на ум приходят только нецензурные слова восхищения подобными сюрпризами.

 
Andrey Dik #:

проблем нет залогиниться вновь на нужных счетах

Для меня это была бы серьезная проблема. Хорошо, не сталкивался с таким багом.

Резервное сохранение всех данных счетов - копирование папки config.

Здесь автоматизировал полностью клонирование Терминала - работает великолепно. Только желательно это делать, когда основной Терминал выгружен.

Несколько MT5-тестеров параллельно на одной машине.
Несколько MT5-тестеров параллельно на одной машине.
  • www.mql5.com
Автоматизация MT5-Тестера потребовала параллельного использования нескольких Тестеров на одной машине: оптимизация ( MultiTester ) и одиночные проходы ( Validate и TesterDashboard ). Необходимость
 
fxsaber #:

Для меня это была бы серьезная проблема. Хорошо, не сталкивался с таким багом.

Резервное сохранение всех данных счетов - копирование папки config.

Здесь автоматизировал полностью клонирование Терминала - работает великолепно. Только желательно это делать, когда основной Терминал выгружен.

Копирование папки config достаточно, что бы моно было восстановить счета?

Как костыльное решение ковыряние во внутренностях терминала конечно сойдет, но должно же быть нормальное решение от разработчиков, с приличным интерфейсом.. В конце концов есть исходные коды кошельков типа KeePass, которые можно было бы использовать в нуждах MT5.

 
Andrey Dik #:

Копирование папки config достаточно, что бы моно было восстановить счета?

Да.

 
fxsaber #:

Да.

Спасибо.

 

Bug MT5 (build 3280) "переоптимизация" вызовов статических методов класса.
Компилятор может выкинуть и не исполнять код целых функций:

class A{
public:
    A(){printf("constructor_a\r\n");}
    static void func(){}
};

A* get_a(){printf("get_a\r\n"); return NULL;}


   
void OnStart()
{ 
   (A()).func();         // missed code from constructor A::A()
   get_a().func();       // missed code from function get_a()
}

С++ онлайн: https://onlinegdb.com/9NUBXaZOZ


UPD: Также с удивлением обнаружил, что в MQL удачно компилируется и это:

void test(){
};

void OnStart(){ 
   ((void*)NULL).test();
} 
 
Sergey Dzyublik #:

Bug MT5 (build 3280) "переоптимизация" вызовов статических методов класса.
Компилятор может выкинуть и не исполнять код целых функций:

Вопрос по синтаксису. Объект создается в первой строке (будет вызван деструктор), но почему компилятор не требует под него переменную?

Сейчас получается, что можно создавать объекты без переменных, прописав всего лишь статический метод-пустышку.


Раньше через макросы такое проделывал, а с таким синтаксисом можно гораздо проще.

class CLASS{
public:
    static void Create(){}    
};

#define MACROS MACROS2(__LINE__)
#define MACROS2(A) CLASS Var##A;
   
void OnStart()
{ 
  // Эти строки идентичны  
  MACROS
  MACROS
  MACROS
  
  // этим.
  (CLASS()).Create();
  (CLASS()).Create();
  (CLASS()).Create();
}
 

Предлагаю дать возможность ПРОГРАММНО отключать/включать горячие клавиши терминала MetaTrader 5.

Сейчас стандартные горячие клавиши не позволяют делать удобные интерфейсы программ. (Удобные = Возможность управлять программой с клавиатуры...)

 
fxsaber #:

Вопрос по синтаксису. Объект создается в первой строке (будет вызван деструктор), но почему компилятор не требует под него переменную?

Это "временный объект" в MQL нужны лишние скобки, чтобы компилятор распознал, а в общем работает как и в С++: https://habr.com/ru/post/186790/

[Удален]  
fxsaber #:

Вопрос по синтаксису. Объект создается в первой строке (будет вызван деструктор), но почему компилятор не требует под него переменную?

Сейчас получается, что можно создавать объекты без переменных, прописав всего лишь статический метод-пустышку.


Раньше через макросы такое проделывал, а с таким синтаксисом можно гораздо проще.

А почему не так:

CLASS::Create();

Это традиционный способ вызова статических функций.