Новая версия платформы MetaTrader 5 build 2980: Push-уведомления о торговых операциях - страница 29

 
mktr8591:

Может быть, в новых билдах исправлено?

Крутой баг! b3021 - актуально.

 

b3021, нет возможности удалить Custom-группу символов. Неактивен пункт меню.


 

b3021 - аналогично. Дело точно в Терминале, а не в EX5. На 3007 тот же EX5 не вызывает переполнения памяти (динамика потребления видна через F2).

 

В MT5-GUI используются ОЧЕНЬ быстрые таблицы для вывода той же истории торгов. Там все летает даже с десятками тысяч строк, где каждая состоит из десятка значений. Крутая производительность!


Различные решения канвас-таблиц совсем не дотягивают до MT5-GUI. Поэтому @Igor Makanu написал великолепные DotNet-таблицы.

К сожалению, для Маркета они не подходят.


На основе своего MT5-GUI-движка таблиц просьба подумать о возможности добавления штатного способа создания таблиц через MQL5.

Строка для поиска: Uluchshenie 036.
Быстрая таблица MQL5 + .Net
Быстрая таблица MQL5 + .Net
  • 2020.04.05
  • www.mql5.com
Таблица с использованием MQL5 + .Net (.dll) Потребовался вывод данных для аналитики. Сделал очень функциональную библиотеку со скромным API
 
mktr8591:

b2981

скрипт

при компиляции выдает ошибку "Internal compiler error"

вот этот компилируется нормально,

но при запуске по F5 дебагер выдает алерт "Возникла критическая ошибка, отладка остановлена".

лог экспертов:


Вариант с LONG_MIN при отладке выдает аналогичный крэш-лог.


Может быть, в новых билдах исправлено?

Спасибо за сообщение, компилятор проправим

На выполнении будет критическая ошибка выполнения, подобная делению на ноль.

В целом это проблема знакового деления: результат (INT_MIN или LONG_MIN)/-1 не помещается в назначение, т.к. максимальное положительное знаковое целое (INT_MAX/LONG_MAX) на единицу меньше значения abs(INT_MIN/LONG_MIN)

 

Ilyas:

На выполнении будет критическая ошибка выполнения, подобная делению на ноль.


В целом это проблема знакового деления: результат (INT_MIN или LONG_MIN)/-1 не помещается в назначение, т.к. максимальное положительное знаковое целое (INT_MAX/LONG_MAX) на единицу меньше значения abs(INT_MIN/LONG_MIN)

INT_MIN / -1 должно быть равно INT_MIN*-1 и равно -INT_MIN.

Понятно, что при этом происходит переполнение, и -INT_MIN "превращается" в INT_MIN.

Но при этом при умножении на -1 и при простом изменении знака никакой критической ошибки не возникает и возращается INT_MIN, что логично. Чем деление на -1 принципиально отличается?

   int min = INT_MIN;
   int i = min * -1;
   Print(i == INT_MIN);    //true
   Print(-min == INT_MIN); //true

Если я не ошибаюсь, в C++ (INT_MIN / -1) такая же легитимная операция, как и (INT_MIN * -1).

Почему в mql5 иначе?

 
mktr8591:

Если я не ошибаюсь, в C++ (INT_MIN / -1) такая же легитимная операция, как и (INT_MIN * -1).

Нет, ошибаюсь, по идее в С++ переполнение знаковых целых даёт UB.


Ilyas:

Уточните, пожалуйста, в mql5 переполнение знаковых целых, например  (INT_MAX+1) - это UB или нет?

 
fxsaber:

К сожалению, для Маркета они не подходят.

Топовые продавцы используют так называемые "бесплатные утилиты", которые скачиваются в обход сервиса...

The EA needs an awesome free tool – the MT4 Alert Reader app that helps read texts in the alert window pop up. Contact me to get this free app.

Это, как я понял, всех устраивает. 

 
mktr8591:

Нет, ошибаюсь, по идее в С++ переполнение знаковых целых даёт UB.


Ilyas:

Уточните, пожалуйста, в mql5 переполнение знаковых целых, например  (INT_MAX+1) - это UB или нет?

Да, UB

 
Ilyas:

Да, UB

Спасибо!