![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Tutto viene convertito correttamente senza errori
Nella sezione"MQL5 Reference / Language Basics / Data Types / Type conversion" sono menzionate due cose:
1) la conversione long=>double può portare alla perdita di precisione;
2) il tipo datetime è permesso al posto del tipo long (prendono 8 byte ciascuno).
Sono giunto alla conclusione che, idealmente, la conversione datetime =>double può anche portare alla perdita di precisione. Ma non posso fare un esempio.
Perché non memorizzare datetime in buffer indic......or di tipo double
Si aggiungono molti punti, o appare un qualche tipo di riferimento.
È più semplice mettere uno spazio in più tra le due parole: "buffer di indicatori" (due spazi).
Nella sezione"MQL5 Reference Guide / Language Basics / Data Types / Type conversion " vengono menzionate due cose:
1) la conversione long=>double può portare alla perdita di precisione;
2) il tipo datetime è permesso invece del tipo long (prendono 8 byte ciascuno).
Sono giunto alla conclusione che, idealmente, la conversione datetime =>double può anche portare alla perdita di precisione. Ma non posso fare un esempio.
È più facile mettere uno spazio extra tra due parole: "buffer di indicatori" (due spazi).
Scrivete un semplice test di conversione e lo vedrete voi stessi. E puoi dirlo al resto di noi più tardi.
Scrivete un semplice test di trasformazione e lo vedrete da soli. E puoi dirlo a tutti gli altri dopo.
Ha una risposta concreta?
Un "semplice test di conversione" è già stato dato da rlx. Sembra funzionare correttamente. I dubbi basati sul materiale di riferimento sono descritti sopra. Se c'è un esempio di conversione errata datetime =>double, chiedete pure.
C'è una risposta sostanziale?
Un "semplice test di conversione" è già stato datoda rlx. Sembra funzionare correttamente. I dubbi basati sul materiale di riferimento sono riportati sopra. Se c'è un esempio di conversione errata datetime =>double, inviatemelo per favore.
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
Questo è un esempio di quando potrebbero verificarsi dei problemi, ma non è sicuramente il tuo caso
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
Questo è un esempio di quando potrebbero verificarsi dei problemi, ma non è sicuramente il tuo caso
2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018
Questo è un esempio in cui potrebbe esserci un problema, ma non è sicuramente il tuo caso
Questo non è un esempio molto corretto, come il pazzo dice cazzo di vetro per 20 minuti (questo non riguarda te ma quelli che lo useranno)
Il valore attuale di datetime è 1316816136 quelle 10 cifre, cioè 40 anni, mantissa doppia ha 16 cifre,
quindi l'overflow del double di mantis e la successiva conversione errata da datetime a double avverrà in 6*40=240 anni.
Penso che avremo il tempo di usarlo.
Terme! Si vive e si impara a lungo!
Ora ho messo insieme un esempio solo per voi. L'output è il seguente:
il tipo datetime è definito fino al 31.12.3000 23:59:59, è32535215999
il tipo doppio è definito fino a1,7976931348623158e+308
Si scopre che quando si converte il massimo valore possibile di datetime in double, c'è ancora un margine ammissibile nel numero di cifre significative.
Quindi, la conclusione è che funzionerà correttamente in tutti i casi.
Questo non è un esempio molto corretto, visto che si dice a un pazzo con un cazzo di vetro per 20 minuti.
Non è una buona analogia.
È solo un esempio della necessità di controllare i valori limite dei valori quando si danno i tipi, solo come nota a margine. Ma di nuovo, non è questo il caso.
I calcoli precedenti non li ho fatti correttamente, più precisamente qui: si usano 15 cifre, perché se la 16esima è presente, c'è un errore di conversione
fino a 31711762 anno datetime a doppio è convertito correttamente
Quindi dormiamo bene fino al 31 milionesimo anno.
Chiamare funzioni importate dalla libreria ex5.
Per favore, spiega. Leggi https://www.mql5.com/ru/docs/runtime/imports
Come vengono caricate le librerie ex5?Se la libreria è già caricata (ad esempio da un altro Expert Advisor, e anche da un altro terminale client, che gira in parallelo),
Per il test, ho creato la libreria
lib.mq5.
Compilato lib.mq5 in lib.ex5
Creata Expert Advisor
esperto.mq5
Compilato.
Ho messo l'Expert Advisor su EURUSD.
Stampa
0
1
2
3
4
5
Mettere un Expert Advisor (opzionale) su GBPUSD
Stampe
6 --- da EURUSD Expert Advisor
0 --- da GBPUSD Expert Advisor.
7 --- da EURUSD Expert Advisor
1 --- dal consulente GBPUSD.
8 --- dal consulente EURUSD
2 --- dal consulente GBPUSD.
Cioè un'altra copia della libreria lib.ex5 viene scaricata per GBPUSD Expert Advisor.
Qualcuno sa come stampare
6 --- da EURUSD Expert Advisor
7 --- da GBPUSD Expert Advisor.
8 --- da EURUSD Expert Advisor.
9 --- dal consulente GBPUSD.
10 --- Consulente EURUSD
11 --- dal consulente GBPUSD.
Utilizzando solo le capacità di MT5
PS// O forse devo collegare la biblioteca in un modo speciale.
///// Cioè ho bisogno che questa libreria ex5 sia caricata una volta.
Salve. Potresti dirmi per favore. Perché gli ordini e le compravendite hanno un biglietto ma le posizioni no?
E qual è la differenza tra un biglietto e un identificatore?