Programmazione asincrona e multithread in MQL - pagina 28

 
Andrey Barinov:

Stampa, ASSERT, DEBUG. Non uso il debugger interno in questo caso...

Sì, è un inconveniente. Quasi come nel vecchio MQL4.

 
Реter Konow:
E quanto questo "multithreading" corrisponde alla sua nozione? È possibile dividere i compiti del programma in thread utilizzando questa funzione?

Per certi compiti 100%. Per esempio, hai bisogno di gestire le transazioni - Trawl o qualcos'altro.

Questo compito può essere eseguito su un agente su ogni tick per tutto il tempo che volete e la GUI continuerà a funzionare.

 
Andrey Barinov:

Con questo schema, le protezioni sono fatte

  • Contro qualcuno che chiude OBJ_CHART. Per esempio, lo script "intelligente" di qualcuno.
  • Il meccanismo dell'evement friend-or-foe non è solo da ID.
Scambio di dati tramite file - nessun problema fisico con il disco? Mi sembra che tutti i copiatori del mercato stiano facendo qualcosa di terribile a causa di questa sincronizzazione.


Quale bandiera usate per identificare la modalità slave/master EA? Se uso OBJ_CHART allora è uno slave. E in MT4? Il mio input era datetime, quindi ho risolto facilmente usando un datetime negativo. Ma non l'ho provato senza input.

 
Andrey Barinov:

Per certi compiti 100%. Per esempio, hai bisogno di gestire le transazioni - Trawl o qualcos'altro.

Questo compito può essere eseguito su un agente su ogni tick per tutto il tempo che volete e la GUI continuerà a funzionare.

È ancora una foresta oscura. La funzione salva il modello del grafico e poi, posso aprire un nuovo grafico dall'EA e applicare il modello salvato ad esso, e così facendo, una copia dell'EA verrà eseguita su quel grafico?
 
fxsaber:

Con questo schema, le protezioni sono fatte

  • Contro qualcuno che chiude OBJ_CHART. Per esempio, lo script "intelligente" di qualcuno.
  • Il meccanismo dell'evement friend-or-foe non è solo da ID.
Scambio di dati tramite file - nessun problema fisico con il disco? Mi sembra che tutti i copiatori del mercato stiano facendo qualcosa di terribile a causa di questa sincronizzazione.

Sì, la protezione è necessaria, come sempre.

I file dovrebbero essere usati saggiamente. Solo quando è necessario. Solo i momenti di cambiamenti significativi di ambiente / stato che l'agente stesso non può riconoscere sono sincronizzati.

I copiatori di solito lavorano su un VPS, quindi non è davvero un grosso problema.

 
Andrey Barinov:

Gli imitatori di solito lavorano su un VPS, quindi non è troppo spaventoso.

Povero VPS... sopra ha completato la domanda.

 
Реter Konow:
Ancora una foresta oscura. La funzione crea una copia salvata del grafico e poi, posso aprire un nuovo grafico dall'EA ed eseguire il modello salvato su di esso, e così facendo, la copia dell'EA verrà eseguita su quel grafico?

1. L'utente posiziona l'EA su un grafico vuoto.

2. L'EA crea un modello (con se stesso sul grafico)

3. L'Expert Advisor crea un nuovo grafico (OBJ_CHART o un grafico normale nel caso di MT4)

4. L'Expert Advisor applica il modello al nuovo grafico.

5. Una copia dell'EA parte sul nuovo grafico, ora dovrebbe capire che questo è l'agente, non l'EA principale :)

6. Cominciano a comunicare.

Vivono felici e contenti e muoiono lo stesso giorno :)

 
fxsaber:

Povero VPS... sopra ha completato la domanda.

Non si può fare una copia senza file (per il mercato). E i file di sincronizzazione dell'ambiente commerciale tra i terminali richiedono molte più operazioni della sincronizzazione tra agenti.


L'agente in MT4 è determinato dalla presenza di opportune variabili globali che sono impostate dall'EA principale prima di applicare un modello a un nuovo grafico.

 
fxsaber:

Povero VPS... sopra ha completato la domanda.

Bisogna tener conto che il sistema operativo non assale le scritture su disco, sa come fare la cache. Non ricordo dove, ma c'è anche un'impostazione da qualche parte nel vento.

 
Andrey Barinov:

1. L'utente piazza l'EA su un grafico vuoto.

2. L'EA crea un modello (con se stesso sul grafico)

3. L'Expert Advisor crea un nuovo grafico (OBJ_CHART o un grafico normale nel caso di MT4)

4. L'Expert Advisor applica il modello al nuovo grafico.

5. Una copia dell'EA parte sul nuovo grafico, ora dovrebbe capire che questo è l'agente, non l'EA principale :)

6. Cominciano a comunicare.

Vivono felici e contenti e muoiono lo stesso giorno :)

Fantastico!)) Grazie!

Sì, è quello con il multithreading. È necessario eseguire per ogni compito pesante una copia dell'EA su un grafico separato tramite un modello e dire a quella copia di eseguire solo la funzione che si desidera eseguire. Le altre funzioni della copia possono riposare.

La comunicazione tramite risorse con copie su grafici regolari (non OBJ_CHART) funzionerà? O ci sono delle restrizioni?