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

 
artmedia70:
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.
Bisogna controllare che non si tratti di un cambio di timeframe, ma della cancellazione dell'indicatore dal grafico.
Grazie!
 
artmedia70:
Premete F3 nel terminale e cancellate manualmente questa variabile. Viene creato una volta e si trova in ambiente - l'EA 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 è stata creata da questo indicatore prima?

Artem, per favore aiutami a capire cosa c'è che non va. Qui https://www.mql5.com/ru/code/10237 è il codice dell'Expert Advisor che notifica (o piuttosto usato per notificare) tutti gli eventi di trading nel terminale. Questo codice ha funzionato correttamente. Sono stato assente dal sito per molto tempo. Sono avvenuti alcuni cambiamenti in mql4 e ora questo codice si compila con un errore, quando si compilano le linee di inizializzazione dell'array. Se trovate il tempo, per favore dategli un'occhiata.

Saluti.

ps se qualcun altro può guardare qual è il problema, lo apprezzerei.

 
AlexeyVik:
Beh, non so, forse in C++, che non ho mai studiato, ma mql è solo C-like. E in secondo luogo la dimensione dell'array non può essere impostata su una variabile, anche se nel tuo esempio MAX_NUM_ORDER potrebbe non essere una variabile...
vedere qui l'inizializzazione dell'array https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer:

Si selezionano rispettivamente una riga e una colonna dell'array, vi si può inserire un valore particolare, cioè l'inserimento dovrebbe essere come per una variabile ordinaria, e per azzerare tutti i valori

ArrayInitialize(Arr_Tickets, 0);



il riferimento dell'elemento sarà così -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Ce l'ho qui -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

 
valenok2003:
vedere qui l'inizializzazione dell'array https://book.mql4.com/ru/variables/arrays
Sì, credo che l'array sia dichiarato globalmente, quindi mi sto facendo furbo...
 
valenok2003:

il riferimento dell'elemento sarà così -Arr_Tickets[MAX_NUM_ORDER,2] =0;

Ho scritto -Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Arr_Tickets[MAX_NUM_ORDER,2] - riferimento a un elemento dell'array

Arr_Tickets[MAX_NUM_ORDER][2] - riferimento all'elemento dell'array

Il compilatore non giura in qualunque modo lo si scriva e aspetta un valore particolare, non qualcos'altro. L'ho controllato appositamente.
E una conferma della stessa cosa dal link che hai dato a un altro membro del forum: il modo di specificare gli indici, quando ciascuno degli indici è racchiuso tra parentesi quadre, è anche accettabile

 
SunnYtheDreamer:

Arr_Tickets[MAX_NUM_ORDER,2] - riferimento a un elemento dell'array

Arr_Tickets[MAX_NUM_ORDER][2] - riferimento a un elemento dell'array

Il compilatore non giura in qualunque modo lo si scriva e aspetta un valore particolare, non qualcos'altro. Ho controllato appositamente.
E una conferma della stessa cosa dal link che hai dato a un altro membro del forum: il modo di specificare gli indici, quando ognuno degli indici è racchiuso tra parentesi quadre, è anche accettabile

Riformulo la domanda, - Prima compilava e funzionava bene, qualcuno può spiegare cosa lo sta causando? I codici che non funzionavano non erano ammessi nel kodobase...

A proposito, l'errore si presenta nelle linee 53 e 54 del codice. Nella linea 54 cosa c'è di sbagliato? E poi come iniziare un array di stringhe?

Ho cercato nel libro di testo, ma non ho trovato nulla sugli array di stringhe, ci sono informazioni solo sugli array numerici. Forse non ho cercato troppo bene? Vi prego di fornirmi il link.

 
valenok2003:

Artem, per favore aiutami a capire cosa c'è che non va. Qui https://www.mql5.com/ru/code/10237 è il codice dell'Expert Advisor, che notifica (o piuttosto è usato per notificare) tutti gli eventi di trading nel terminale. Questo codice ha funzionato correttamente. Sono stato assente dal sito per molto tempo. Sono avvenuti alcuni cambiamenti in mql4 e ora questo codice si compila con un errore, quando si compilano le linee di inizializzazione dell'array. Se trovate il tempo, per favore dategli un'occhiata.

Saluti.

ps se qualcun altro guarda qual è il problema, gliene sarei grato.

Prima di tutto inserire #property strict all'inizio del codice e compilare.

Era così:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"

farlo:

#property copyright "Copyright © valenok2003@mail.ru"
#property link      "http://bluedream.ucoz.ru"
#property strict

Dopodiché bisogna guardare già gli errori che dà.

 
artmedia70:

Per prima cosa, inserite #property strict all'inizio del codice e compilate.

era così:

farlo:

Dopo di che bisogna guardare gli errori che dà.

Inserito, non è cambiato nulla.

Supponiamo che io possa sostituire la linea Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; posso anche sostituirla conArrayInitialize(Arr_Tickets,0);

Cosa fare con la stringa Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Quando cerco di inizializzare un array di stringhe tramiteArrayInitialize(Arr_Order_Symbol,""), dice "my you don't understand...", non c'è un oggetto adatto per essere processato da questa funzione...

 
valenok2003:

Inserito, non è cambiato nulla.

Supponiamo che io possa sostituire la linea Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0}; posso ancora sostituirla conArrayInitialize(Arr_Tickets,0);

Cosa fare con la stringa Arr_Order_Symbol[MAX_NUM_SYMBOL] = {",",};? Quando cerco di inizializzare un array di stringhe tramiteArrayInitialize(Arr_Order_Symbol,""), dice "my you don't understand...", non c'è un oggetto adatto per essere processato da questa funzione...

Bene, azzerate questo array: ZeroMemory()
Motivazione: