Пожелания для МТ5 - страница 46

 
-Alexey-:
Не согласен, проблема есть, вот пример (сетка 10000x10000):

          double x1=0.0011;

         double y1=x1/10000;

         double x2=0.0012;
         double y2=x2/10000;
       
         double c=y1-y2;
         double d=MathPow(c,2);
          

         printf(string(d));

         результат: 9.999999999999968e-017

И что мне с этим результатом делать? Как сравнивать с другими результатами? DBL_EPSILON=2.2204460492503131e-016. Кроме того два последних разряда - видите? И это только две операции. А у меня этих операций больше. А по этой информации потом восстанавливать данные надо с помощью еще некоторого количества операций. Еще потери. Я только учусь программировать на С-подобном языке и для меня такой класс трудно сделать(вернее, даже не представляю как). Это серьезная работа. Кстати, у вас, случайно, может есть такой класс? А разработчики сразу за один раз для всех могут улучшить положение вещей. Можно будет делать сетки 100 000x100 000. Уже более-менее представительные выборки доступны будут, хотя и этого мало по большому счету. А если бы они класс для произвольной точности сделали - было бы еще лучше :) При чем здесь огород городить - это просто тип данных. Если он существует, значит не просто так, а потому, что удовлетворяет возникающие потребности. Дело в том, что мне не известно - трудно это для разработчиков или не очень. Если трудно и накладно - то согласен с вами - зачем перекладывать на них мою проблему. А если не трудно - почему бы и не сделать. Опять же - мощная среда разработки торговых расчетов с высокой точностью - тут некое конкурентное преимущество :). Поэтому спрашиваю, что они думают про это.

Перечитайте пожалуйста что такое стандартный вид числа, и многие вопросы отпадут.

В стандартном вида 1.111е5 больше чем 9.999е4 так что сравнение проходит вполне корректно. млин прийдётся статью написать ликбезовскую.

Вот этот же результат: 9.999999999999968e-017 связан с двоичным преставлением числа, не всякое число в двоичном виде представляется конечной дробью, некоторые представляются бесконечной, отсюда округление мантисы до ближайшего числа с конечной дробью.

ЗЫ кстати вот double d=MathPow(c,2); так брать степень не коррректно, если вы работаете с дубль то нужно double d=MathPow(c,2.0); так, не знаю баг или нет но задавая возведение числа в степень нужно следить и за типом показателя.

 
-Alexey-:
Фантазии здесь совершенно не при чем. Мой вопрос возник по возможности реализации самого распространенного метода анализа. А именно - работа с рядом, оставшимся после удаления тренда и цикла. Про этот метод написано во всех, без исключения, учебниках по статистике финансов и методичках в вузах. Это не какая-то фантазия, а один из канонических подходов к анализу. И специализированная среда должна иметь средства реализовать такой подход - как вы считаете?
)))))))
 
Urain:

Перечитайте пожалуйста что такое стандартный вид числа, и многие вопросы отпадут.

В стандартном вида 1.111е5 больше чем 9.999е4 так что сравнение проходит вполне корректно. млин прийдётся статью написать ликбезовскую.

Вот этот же результат: 9.999999999999968e-017 связан с двоичным преставлением числа, не всякое число в двоичном виде представляется конечной дробью, некоторые представляются бесконечной, отсюда округление мантисы до ближайшего числа с конечной дробью.

Про 1.111е5 и 9.999е4 понятно. Но мне необходимо сравнивать вот эти: 9.999999999999968e-017 (про потерю точности в разрядах я дополнительно написал). А справка говорит, что числа с разницей меньше DBL_EPSILON необходимо считать неразличимыми. Извиняюсь, если не совсем понятно пишу - пока только разбираюсь в этом :) За информацию про показатель отдельно спасибо.

 
Urain:

ЗЫ кстати вот double d=MathPow(c,2); так брать степень не коррректно, если вы работаете с дубль то нужно double d=MathPow(c,2.0); так, не знаю баг или нет но задавая возведение числа в степень нужно следить и за типом показателя.

Показатель степени в любом случае должен быть типа double.
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Основы языка / Типы данных / Вещественные типы (double, float) - Документация по MQL5
 

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

что то наподобии этого:

voids get(int i)
  {
   if(i==0)return((int)2);
   else
     {
      if(i==1)return((double)2);
      else
        {
         if(i==2)return((string)2);
        }
     }
  }

ЗЫ Предвосхищая вопрос для чего это нужно, хочу иметь в пользовательских функциях вот такие объявления:

int  Custom_ArraySize( void  array[] );   
bool Custom_ArraySort( number&  array[] );

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

Вот представьте, пишет человек код, наваял 1500 строк, и весь код работает с дублем, чтоб передать в него инт нужно будет сделать перегрузку ещё на 1500 строк. А у вас 14 типов.

 
Urain:

Вот представьте, пишет человек код, наваял 1500 строк, и весь код работает с дублем, чтоб передать в него инт нужно будет сделать перегрузку ещё на 1500 строк. А у вас 14 типов.

Используйте ООП.

 
lea:

Используйте ООП.

А я по вашему на автокодах пишу что ли?

to Разработчики:

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

void OnStart()
  {
   int array[10];
   func((double)array)
  }
//+------------------------------------------------------------------+
void func(double &array[]){};

 

 
Urain:

А я по вашему на автокодах пишу что ли?

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

p.s. Если бы во время решения вашей задачи у вас был только компилятор C++ - мы бы услышали предложение о пересмотре стандарта языка?

 
lea:

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

p.s. Если бы во время решения вашей задачи у вас был только компилятор C++ - мы бы услышали предложение о пересмотре стандарта языка?

Не путайте транслятор и компилятор, mql на самом деле никакой не компилятор, это транслятор описывающий безопастные вызовы функций C++

к тому же mql5 находится в активной фазе разработки. Так что моя просьба внести изменения вполне адекватная.

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
Urain:

Не путайте транслятор и компилятор, mql на самом деле никакой не компилятор, это транслятор описывающий безопастные вызовы функций C++

к тому же mql5 находится в активной фазе разработки. Так что моя просьба внести изменения вполне адекватная.

 

Ок, если это настолько важно - возьмем не C++, а Java. Тоже трансляция в байткод :) Просим пересмотреть стандарт языка?

Просьба добавить универсальный тип - не вполне адекватна. Просить нужно шаблоны. А для универсальных типов достаточно ООП.

Причина обращения: