Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1030

 
abeiks:

Salve.

Attualmente sto cercando di capire le variabili globali. Ora c'è un problema e non riesco a risolverlo. Se elimino una variabile globale dall'indicatore, l'Expert Advisor continua a prendere quella variabile. Come si risolve questo problema?

come si fa a cancellarlo?

 
valenok2003:

Potete dirmi qual è l'errore in questa linea? prima compilato senza messaggi di errore, ora - '{' - espressione attesa

Grazie in anticipo

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};


Conta le virgole.
 
AlexeyVik:

Conta le virgole.
Le virgole sono corrette, è la notazione che non importa quanti elementi contenga l'array, saranno tutti riempiti di zeri.
 
abeiks:

Salve.

Attualmente sto cercando di capire le variabili globali. Ora c'è un problema e non riesco a risolverlo. Se elimino una variabile globale dall'indicatore, l'Expert Advisor continua a prendere quella variabile. Come posso risolvere questo problema?

Premete F3 nel terminale e cancellate manualmente questa variabile. Viene creato una volta e si trova in ambiente - l'Expert Advisor lo legge da lì. O forse non ho capito bene? Hai appena cancellato la creazione di una variabile globale del terminale nel codice dell'indicatore stesso, ma era già creata da questo indicatore?
 
artmedia70:
Premete F3 nel terminale e cancellate manualmente questa variabile. Viene creato una volta e si trova nell'ambiente - è da lì che l'EA lo legge.
Grazie! Non lo sapevo.
Come posso controllare e cancellare questo nell'Expert Advisor stesso? Per esempio, se chiudo l'indicatore per errore, l'EA riceverà sempre quell'ultima variabile e se c'è un segnale per aprire posizioni...
 
valenok2003:

come si fa a cancellare?


L'ho fatto, ma non è giusto:

 if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 
 
valenok2003:
Le virgole sono corrette, è la notazione che non importa quanti elementi contiene un array, sarà tutto riempito di zeri.
Beh, non so, forse in C++, che non ho mai studiato, ma mql è solo C-like. E in secondo luogo, non puoi impostare la dimensione dell'array su una variabile, anche se nel tuo esempio MAX_NUM_ORDER potrebbe non essere una variabile...
 
valenok2003:

Potete dirmi qual è l'errore in questa linea? prima compilato senza messaggi di errore, ora - '{' - espressione attesa

Grazie in anticipo

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Una riga e una colonna dell'array sono selezionate, rispettivamente, possiamo scriverci un valore particolare, cioè la voce dovrebbe essere la stessa di una variabile ordinaria, ma per azzerare tutti i valori

ArrayInitialize(Arr_Tickets, 0);

 
abeiks:

L'ho fatto, ma non è giusto:

if (!GlobalVariableCheck("Test_1"))
GlobalVariableDel("Test_1"); 

Cosa c'è scritto?

Se non c'è una variabile globale chiamata Test_1, cancellala...

 
abeiks:
Grazie! Non lo sapevo.
E come fare un tale controllo e cancellarlo nell'Expert Advisor stesso? Per esempio, se chiudo accidentalmente l'indicatore, l'Expert Advisor riceverà sempre quest'ultima variabile e se c'è un segnale di apertura delle posizioni...
Se la cancellazione involontaria dell'indicatore dovesse cancellare le variabili globali create da questo indicatore, la cancellazione di queste variabili globali dovrebbe essere prescritta nella funzione OnDeinit() dell'indicatore.
Allo stesso tempo, bisogna verificare che non si tratta di un cambio di timeframe, ma della cancellazione dell'indicatore dal grafico.
Motivazione: