Desejos para MT5 - página 45

 
Caros programadores. Como se sentiria com a introdução de um tipo de dados de C/C++ "duplo longo"? Isso seria muito útil. Verdade seja dita, descobri que a precisão do tipo "duplo" não é suficiente para os cálculos. Ou, em alternativa, fazer uma classe especial para operações com precisão definida arbitrariamente. Como é que se vê isso?
Документация по MQL5: Основы языка / Типы данных
Документация по MQL5: Основы языка / Типы данных
  • www.mql5.com
Основы языка / Типы данных - Документация по MQL5
 
-Alexey-:
Caros programadores. O que pensa sobre a introdução do tipo de dados "duplo longo" de C/C++? Seria muito útil. Para dizer a verdade, descobri que a precisão do tipo "duplo" é insuficiente para os cálculos. Ou, em alternativa, fazer uma classe especial para operações com precisão definida arbitrariamente. O que pensa sobre o assunto?

Desculpe a intromissão, mas está a lançar um foguetão para o espaço? Não seria melhor pensar em optimizar o algoritmo ou algo assim?

Pode dar um exemplo onde tal precisão é necessária?

 
Por exemplo, é necessário para o cálculo numérico do quantil de distribuição normal com precisão de pelo menos 4-5 sinais, pois a dependência em P>.9 situa-se no horizonte e o zero máquina em mudança de probabilidade não permite obter precisão superior a 2-3 sinais, e em P>.99 ainda pior. E assim por diante. Os números podem ser um pouco diferentes, é apenas por exemplo, pois tenho de trabalhar com uma distribuição diferente, mas a ideia é a mesma. O que é um foguete :)
 
Surgiu outro problema com a falta de precisão. A situação é a seguinte. Estou a construir uma função de distribuição de 10.000 valores por preços. Em alguns intervalos o valor da função é pequeno e dividido por 10000. Obtemos valores da ordem 1*10e-6; depois precisamos de encontrar o quadrado da diferença entre estes valores e obter o valor da ordem 1*10e-13 (depois vários milhares desses valores precisam de ser somados); os dados são catastroficamente perdidos. E 10000 não é tanto, para dizer a verdade - não muito. É por isso que peço mais uma vez aos criadores que introduzam o "duplo longo". Tanto quanto sei, o trabalho estatístico com grandes amostras no campo financeiro é uma tarefa frequentemente exigida. Caso contrário, acontece que acabamos de nos entusiasmar com a MQL5 e agora temos de mudar para C++.
 
-Alexey-:
Há mais um problema com a falta de precisão. A situação é a seguinte. Estamos a construir uma função de distribuição para 10 000 valores por preço. Em alguns intervalos o valor da função é pequeno e dividido por 10000. Obtemos valores da ordem 1*10e-6; depois é necessário definir o quadrado da diferença entre estes valores e obtemos o valor da ordem 1*10e-13 (depois vários milhares desses valores devem ser somados); os dados são catastroficamente perdidos. E 10000 não é tanto, para dizer a verdade - não muito. É por isso que peço mais uma vez aos criadores que introduzam o "duplo longo". Tanto quanto sei, o trabalho estatístico com grandes amostras no campo financeiro é uma tarefa frequentemente exigida. Caso contrário, acabamos de nos entusiasmar com a MQL5 e agora temos de mudar para C++.

Otipo duplo em mql5 funciona com números no intervalo +-10e-307 a +-10e307, com mantissa de 16 dígitos. Portanto, não há problemas descritos por si.

Se a mantissa declarada não for suficiente, desenvolver uma classe de maior precisão, por exemplo, com mantissa de 32 dígitos. É um direito que lhe assiste.

Mas para a massa principal de criadores, 16 dígitos de mantissa é suficiente, porquê incomodar-se com tal confusão?

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

Otipo duplo em mql5 funciona com números no intervalo +-10e-307 a +-10e307, com mantissa de 16 dígitos. Portanto, não há problemas descritos por si.

