Non capisco, sono l'unico che non può testare le demo degli indicatori nella build 555, o questo non è affatto un problema importante per il debutto sul mercato?
Candid: Non capisco, sono l'unico che non può testare le demo degli indicatori nella build 555, o questo non è affatto un problema importante per il debutto sul mercato?
ArrayCopyRates() также изменила свое поведение, раньше она производила виртуальное копирование в массив double[][6], теперь же производится виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное.
Anche ArrayCopyRates() ha cambiato il suo comportamento: prima copiava virtualmente nell'array double[][6], ora copia virtualmente nell'array MqlRates[]. Ora viene eseguita la copia nell'array double[][6], ma non è virtuale; è reale.
Ho un numero significativo di Expert Advisors che usano DLL e sono stati passati ai clienti molto tempo fa. Abbiamo usato gli array double[][6] per passare i parametri alla DLL , che sono stati virtualmente copiati da ArrayCopyRates() durante l'inizializzazione .E poi questi array e la loro dimensione attuale sono stati passati per riferimento come parametri quando si chiamano funzioni dalla DLL.
Si scopre che tutti questi EAs smettono di funzionare quando il terminale viene aggiornato a una nuova versione. Questo è un peccato.
Ho capito bene che per farli funzionare senza cambiare il codice della DLL, dovremmo chiamare ArrayCopyRates() prima di ogni chiamata di una funzione dalla DLL?
Ho un numero significativo di EA che utilizzano DLL, che sono state consegnate ai clienti molto tempo fa. Per passare i parametri alla DLL abbiamo usato gli array double[][6], ai quali durante l'inizializzazione la funzione ArrayCopyRates() ha fatto una copia virtuale delle serie temporali. E poi, quando si chiamano le funzioni dalla DLL, questi array e la loro dimensione attuale vengono passati per riferimento come parametri.
Si scopre che tutti questi EAs smettono di funzionare quando il terminale viene aggiornato a una nuova versione. Questo è un peccato.
Ho capito bene che per farli funzionare senza cambiare il codice della DLL, dovremmo chiamare ArrayCopyRates() prima di ogni chiamata di una funzione della DLL?
È un po' più complicato di così. Anche la struttura che assume il dll è cambiata.
Quindi, è necessario riscrivere ArrayCopyRates nell'array della struttura MqlRates. Anche nella tua dll devi sostituire la descrizione della struttura corrispondente
Colleghi, un messaggio di avvertimento appare sulla compilazione:
possibile uso di una variabile non inizializzata 'PipStep'.
per un pezzo come questo:
Tutte le variabili sono inizializzate come doppie, cosa c'è di sbagliato?
avete dichiarato variabili di tipo doppio, l'inizializzazione è l'assegnazione di valori alle variabili dichiarate
doppio PipStep=0 ; fare
Non capisco, sono l'unico che non può testare le demo degli indicatori nella build 555, o questo non è affatto un problema importante per il debutto sul mercato?
sono testati in 5?
ArrayCopyRates() также изменила свое поведение, раньше она производила виртуальное копирование в массив double[][6], теперь же производится виртуальное копирование в массив MqlRates[]. Для совместимости осталось копирование в массив double[][6], но это копирование не виртуальное, а реальное.
https://www.mql5.com/ru/forum/148325
Struttura per la memorizzazione di informazioni su prezzo, volume e spread.
https://www.mql5.com/ru/docs/constants/structures/mqlrates
MqlRates in MetaTrader 4 è un array o una struttura?
Questo esempio dalla guida (MetaTrader 4 build 555) non funziona perché non esiste una funzione CopyRates
Fanno il test in 5?
C'è anche chi non fa il test in 5?
si dichiarano variabili di tipo doppio, l'inizializzazione è l'assegnazione di valori alle variabili dichiarate
double PipStep=0 ; do
Ha funzionato!!!
Vivi e impara!
Grazie mille!
MqlRates in MetaTrader 4 è un array o una struttura?
Questo esempio dalla guida (MetaTrader 4 build 555) non funziona perché non esiste una funzione CopyRates
Anche questo non funziona, possiamo vedere un esempio funzionante in MetaTrader 4 build 555 con MqlRates?MqlRates - struttura
MqlRates[] - array di strutture
Per vedere un esempio di lavoro con la struttura MqlRates vedere lo script period_converter_new
Un esempio di operazione ArrayCopyRates (la documentazione sarà aggiornata)
Modifiche in MQL4
Ho un numero significativo di Expert Advisors che usano DLL e sono stati passati ai clienti molto tempo fa. Abbiamo usato gli array double[][6] per passare i parametri alla DLL , che sono stati virtualmente copiati da ArrayCopyRates() durante l'inizializzazione .E poi questi array e la loro dimensione attuale sono stati passati per riferimento come parametri quando si chiamano funzioni dalla DLL.
Si scopre che tutti questi EAs smettono di funzionare quando il terminale viene aggiornato a una nuova versione. Questo è un peccato.
Ho capito bene che per farli funzionare senza cambiare il codice della DLL, dovremmo chiamare ArrayCopyRates() prima di ogni chiamata di una funzione dalla DLL?
Ho un numero significativo di EA che utilizzano DLL, che sono state consegnate ai clienti molto tempo fa. Per passare i parametri alla DLL abbiamo usato gli array double[][6], ai quali durante l'inizializzazione la funzione ArrayCopyRates() ha fatto una copia virtuale delle serie temporali. E poi, quando si chiamano le funzioni dalla DLL, questi array e la loro dimensione attuale vengono passati per riferimento come parametri.
Si scopre che tutti questi EAs smettono di funzionare quando il terminale viene aggiornato a una nuova versione. Questo è un peccato.
Ho capito bene che per farli funzionare senza cambiare il codice della DLL, dovremmo chiamare ArrayCopyRates() prima di ogni chiamata di una funzione della DLL?
È un po' più complicato di così. Anche la struttura che assume il dll è cambiata.
Quindi, è necessario riscrivere ArrayCopyRates nell'array della struttura MqlRates. Anche nella tua dll devi sostituire la descrizione della struttura corrispondente