Il compito è risolvibile in linea di principio in MQL4?

 

Il compito è: in un terminale, ci sono 9 coppie diverse, e 8 EAs che lavorano su ciascuna di esse, e ognuno è autorizzato a fare trading sulla nona coppia, il mio EA 'di gestione', che controlla quante coppie e rispettivamente copie di EAs di trading possono aprire ordini allo stesso tempo. Tutti gli Expert Advisors obbediscono a una variabile GLobal. Ho scritto un semplice ciclo che legge i "numeri magici" degli ordini già aperti e non permette di aprire nuovi ordini di altri EAs impostando il valore della variabile globale di controllo che vieta il trading.

Questo è il modo in cui dovrebbe essere "sotto lo scenario". Non è così che funziona veramente. Il problema è che finché il mio EA "di gestione" non ha il tempo di impostare il valore della variabile globale che vieta il trading, gli EA di lavoro hanno il tempo di aprire ordini su 6 coppie invece delle 2 consentite. L'algoritmo funziona correttamente, se prima avvio il gestore EA e poi lascio commerciare gli EA di trading, allora più di 2 EA (2 coppie) non si aprono (vietato dalla variabile globale impostata dal gestore EA).

È possibile impostare in MQL4 un sistema di priorità, in modo che prima venga eseguito il codice dell'EA e poi tutti gli altri EA?

Ho provato a fare il loop start(), forse ho fatto qualcosa di sbagliato ma il terminale si blocca ma non succede niente.

Aiuto per un professionista alle prime armi.

 
Zakyza:

È possibile impostare un sistema di priorità in MQL4, in modo che il codice EA venga eseguito per primo, e poi tutti gli altri EA?

Ho provato a mettere in loop start(), forse ho fatto qualcosa di sbagliato, ma non ho ottenuto nulla, il terminale si blocca.

Per un professionista principiante, ho bisogno di aiuto.

È possibile. Per esempio, aggiungendo una variabile in più per il terminale, che solo lui può gestire, e per gli altri diventerà un permesso di lavoro.

Capisco che ho suggerito ciò che avete già implementato. A quanto pare, non è fatto correttamente.

Se il consulente di gestione non ha avuto il tempo di cambiare la variabile terminale, gli schiavi non dovrebbero essere autorizzati a fare trading.

 
Guardate questa funzione. Questa è l'unica funzione in MQL4 che gestisce il livello del kernel (fornisce accesso atomico). Dovrebbe aiutare.
 
tara:
Possibile. Per esempio, aggiungendo un'altra variabile terminale che solo lui può controllare, e per gli altri diventerà il permesso di lavorare.


Non c'è tempo per il gestore EA di impostare il valore desiderato della variabile globale
 
Zakyza:

Il gestore EA non ha il tempo di impostare il giusto valore della variabile globale

Beh, non devi dare allo schiavo il diritto di respirare finché non si sveglia.
 
Zhunko:
Guardate questa funzione. Questa è l'unica funzione in MQL4 che gestisce il livello del kernel (fornisce accesso atomico). Dovrebbe aiutare.

Grazie, spero che sia d'aiuto, mi è sfuggito in qualche modo. "può essere usato per l'organizzazione del semaforo quando diversi Expert Advisors che lavorano simultaneamente interagiscono in un singolo terminale client" - dà speranza. Anche se, se GlobalVariableSetOnCondition è chiamato da start() del mio EA nell'ultimo turno, dopo che gli EA sono già entrati in affari, non vedo che differenza farà .
 
tara:

Beh, non devi dare allo schiavo il diritto di respirare finché non si sveglia.

Come si organizza questo? Permettere agli schiavi di commerciare manualmente non è un'opzione.
 
Se i consiglieri schiavi sono consiglieri rubati, allora siete venuti all'indirizzo sbagliato.
 
Perché rubato? L'autore stesso dell'EA l'ha messo a disposizione gratuitamente, io ho solo eseguito alcune copie e voglio organizzarle tramite variabili globali. Perché dici questo?
 
Ho detto: se.
 
tara:
Ho detto: se.

Ok. No, non rubato.