Deseos para MT5 - página 45

 
Estimados desarrolladores. ¿Qué le parecería introducir un tipo de datos de C/C++ "long double"? Eso sería muy útil. A decir verdad, me he encontrado con que la precisión del tipo "doble" no es suficiente para los cálculos. O, como alternativa, crear una clase especial para las operaciones con una precisión definida arbitrariamente. ¿Cómo lo ves?
Документация по MQL5: Основы языка / Типы данных
Документация по MQL5: Основы языка / Типы данных
  • www.mql5.com
Основы языка / Типы данных - Документация по MQL5
 
-Alexey-:
Estimados desarrolladores. ¿Qué opinas de la introducción del tipo de datos "long double" de C/C++? Sería muy útil. A decir verdad, me he encontrado con que la precisión del tipo "doble" es insuficiente para los cálculos. O, como alternativa, crear una clase especial para las operaciones con una precisión definida arbitrariamente. ¿Qué te parece?

Siento entrometerme, pero ¿vas a lanzar un cohete al espacio? ¿No sería mejor pensar en optimizar el algoritmo o algo así?

¿Puede dar un ejemplo en el que se necesite tal precisión?

 
Por ejemplo, es necesario para el cálculo numérico del cuantil de la distribución normal con una precisión de al menos 4-5 signos, ya que la dependencia a P>.9 se encuentra en el horizonte y el cero de la máquina en el cambio de probabilidad no permite obtener una precisión de más de 2-3 signos, y a P>.99 aún peor. Y así sucesivamente. Las cifras pueden ser un poco diferentes, es sólo por ejemplo, ya que tengo que trabajar con una distribución diferente, pero la idea es la misma. Qué cohete :)
 
Otro problema ha surgido con la falta de precisión. La situación es la siguiente. Estoy construyendo una función de distribución de 10000 valores por precios. En algunos intervalos el valor de la función es pequeño y se divide por 10000. Obtenemos valores del orden de 1*10e-6; luego hay que encontrar el cuadrado de la diferencia entre estos valores y obtener el valor del orden de 1*10e-13 (luego hay que sumar varios miles de estos valores); los datos se pierden catastróficamente. Y 10000 no es tanto, a decir verdad, no es mucho. Por eso vuelvo a pedir a los desarrolladores que introduzcan el "doble largo". Según tengo entendido, el trabajo estadístico con grandes muestras en el ámbito financiero es una tarea que se demanda con frecuencia. De lo contrario, resulta que uno acaba de entusiasmarse con MQL5 y ahora tiene que cambiar a C++.
 
-Alexey-:
Hay un problema más con la falta de precisión. La situación es la siguiente. Estamos construyendo una función de distribución para 10 000 valores por precio. En algunos intervalos el valor de la función es pequeño y se divide por 10000. Se obtienen valores del orden de 1*10e-6; luego hay que definir el cuadrado de la diferencia entre estos valores y se obtiene el valor del orden de 1*10e-13 (luego hay que sumar varios miles de estos valores); los datos se pierden catastróficamente. Y 10000 no es tanto, a decir verdad, no es mucho. Por eso vuelvo a pedir a los desarrolladores que introduzcan el "doble largo". Según tengo entendido, el trabajo estadístico con grandes muestras en el ámbito financiero es una tarea que se demanda con frecuencia. Si no, resulta que acabamos de entusiasmarnos con MQL5 y ahora tenemos que cambiar a C++.

Eltipo double en mql5 funciona con números en el rango +-10e-307 a +-10e307, con mantisa de 16 dígitos. Así que no hay problemas descritos por usted.

Si la mantisa declarada no es suficiente, desarrolle una clase de mayor precisión, por ejemplo, con mantisa de 32 dígitos. Está en su derecho.

Pero para la masa principal de desarrolladores basta con 16 dígitos de mantisa, ¿por qué molestarse con semejante lío?

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

Eltipo double en mql5 funciona con números en el rango +-10e-307 a +-10e307, con mantisa de 16 dígitos. Así que no hay problemas descritos por usted.