Se a mantissa declarada não for suficiente, desenvolver uma classe de maior precisão, por exemplo, com mantissa de 32 dígitos. É um direito que lhe assiste.

Para a maioria dos criadores, 16 caracteres mantissa é suficiente, então porquê incomodar-se com isso?

Não concordo. Aqui está um exemplo (grelha 10000x10000)

duplo x1=0,0011;

duplo y1=x1/10000;

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

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


printf(string(d)));

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

Então, o que faço com este resultado? Como posso compará-lo com outros resultados? DBL_EPSILON=2.2204460492503131e-016. Para além dos dois últimos dígitos - ver? E isso são apenas duas operações. E eu tenho mais destas operações. E esta informação deve ser utilizada para restaurar os dados mais tarde com mais algumas operações. Mais perdas. Estou apenas a aprender a programar numa língua tipo C e tal aula é difícil para mim de construir (ou melhor, não faço ideia de como). Este é um trabalho sério. A propósito, por acaso, tem uma tal aula? E os criadores podem melhorar as coisas para todos de uma só vez. Seria possível fazer 100.000x100.000 grelhas. Já estariam disponíveis amostras mais ou menos representativas, embora mesmo isto não seja suficiente em geral. E se fizessem uma aula de precisão arbitrária, seria ainda melhor :) É apenas um tipo de dados. Se existe, está lá por uma razão, porque preenche uma necessidade. A questão é que eu não sei se é difícil ou não para os criadores. Se é difícil e caro - concordo consigo - porquê passar-lhes o meu problema. Mas se não é difícil - porque não fazê-lo? Mais uma vez - um poderoso ambiente de desenvolvimento para cálculos comerciais com alta precisão - alguma vantagem competitiva aqui :). É por isso que pergunto o que eles pensam sobre o assunto.
 
-Alexey-:
Mais uma vez - um poderoso ambiente de desenvolvimento para cálculos comerciais com alta precisão - alguma vantagem competitiva aqui :).

Isto é apenas do seu ponto de vista... 99,9999% não precisam dele

Utilizar software especializado para este fim....

 
AlexSTAL:

Isto é apenas do seu ponto de vista... 99,9999% não precisam dele

Utilizar software especializado para este fim....

É isso mesmo, o MT é um produto especializado para cálculos financeiros. Os cálculos financeiros estão intimamente ligados à utilização de métodos estatísticos. E não há necessidade de dominar novos produtos - quero desenvolver o TS num ambiente comercial, em vez de lidar com isto e lutar com os tipos. Além disso, parece que a MQL5 conta muito rapidamente.
 
-Alexey-:
É isso mesmo, o MT é um produto especializado para cálculos financeiros. E os cálculos financeiros estão intimamente ligados à utilização de métodos estatísticos. E não há necessidade de dominar novos produtos - quero desenvolver o TS num ambiente comercial, em vez de lidar com isto e lutar com os tipos. Além disso, parece que a MQL5 é realmente rápida.

Compreende que a qualquer programador falta sempre algo....

Se 500 programadores escreverem 10 desejos a cada um - então seria preciso um escritório como o de Bill....

para implementar fantasias....

 
AlexSTAL:

Compreende que a qualquer programador falta sempre algo....

Se 500 programadores escrevessem 10 desejos cada um, seria preciso um escritório como o de Bill....

para tornar as fantasias realidade....

As fantasias não têm absolutamente nada a ver com isso. A minha pergunta surgiu sobre a possibilidade de implementar o método de análise mais comum. Nomeadamente, está a trabalhar com a fila que resta após a remoção da tendência e do ciclo. Este método está escrito em todos os livros de estatística financeira e material didáctico universitário, sem excepção. Isto não é uma fantasia, mas uma das abordagens canónicas da análise. E um ambiente especializado deve ter os meios para implementar esta abordagem - o que pensa?
Razão: