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

fxsaber:

Прикольно

Результат

Оба запроса с разными ценами, но выполнились без проблем по одной и той же цене. Как так?

Очень просто -  с точки зрения double - эти числа одинаковы, потому что в double-е хранится 52 бита мантиссы или 15 десятичных разрядов. Различия в плюс-минус в последующих разрядах - не считаются. Вот статья на хабре.

Stanislav Korotky:

Очень просто -  с точки зрения double - эти числа одинаковы, потому что в double-е хранится 52 бита мантиссы или 15 десятичных разрядов. Различия в плюс-минус в последующих разрядах - не считаются. Вот статья на хабре.

void OnStart()
{
  const double Num = 8.274;
  const double Norm = NormalizeDouble(Num, 3);
  
  Print((string)(Norm - Num)); // 1.77635683940025e-15
}

fxsaber, 2017.07.19 13:00

void OnStart()
{
  const double Num = 8.274;
  const double Norm = NormalizeDouble(Num, 3);
  
  Print((string)(Norm - Num)); // 1.77635683940025e-15
}

И?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2017.07.17 21:49

Если во время одиночного прогона нажать на "Стоп", то OnDeinit и деструкторы не вызываются.

Это недоработка или ошибка?

Сейчас при нажатии на кнопку "Стоп" происходит жесткий дисконнект с Агентом. Настолько жесткий, что не дождавшись завершения одиночного прогона невозможно посмотреть отчет.

В MT4 всегда можно видеть торговую историю незавершенного одиночного прогона. А в MT5 - никак.

Возможно ли не жестко обрывать соединение, а отправлять на Агента флаг, который можно было бы поймать и выполнить на нем OnDeinit?

Stanislav Korotky:

И?

Stanislav Korotky:

Очень просто -  с точки зрения double - эти числа одинаковы, потому что в double-е хранится 52 бита мантиссы или 15 десятичных разрядов. Различия в плюс-минус в последующих разрядах - не считаются. Вот статья на хабре.

Отличие больше, чем 1e-15. Более того, Num != Norm. Это разные числа, а не одинаковые.
Stanislav Korotky:

И?

Ну вообще-то согласен, если мы задаем литерал, логично было бы что его double представление сразу нормализовано по количеству разрядов в литерале

fxsaber:
Отличие больше, чем 1e-15. Более того, Num != Norm. Это разные числа, а не одинаковые.

У меня МТ4 выводит true, true и разницу 0. ;-)

Stanislav Korotky:

У меня МТ4 выводит true, true и разницу 0. ;-)

Недокументированный способ отличия MT4/5 образовался. И битность MT5 не при чем.

fxsaber:

Недокументированный способ отличия MT4/5 образовался. И битность MT5 не при чем.

Кроме этого в mql4 работает, а в mql5 нет даже документированная операция префиксный инкремент (++i) и декремент (--k)

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Alexey Viktorov:

Кроме этого в mql4 работает, а в mql5 нет даже документированная операция префиксный инкремент (++i) и декремент (--k)

Не увидел проблемы

void OnStart()
{
  int i = 0;
  
  Print(i++ == 0); // true
  Print(++i == 2); // true
}