Si la mantisa declarada no es suficiente, desarrolle una clase de mayor precisión, por ejemplo, con mantisa de 32 dígitos. Está en su derecho.

Para la mayoría de los desarrolladores, la mantisa de 16 caracteres es suficiente, así que ¿por qué molestarse con ella?

No estoy de acuerdo. He aquí un ejemplo (cuadrícula 10000x10000)

doble x1=0,0011;

doble y1=x1/10000;

doble x2=0,0012;
doble y2=x2/10000;

doble c=y1-y2;
double d=MathPow(c,2);


printf(cadena(d));

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

¿Qué hago con este resultado? ¿Cómo lo comparo con otros resultados? DBL_EPSILON=2.2204460492503131e-016. Además de los dos últimos dígitos, ¿ves? Y eso son sólo dos operaciones. Y tengo más de estas operaciones. Y basándose en esta información, tendrá que restaurar los datos más tarde utilizando algunas operaciones más. Más pérdidas. Recién estoy aprendiendo a programar en un lenguaje tipo C y una clase así me resulta difícil de construir (o mejor dicho, no tengo idea de cómo). Este es un trabajo serio. Por cierto, por casualidad, ¿tienen una clase de este tipo? Y los desarrolladores pueden mejorar las cosas para todos a la vez. Sería posible hacer 100.000x100.000 cuadrículas. Ya se dispondría de muestras más o menos representativas, aunque incluso esto no es suficiente en general. Y si hicieran una clase para la precisión arbitraria, sería aún mejor :) Es sólo un tipo de datos. Si existe, está ahí por una razón, porque satisface una necesidad. La cuestión es que no sé si es difícil o no para los desarrolladores. Si es difícil y caro -estoy de acuerdo contigo-, por qué pasarles mi problema. Pero si no es difícil, ¿por qué no hacerlo? Una vez más, un potente entorno de desarrollo para realizar cálculos comerciales con gran precisión, lo que supone una ventaja competitiva :). Por eso les pregunto qué opinan al respecto.
 
-Alexey-:
Una vez más, un potente entorno de desarrollo para realizar cálculos comerciales con gran precisión, lo que supone una ventaja competitiva :).

Esto es sólo desde su punto de vista... El 99,9999% no lo necesita

Utilice un software especializado para ello....

 
AlexSTAL:

Esto es sólo desde su punto de vista... El 99,9999% no lo necesita

Utilice un software especializado para ello....

Esa es la cuestión, MT es un producto especializado en cálculos financieros. Los cálculos financieros están estrechamente relacionados con el uso de métodos estadísticos. Y no hay necesidad de dominar nuevos productos - quiero desarrollar TS en un entorno comercial, en lugar de tratar con esto y luchar con los tipos. Además, parece que MQL5 cuenta realmente rápido.
 
-Alexey-:
Esa es la cuestión, MT es un producto especializado en cálculos financieros. Y los cálculos financieros están estrechamente relacionados con el uso de métodos estadísticos. Y no hay necesidad de dominar nuevos productos - quiero desarrollar TS en un entorno comercial, en lugar de tratar con esto y luchar con los tipos. Además, parece que MQL5 es realmente rápido.

Entiendes que a cualquier desarrollador siempre le falta algo....

Si 500 programadores escriben 10 deseos cada uno, se necesitaría una oficina como la de Bill....

para poner en práctica las fantasías....

 
AlexSTAL:

Entiendes que a cualquier desarrollador siempre le falta algo....

Si 500 programadores escribieran 10 deseos cada uno, se necesitaría una oficina como la de Bill....

para hacer realidad las fantasías....

Las fantasías no tienen absolutamente nada que ver. Mi pregunta se refería a la posibilidad de aplicar el método de análisis más común. Es decir, se trabaja con la fila que queda después de eliminar la tendencia y el ciclo. Este método aparece en todos los libros de texto de estadística financiera y en el material didáctico de las universidades sin excepción. Esto no es una fantasía, sino uno de los enfoques canónicos del análisis. Y un entorno especializado debería contar con los medios para aplicar este enfoque, ¿qué opinas?