Senza conoscere il nome, e senza alcuna caratteristica distintiva, questo non può essere fatto. Potete, per esempio, ottenere i nomi di tutte le variabili uguali a 5 e stampare i loro nomi, trovati, stampati. O i nomi di tutte le variabili stringa. Ma in ogni caso è un'enumerazione variabile.
Sì, si tratta anche di selezionare una variabile per nome.
Per esempio, ci sono variabili a1, a2, a3, a4, a5, ecc. Dovete cercare anche tra queste variabili, scegliere quale ha "a" e 5, e usarla.
allora non c'è quasi nessun modo. I nomi delle variabili sono accessibili solo dal preprocessore (#macros).
Dobbiamo cambiare la logica interna, per esempio usare un array di hash di nomi al posto delle variabili. Allora sia la chiave che il valore sono disponibili contemporaneamente. O usare SQLite in caso di archiviazione a lungo termine. O combinarli :-)
Ma è così, senza la conoscenza dell'algoritmo, consigli invano.
Buon giorno a tutti, la mia domanda riguarda il tester MT4, il linguaggio mql4 Per favore, ditemi qual è il mio errore quando inizializzo un array. Ho creato un array unidimensionale con 750 elementi. Ho inizializzato tutti i 750 elementi con il valore 50.0.
Significa che nel primo tick e nei successivi, il primo elemento della matrice con indice 0 deve avere valore 50,0 e l'ultimo elemento della matrice con indice 749 deve avere valore 50,0.
Infatti si scopre che l'ultimo elemento dell'array ha valore 0. E il primo, come dovrebbe essere, è 50.0.
La domanda. Come fare in modo che tutti i valori dell'array (compreso l'ultimo) abbiano il valore 50.0 dopo l'inizializzazione
Ecco il mio codice
doppio S_L[750]={50.0};
void OnTick()
{
if (Day()==4&&Month()==1&&Year()==2010&&Hour()==0&&Minute()==0)
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
Grazie per il suggerimento. A proposito, volevo chiarire..... Nel tutorial di Kovalev si dice che l'array può essere inizializzato simultaneamente alla sua dichiarazione (come ho fatto io), senza alcuna funzione speciale. So che il tutorial di Kovalev è un po' datato. D. Ho capito bene che ora in mql4 gli array dovrebbero essere inizializzati solo usando una funzione?
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
Saluti. Potresti dirmi qualcosa, per favore?
È possibile ottenere il nome di una variabile invece del suo valore? Per esempio, stampare il nome di una variabile.
#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
{
long anyvar=(long)TimeLocal();
PRINTVAR(anyvar);
}
risultato:
2020.08.24 14:46:05.394 test (USDCHF,H1) anyvar
2020.08.24 14:46:05.394 test (USDCHF,H1) 1598280365
Forse una caratteristica da inedito :-) simile a "C", ma non ancora utilizzabile
Dovete ottenere il nome della variabile stessa.
Senza conoscere il nome, e senza alcuna caratteristica distintiva, questo non può essere fatto. Potete, per esempio, ottenere i nomi di tutte le variabili uguali a 5 e stampare i loro nomi, trovati, stampati. O i nomi di tutte le variabili stringa. Ma in ogni caso è un'enumerazione variabile.
Maxim Kuznetsov Grazie
Sì, si tratta anche di selezionare una variabile per nome.
Per esempio, ci sono variabili a1, a2, a3, a4, a5, ecc. Dovete cercare anche tra queste variabili, scegliere quale ha "a" e 5, e usarla.
allora non c'è quasi nessun modo. I nomi delle variabili sono accessibili solo dal preprocessore (#macros).
Dobbiamo cambiare la logica interna, per esempio usare un array di hash di nomi al posto delle variabili. Allora sia la chiave che il valore sono disponibili contemporaneamente. O usare SQLite in caso di archiviazione a lungo termine. O combinarli :-)
Ma è così, senza la conoscenza dell'algoritmo, consigli invano.
Sì, si tratta anche di selezionare una variabile per nome.
Per esempio, ci sono variabili a1, a2, a3, a4, a5, ecc. Dobbiamo enumerare anche queste variabili, scegliere quale ha "a" e 5, e usarla.
Scrivi i nomi in una matrice e passa attraverso la matrice.
Buon giorno a tutti, la mia domanda riguarda il tester MT4, il linguaggio mql4
Per favore, ditemi qual è il mio errore quando inizializzo un array. Ho creato un array unidimensionale con 750 elementi. Ho inizializzato tutti i 750 elementi con il valore 50.0.
Significa che nel primo tick e nei successivi, il primo elemento della matrice con indice 0 deve avere valore 50,0 e l'ultimo elemento della matrice con indice 749 deve avere valore 50,0.
Infatti si scopre che l'ultimo elemento dell'array ha valore 0. E il primo, come dovrebbe essere, è 50.0.
La domanda. Come fare in modo che tutti i valori dell'array (compreso l'ultimo) abbiano il valore 50.0 dopo l'inizializzazione
Ecco il mio codice
Print("=========================749======= ",S_L[749]," =0= ",S_L[0]);
}
In fondo al valore di Print() del diario
2020.08.24 17:43:55.427 GBPUSD,M1: 52255 eventi tick (1440 barre, 53256 stati delle barre) processati in 0:00:00.047 (tempo totale 0:00:02.422)
2020.08.24 17:43:55.407 2010.01.04 00:00:53 TESTER(B.ORG) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:52 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:50 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:47 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:45 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:43 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:41 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:40 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:37 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:35 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:32 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:30 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:28 TESTER(B.ORDERS) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:26 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:25 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:22 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:20 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:17 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:15 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:13 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:11 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:10 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:07 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00:05 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:02 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.407 2010.01.04 00:00 TESTER(B.ORD) GBPUSD,M1: =========================749======= 0 = 0= 50
2020.08.24 17:43:55.385 2010.01.01 00:00:00 Tester(B.ORD.) test avviato
Grazie per l'aiuto
Ecco il mio.
Dove?))
Dove?)))
In cima al mio post modificato. Grazie per la risposta.
ANDREY:
Domanda. Come posso fare in modo che tutti i valori del mio array (compreso l'ultimo) abbiano un valore di 50.0 dopo l'inizializzazione?
Grazie per il suggerimento. A proposito, volevo chiarire..... Nel tutorial di Kovalev si dice che l'array può essere inizializzato simultaneamente alla sua dichiarazione (come ho fatto io), senza alcuna funzione speciale. So che il tutorial di Kovalev è un po' datato. D. Ho capito bene che ora in mql4 gli array dovrebbero essere inizializzati solo usando una funzione?
Grazie.