Auguri per MT5 - pagina 45

 
Cari sviluppatori. Che ne diresti di introdurre un tipo di dati da C/C++ "long double"? Sarebbe molto utile. In verità, ho riscontrato che la precisione del tipo "doppio" non è sufficiente per i calcoli. O in alternativa, fare una classe speciale per le operazioni con precisione definita arbitrariamente. Come si guarda a questo?
Документация по MQL5: Основы языка / Типы данных
Документация по MQL5: Основы языка / Типы данных
  • www.mql5.com
Основы языка / Типы данных - Документация по MQL5
 
-Alexey-:
Cari sviluppatori. Cosa ne pensate dell'introduzione del tipo di dati "long double" da C/C++? Sarebbe molto utile. A dire il vero, ho riscontrato che la precisione del tipo "doppio" è insufficiente per i calcoli. O in alternativa, fare una classe speciale per le operazioni con precisione definita arbitrariamente. Cosa ne pensate?

Scusate l'intrusione, ma state lanciando un razzo nello spazio? Non sarebbe meglio pensare di ottimizzare l'algoritmo o qualcosa del genere?

Può fare un esempio in cui tale precisione è necessaria?

 
Per esempio è necessario per il calcolo numerico del quantile della distribuzione normale con una precisione di almeno 4-5 segni, poiché la dipendenza a P>.9 si trova nell'orizzonte e la macchina zero sul cambio di probabilità non permette di ottenere una precisione più di 2-3 segni, e a P>.99 ancora peggio. E così via. Le cifre possono essere un po' diverse, è solo per esempio, perché devo lavorare con una distribuzione diversa, ma l'idea è la stessa. Che razzo :)
 
Un altro problema è sorto con la mancanza di precisione. La situazione è la seguente. Sto costruendo una funzione di distribuzione di 10000 valori in base ai prezzi. Su alcuni intervalli il valore della funzione è piccolo e diviso per 10000. Otteniamo dei valori dell'ordine 1*10e-6; poi dobbiamo trovare il quadrato della differenza tra questi valori e ottenere il valore dell'ordine 1*10e-13 (poi bisogna sommare diverse migliaia di questi valori); i dati si perdono catastroficamente. E 10000 non è molto, a dire il vero - non molto. Ecco perché chiedo ancora una volta agli sviluppatori di introdurre il "doppio lungo". Per quanto ho capito, il lavoro statistico con grandi campioni nel campo finanziario è un compito frequentemente richiesto. Altrimenti si scopre che uno si è appena entusiasmato per MQL5 e ora deve passare a C++.
 
-Alexey-:
C'è un altro problema con la mancanza di precisione. La situazione è la seguente. Stiamo costruendo una funzione di distribuzione per 10 000 valori per prezzo. In alcuni intervalli il valore della funzione è piccolo e diviso per 10000. Si ottengono valori dell'ordine 1*10e-6; poi bisogna definire il quadrato della differenza tra questi valori e si ottiene il valore dell'ordine 1*10e-13 (poi bisogna sommare diverse migliaia di tali valori); i dati sono catastroficamente persi. E 10000 non è molto, a dire il vero - non molto. Ecco perché chiedo ancora una volta agli sviluppatori di introdurre il "doppio lungo". Per quanto ho capito, il lavoro statistico con grandi campioni nel campo finanziario è un compito frequentemente richiesto. Altrimenti si scopre che ci siamo appena entusiasmati con MQL5 e ora dobbiamo passare a C++.

Iltipo double in mql5 funziona con numeri nell'intervallo da +-10e-307 a +-10e307, con mantissa di 16 cifre. Quindi non ci sono problemi descritti da voi.

Se la mantissa dichiarata non è sufficiente, sviluppate una classe di precisione superiore, per esempio, con mantissa di 32 cifre. Questo è un vostro diritto.

Ma per la massa principale degli sviluppatori 16 cifre di mantissa sono sufficienti, perché preoccuparsi di un tale casino?

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

Iltipo double in mql5 funziona con numeri nell'intervallo da +-10e-307 a +-10e307, con mantissa di 16 cifre. Quindi non ci sono problemi descritti da voi.

