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

 
Ihor Herasko :

В любом коде для МТ такая конструкция должна быть как Отче Наш:

И только если уже получено значение величины пункта, его можно использовать. А до тех пор ждем полного соединения с сервером.

Проблема не в этом, но тенарный оператор (? :) не работает от случая к случаю.
Изначально у меня было сравнение с 0:

BuffPrcRel[iB] = BuffPrcLong[iB]== 0 ? 1.0 : ( fmax (BuffPrc[iB],cV*BuffVolDiff[iB]) / BuffPrcLong[iB] );
что тоже привело к делению на ноль (в третьей части, после :), хотя именно это и должно быть уловлено в первой части (чек, или?).

Таким образом, независимо от того, есть соединение с сервером или нет, деление на ноль не должно происходить, поскольку в этом случае присваивается 1.0.

That is not the problem, but the tenary operator (?:) does not work case by case.
Originally I had the comparison with 0:

BuffPrcRel[iB] = BuffPrcLong[iB]==0 ? 1.0 : (fmax(BuffPrc[iB],cV*BuffVolDiff[iB]) / BuffPrcLong[iB] );
which also led to the division with zero (in the third part, after :), although exactly that should be caught in the first part (the check, or ?).

So, no matter if there is a connection to the server or not, a division by zero should not occur as in this case 1.0 is assigned.

 

При переключении профилей графиков (или при выключении терминала) удаляются все графики из текущего шаблона.

Замечено на Windows 11 и на Windows 10.

MT5 deletes charts after restart, any solution?
MT5 deletes charts after restart, any solution?
  • 2021.08.11
  • www.mql5.com
Dear All, I am facing a problem with my MT5 terminals and I need your help solving it please. I trade usin EA's , so I have few charts open...
 

b3017

Ребята, молодцы! Очень красиво сделали иконки! Пока только первым взглядом. Буду всматриваться на выходных)

Ещё заметил, что на андроид версии уже давно нормальный визуальный стиль, даже тёмную тему видел на скринах продавцов маркета.



 

Похоже, что очень спешили:

В Панели инструментов так, а в Главном меню наоборот:


Здесь странно не наличие самой ошибки, а то что одинаковые меню - на самом деле разные. У меня если бы была такая ошибка, то во всех местах сразу

 

В Навигаторе пропадают иконки - достаточно сделать движение мышью по изменению порядка строк

до:


после:


 

b3017

Про иконки

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


Не все иконки вошли в новый стиль и на двух скринах показываю, что нашёл (терминал)


Если за иконки взялись всерьёз, то можно ещё в тестере и едиторе сделать. Внимательно пройтись по всем закоулкам всех меню.

Если все пути к иконкам со всех софтов прописаны в одну папку, то исправление будет происходить в одной лишь папке, не лазия по всем местам.

Если сделано не так, то лучше провести рефакторинг на будущее. Если все иконки будут в одном месте, то стоит их там отредактировать, как они во всех местах станут обновлёнными.

Но я бы ещё предусмотрел два пути к иконкам, в зависимости от какой либо переменной в настройках. Например White Theme или Black Theme

Выбрано White, тащим иконки из

White ico Folder:

login.ico

open-order.ico

...

И тоже самое в Black ico Folder.

Дизайнеру просто надо пройтись по всей папке и произвести апгрейд стиля всех элементов, которые там находятся.

И уже после компиляции софта будет везде всё красиво. В терминале, web-терминале, едиторе, тестере и везде. Весь дизайн из одного бочонка.


Ну и значки терминалов было бы круто осовременить, офлэтить.


 
Carl Schreiber:

Проблема не в этом, но тенарный оператор (? :) не работает от случая к случаю.
Изначально у меня было сравнение с 0:

что тоже привело к делению на ноль (в третьей части, после :), хотя именно это и должно быть уловлено в первой части (чек, или?).

Таким образом, независимо от того, есть соединение с сервером или нет, деление на ноль не должно происходить, поскольку в этом случае присваивается 1.0.

That is not the problem, but the tenary operator (?:) does not work case by case.
Originally I had the comparison with 0:

which also led to the division with zero (in the third part, after :), although exactly that should be caught in the first part (the check, or ?).

So, no matter if there is a connection to the server or not, a division by zero should not occur as in this case 1.0 is assigned.

Изначально я ориентировался на этот код, который Вы привели:

BuffPrcRel[iB] = BuffPrcLong[iB]<MyZero ? 1.0 : (fmax(BuffPrc[iB],cV*BuffVolDiff[iB]) / BuffPrcLong[iB] );

В этом случае проблема именно в том, что я и описал: нужно проверять, что возвращает Point(). Также можно еще было изменить строку на такую:

BuffPrcRel[iB] = (BuffPrcLong[iB]<=MyZero) ? 1.0 : (fmax(BuffPrc[iB],cV*BuffVolDiff[iB]) / BuffPrcLong[iB] );

Здесь смысл сразу в двух изменениях:

  1. Выделить условие для тернарного оператора скобками, что не только улучшает читаемость кода, но и помогает справиться с неявными ошибками логики при компиляции.
  2. Знак <= вместо <. При значении BuffPrcLong[iB], равным нулю, все равно произойдет выбор второй части тернарного оператора. Поэтому нулевое значение также следует учитывать.
 
Ihor Herasko :

Я не понимаю.
Какое значение должно иметь BuffPrcLong [iB] для полного заполнения:

 /* Version 1: */ BuffPrcLong[iB] != 0. && BuffPrcLong[iB] == 0.0
 //or
 /* Version 2: */ BuffPrcLong[iB] > MyZero && BuffPrcLong[iB] == 0.0

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

I don't understand.
What value does BuffPrcLong[iB] have to have in order to full fill:

/* Version 1: */ BuffPrcLong[iB] != 0. && BuffPrcLong[iB] == 0.0
//or
/* Version 2: */ BuffPrcLong[iB] > MyZero && BuffPrcLong[iB] == 0.0

In both cases, on rare occasions, I received the warm message division by zero after I changed the chart period.