Новая версия платформы MetaTrader 5 build 3280: Улучшения и исправления по отзывам трейдеров - страница 3

 

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

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

Хотите сравнивать и присваивать - пишите явную функцию. Колхозить в стиле C нужно меньше всего.

 
Renat Fatkhullin #:

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

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

Хотите сравнивать и присваивать - пишите явную функцию. Колхозить в стиле C нужно меньше всего.

Так и предлагается запретить (Error вместе Warning) неявно сравнивать разные enum

Это не логично - следовательно это либо ошибка программиста, либо нужно явное приведение к int

 
ruslan #:
не работает конвертер периодов !!! на 4 !!! в билдах 1353 и 1355 не работает журнал пишет но зависает но файл истории не пишется
Эта тема предназначена для Metatrader 5 (о последней версии MT5 build 3280).
Пожалуйста, перепостите свой вопрос в тему MT4: Обновление платформы MetaTrader 4 build 1353
MetaTrader 4 platform update build 1353
MetaTrader 4 platform update build 1353
  • 2021.12.09
  • www.mql5.com
The MetaTrader 4 platform update will be released on Friday, December 10, 2021...
 
A100 #:

Так и предлагается запретить (Error вместе Warning) неявно сравнивать разные enum

Это не логично - следовательно это либо ошибка программиста, либо нужно явное приведение к int

Да, сравнения тоже надо считать ошибкой вместо предупреждения.
 
Запустить дебаг этого скрипта.
void OnStart()
{
  MqlTick Ticks[];
  ArrayResize(Ticks, 1);
  
  DebugBreak();
}

Добавить в отслеживаемые Ticks[0].asl. На конце специально написано l.

Теперь делаем двойное нажатие ЛКМ на выделенном отслеживаемом выражении.


Получаем вылет ME (b3280).

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

 
Alexandr Gavrilin #:
Сессии есть вот только брокеры леняться все прописать. Столкнулся с этим в Открытии, поддержка ссылалась на московскую биржу типо они не могут поменять. Из-за этого советник при тестировании не понимал когда нельзя торговать. Пришлось в коде прописывать время для симуляции .

Не сессии есть, а невесть что. Брокер тут не причем!

Данные о сессиях транслирует Биржа. 

 
MetaQuotes:

Обновление платформы MetaTrader 5 будет выпущено в пятницу, 29 апреля 2022 года. Обновление содержит улучшения и исправления, основанные на отзывах, которые мы получили после выпуска билда 3270.


Обновление включает следующие изменения:

  1. Terminal: Исправлено заполнение стандартных уровней трейлинг-стопа в контекстном меню открытых ордеров и позиций.





  2. Терминал: Обновлены переводы пользовательского интерфейса.
  3. Исправлены ошибки, о которых сообщалось в журналах аварий.


Обновление будет доступно через систему Live Update.

Спасибо.

 

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

Простой пример (Рис.1). Создаётся матрица А_МХ. Парой кликов открывается первая строка для просмотра значений.


Рис.1


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


Рис.2

 
A100 #:

Согласно Документации: enum относятся к некоторому ограниченному множеству данных. В этом смысле сравнение и присваивание принципиально не отличаются: в обоих случаях должен быть или Warning или Error. А то что сравнивать можно, а присваивать нельзя - это нонсенс

Никакого различия нет, код теста не полный - при сравнении используется константа, а при присваивании переменное значение.

Вот полный код:

void OnStart()
  {    
   ENUM_DEAL_REASON  ReasonD = DEAL_REASON_TP;

   ENUM_ORDER_REASON Reason1 = DEAL_REASON_TP;
   Reason1 = ReasonD;                          // ERROR
  
   Print(DEAL_REASON_TP == ORDER_REASON_TP);     
   Print(Reason1 == ReasonD);                  // ERROR
  }

Компилятор проверяет, если константа в перечислении есть, то выдаётся предупреждение, при чём если константа является другим перечислением, то компилятор выводит

'ENUM_DEAL_REASON::DEAL_REASON_TP' will be used instead of 'ENUM_ORDER_REASON::ORDER_REASON_TP'


В случае с переменной, компилтяор не знает, какое будет значение и выдаёт ошибку.


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

 


Я надеюсь, что в следующем обновлении для мобильных устройств (ios) MT5 должен дать "магический номер" для информации о сделках и позициях.

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