Errori, bug, domande - pagina 1168
![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
Ta maaa...
Devi mettere un doppio dal lungo prima del trasferimento. Per la variabile globale. Non è zero, è solo un doppio casuale, può essere 1,34*e-307 o 4,29*e+120, perché ha bit log.
Dopo aver trasferito unzip da dub a long.
Questo è tutto.
OK, hai capito ;)
OK, hai capito ;)
Non capisco cosa non sia chiaro.
Double tronca i dati, quindi non potete trasferire direttamente long to double. Ma entrambi sono 8 byte ciascuno, quindi puoi trasferire senza perdite semplicemente usando il doppio come contenitore, che è quello che ho fatto nell'esempio.
Non capisco cosa non sia chiaro.
Double tronca i dati, quindi non potete trasferire direttamente long to double. Ma entrambi sono 8 byte ciascuno, quindi puoi trasferire senza perdite semplicemente usando il doppio come contenitore, che è quello che ho fatto nell'esempio.
Andrey, non ho capito il formato di memorizzazione e visualizzazione nel GV del terminale. Sembrava mostrare l'ID del grafico, ma mostra 0.
GV mostrerà qualcosa che assomiglia alla spazzatura in apparenza, questa "spazzatura" si trasformerà in ID grafico dopo la conversione inversa.
Il duble ha il suo proprio formato di dati, quando infiliamo il lungo, mettiamo il formato duble e lo usiamo solo come 8 byte di memoria.
GV mostrerà qualcosa che assomiglia alla spazzatura in apparenza, questa "spazzatura" si trasformerà in ID grafico dopo la conversione inversa.
Il duble ha il suo proprio formato di dati, quando infiliamo il duble mettiamo il formato duble e lo usiamo semplicemente come 8 byte di memoria.
Più che altro una domanda:
Cercare un GV esistente del terminale per nome. Attraverso di esso l'ID del grafico su cui sta girando l'EA viene passato all'indicatore. L'indicatore pende da un altro simbolo. Cioè, voglio passare all'indicatore l'ID del grafico su cui sta girando l'Expert Advisor. Lo sto cercando così:
Questo è ciò che dice il terminale:
Ho provato a leggere la variabile. L'ho messo direttamente nella stringa e l'ho messo nel diario, così come in variabili di diversi tipi - tutto uguale. Ci sono due differenze.
Cosa c'è di sbagliato in questo?
Leggete qui https://www.mql5.com/ru/docs/basis/types/casting paragrafo "Conversione di dati di strutture semplici".
Esattamente il tuo caso. I doppietti hanno una precisione molto inferiore in _numero_ di caratteri rispetto ai lunghi. Ecco perché si ottiene questo risultato con una semplice assegnazione.
Ma si possono usare pienamente 64 bit di una variabile globale per memorizzare _qualsiasi_ informazione lunga 64 bit (come stringhe corte lunghe 8 byte. Per non parlare dei lunghi)
L'Expert Advisor è su M2, i dati dell'indicatore sono presi da M3.
1) C'è un riavvio del terminale alle 14:40:
MD 0 14:40:06.009 Terminal MetaTrader 5 Alfa-Forex x64 build 930 avviato
II 0 14:40:06.586 Terminal OpenCL non trovato, installare l'ultimo driver OpenCL per prestazioni migliori
JO 0 14:40:07.257 Esperti esperto FX_Money_Flow_v1_06 (EURUSD,M2) caricato con successo
RO 0 19:55:28.399 Terminal MetaTrader 5 Alfa-Forex x64 build 930 avviato
OP 0 19:55:28.992 Terminal OpenCL non trovato, installare l'ultimo driver OpenCL per prestazioni migliori
RD 0 19:55:29.507 experts expert FX_Money_Flow_v1_07 (EURUSD,M2) caricato con successo
Ma non funziona sempre correttamente:
KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Valore del fattore TF1 indicatore: -1.#QNAN -1.#QNAN
Il grafico M3 è aperto in questo momento e c'è un indicatore su di esso che mostra tutto correttamente:
(la differenza di tempo tra il terminale e i log è di 5 ore, lo screenshot si riferisce al secondo riavvio)
Leggete qui https://www.mql5.com/ru/docs/basis/types/casting paragrafo "Conversione di dati di tipi di strutture semplici".
Questo è esattamente il tuo caso. I doppietti hanno una precisione molto inferiore in _numero_ di caratteri rispetto ai lunghi. Ecco perché si ottiene questo risultato con una semplice assegnazione.
Ma potete usare pienamente i 64 bit della variabile globale per memorizzare _qualsiasi_ informazione lunga 64 bit (come stringhe corte lunghe 8 byte. Per non parlare dei lunghi)