Se la mantissa dichiarata non è sufficiente, sviluppate una classe di precisione superiore, per esempio, con mantissa di 32 cifre. Questo è un vostro diritto.

Per la maggior parte degli sviluppatori, 16 caratteri di mantissa sono sufficienti, quindi perché preoccuparsene?

Non sono d'accordo. Ecco un esempio (griglia 10000x10000)

doppio x1=0,0011;

doppio y1=x1/10000;

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

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


printf(string(d));

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

Quindi cosa devo fare con questo risultato? Come posso confrontarlo con altri risultati? DBL_EPSILON=2.2204460492503131e-016. Oltre alle ultime due cifre - vedi? E sono solo due operazioni. E ne ho altre di queste operazioni. E sulla base di queste informazioni, dovrete ricostruire i dati in seguito utilizzando altre operazioni. Altre perdite. Sto imparando a programmare in un linguaggio simile al C e una tale classe è difficile da costruire per me (o meglio, non ho idea di come). Questo è un lavoro serio. A proposito, per caso, avete un corso del genere? E gli sviluppatori possono migliorare le cose per tutti contemporaneamente. Sarebbe possibile fare 100.000x100.000 griglie. Sarebbero già disponibili campioni più o meno rappresentativi, sebbene anche questo non sia sufficiente in generale. E se facessero una classe per la precisione arbitraria, sarebbe ancora meglio :) È solo un tipo di dati. Se esiste, è lì per una ragione, perché soddisfa un bisogno. Il punto è che non so se sia difficile o meno per gli sviluppatori. Se è difficile e costoso - sono d'accordo con te - perché scaricare il mio problema su di loro. Ma se non è difficile - perché non farlo. Di nuovo - un potente ambiente di sviluppo per i calcoli di trading con alta precisione - qualche vantaggio competitivo qui :). Per questo chiedo cosa ne pensano.
 
-Alexey-:
Di nuovo - un potente ambiente di sviluppo per i calcoli di trading con alta precisione - qualche vantaggio competitivo qui :).

Questo è solo dal tuo punto di vista... Il 99,9999% non ne ha bisogno

Utilizzare un software specializzato per questo scopo....

 
AlexSTAL:

Questo è solo dal tuo punto di vista... Il 99,9999% non ne ha bisogno

Utilizzare un software specializzato per questo scopo....

Questo è il punto, MT è un prodotto specializzato per i calcoli finanziari. I calcoli finanziari sono strettamente legati all'uso di metodi statistici. E non c'è bisogno di padroneggiare nuovi prodotti - voglio sviluppare il TS in un ambiente di trading, piuttosto che occuparmi di questo e combattere con i tipi. Inoltre, sembra che MQL5 conti molto velocemente.
 
-Alexey-:
Questo è il punto, MT è un prodotto specializzato per i calcoli finanziari. E i calcoli finanziari sono strettamente legati all'uso di metodi statistici. E non c'è bisogno di padroneggiare nuovi prodotti - voglio sviluppare il TS in un ambiente di trading, piuttosto che occuparmi di questo e combattere con i tipi. Inoltre, sembra che MQL5 sia davvero veloce.

Capite che a qualsiasi sviluppatore manca sempre qualcosa....

Se 500 programmatori scrivono 10 desideri ciascuno, ci vorrebbe un ufficio come quello di Bill....

per implementare le fantasie....

 
AlexSTAL:

Capite che a qualsiasi sviluppatore manca sempre qualcosa....

Se 500 programmatori scrivessero 10 desideri ciascuno, ci vorrebbe un ufficio come quello di Bill....

per far diventare le fantasie realtà....

Le fantasie non c'entrano assolutamente nulla. La mia domanda è sorta sulla possibilità di implementare il metodo di analisi più comune. Vale a dire, sta lavorando con la riga che rimane dopo la rimozione della tendenza e del ciclo. Questo metodo è scritto in tutti i libri di testo di statistica finanziaria e nel materiale didattico universitario senza eccezione. Questa non è una fantasia, ma uno degli approcci canonici dell'analisi. E un ambiente specializzato dovrebbe avere i mezzi per implementare questo approccio - cosa ne pensi?
Motivazione: