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

 
Уважаемые разработчики. Как вы смотрите на то, чтобы ввести тип данных из С/C++ "long double"? Это было бы очень полезно. По правде говоря, я столкнулся с тем, что точности типа "double" не хватает для расчетов. Или альтернативный вариант - сделать специальный класс для операций с произвольно задаваемой точностью. Как вы на это смотрите?
Документация по MQL5: Основы языка / Типы данных
Документация по MQL5: Основы языка / Типы данных
  • www.mql5.com
Основы языка / Типы данных - Документация по MQL5
 
-Alexey-:
Уважаемые разработчики. Как вы смотрите на то, чтобы ввести тип данных из С/C++ "long double"? Это было бы очень полезно. По правде говоря, я столкнулся с тем, что точности типа "double" не хватает для расчетов. Или альтернативный вариант - сделать специальный класс для операций с произвольно задаваемой точностью. Как вы на это смотрите?

Извините что вмешиваюсь, но Вы ракету в космос запускаете? Может лучше подумать над оптимизацией алгоритма или ещё что то?

Можете привести пример, где нужна такая точность?

 
Например это необходимо для численного расчета квантили нормального распределения с точностью хотя бы 4-5 знаков, т.к. зависимость при P>.9 ложится в горизонт и машинный ноль по изменению вероятности не позволяет получить точность больше 2-3 знаков, а при P>.99 еще хуже. И так далее. Цифры возможно немного другие, это просто для примера, т.к. мне приходится с другим распределением работать, но идея такая же. Какая уж тут ракета :)
 
Еще одна проблема возникла с недостатком точности. Ситуация такая. Строится функция распределения по 10000 значений по ценам. На некоторых интервалах значение функции мало и делится на 10000. Получаются значения порядка 1*10e-6; далее необходимо определить квадрат разницы между такими значениями и получается величина порядка 1*10e-13 (потом таких несколько тысяч величин суммировать надо); данные катастрофически теряются. А 10000 это не так много, по правде говоря - мало. Поэтому еще раз прошу разработчиков ввести "long double". Насколько я понимаю, статистическая работа с большими выборками в финансовой сфере - это часто востребованная задача. А то что получается - только обрадовался MQL5, и на С++ переходить?
 
-Alexey-:
Еще одна проблема возникла с недостатком точности. Ситуация такая. Строится функция распределения по 10000 значений по ценам. На некоторых интервалах значение функции мало и делится на 10000. Получаются значения порядка 1*10e-6; далее необходимо определить квадрат разницы между такими значениями и получается величина порядка 1*10e-13 (потом таких несколько тысяч величин суммировать надо); данные катастрофически теряются. А 10000 это не так много, по правде говоря - мало. Поэтому еще раз прошу разработчиков ввести "long double". Насколько я понимаю, статистическая работа с большими выборками в финансовой сфере - это часто востребованная задача. А то что получается - только обрадовался MQL5, и на С++ переходить?

Тип double  в mql5 работает с числами в интервале +-10e-307 до +-10e307, с мантисой в 16 знаков. Так что проблем вами описанных нет.

Если заявленной мантисы не хватает разработайте класс повышенной точности например с мантисой 32 знака. Это ваше право.

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

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

Тип double  в mql5 работает с числами в интервале +-10e-307 до +-10e307, с мантисой в 16 знаков. Так что проблем вами описанных нет.

Если заявленной мантисы не хватает разработайте класс повышенной точности например с мантисой 32 знака. Это ваше право.

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

Не согласен, проблема есть, вот пример (сетка 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. Уже более-менее представительные выборки доступны будут, хотя и этого мало по большому счету. А если бы они класс для произвольной точности сделали - было бы еще лучше :) При чем здесь огород городить - это просто тип данных. Если он существует, значит не просто так, а потому, что удовлетворяет возникающие потребности. Дело в том, что мне не известно - трудно это для разработчиков или не очень. Если трудно и накладно - то согласен с вами - зачем перекладывать на них мою проблему. А если не трудно - почему бы и не сделать. Опять же - мощная среда разработки торговых расчетов с высокой точностью - тут некое конкурентное преимущество :). Поэтому спрашиваю, что они думают про это.
 
-Alexey-:
Опять же - мощная среда разработки торговых расчетов с высокой точностью - тут некое конкурентное преимущество :).

Это только с Вашей точки зрения так... 99.9999% этого не нужно

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

 
AlexSTAL:

Это только с Вашей точки зрения так... 99.9999% этого не нужно

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

В том-то и дело, что МТ - это специализированный продукт для финансовых расчетов. А финансовые расчеты теснейшим образом связаны с использованием статистических методов. Да и зачем осваивать новые продукты - хочется не этим заниматься, и борьбой с типами, а в одной торговой среде разрабатывать ТС. Тем боле, что считает MQL5, похоже, действительно быстро.
 
-Alexey-:
В том-то и дело, что МТ - это специализированный продукт для финансовых расчетов. А финансовые расчеты теснейшим образом связаны с использованием статистических методов. Да и зачем осваивать новые продукты - хочется не этим заниматься, и борьбой с типами, а в одной торговой среде разрабатывать ТС. Тем боле, что считает MQL5, похоже, действительно быстро.

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

Если 500 программеров напишут по 10 пожеланий - то контора нужна как у Билла будет....

для реализации фантазий....

 
AlexSTAL:

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

Если 500 программеров напишут по 10 пожеланий - то контора нужна как у Билла будет....

для реализации фантазий....

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