Programmazione asincrona e multithread in MQL - pagina 27

 
Roman:

Ho iniziato a rileggere l'argomento e Igor ne ha già scritto.

Questo è quello che stavo cercando di dire, Yuri, che dobbiamo allocare la memoria e registrare il thread.
Igor dice che è necessario allocare e registrare, mentre tu dici che non devi fare nulla.
Ecco perché mi gira la testa. Il risultato è uno stallo.

Igor ha studiato all'università come specialista, e dovrebbe capirne di più di noi autodidatti.
Fin dall'inizio ero incline alla stessa idea - che la memoria deve essere allocata e inizializzata.
L'inizializzazione e l'allocazione della memoria è la chiave per una corretta codifica, perché non deve scorrere e non deve essere spazzatura.

Quindi la mia domanda a Igor, spiega per favore come farlo in C++?
Non a parole, con un esempio, non ci capisco niente ))

Amico, non puoi fare il multithreading sui professionisti, senza offesa. Ma se sei dell'umore giusto, continua a leggere e cerca di capire:

https://en.cppreference.com/w/cpp/thread

https://en.cppreference.com/w/cpp/atomic

Se hai bisogno di un esempio, vedi sotto:

https://en.cppreference.com/w/cpp/thread/thread/join

https://en.cppreference.com/w/cpp/thread/async


Di nuovo, questo è un argomento complicato, facile da nagovonoko (ad esempio, sganciare da un thread spawnato che distrugge più tardi dei dati condivisi, ottimizzazione del compilatore se non c'è una sincronizzazione adeguata e molto altro).

 
Реter Konow:
Propongo di utilizzare l'indicatore come portatore di GUI, e le risorse - per la comunicazione con l'Expert Advisor. Inoltre, in MT4, sarete in grado di controllare il tester Expert Advisor da un grafico standard utilizzando il pannello. Tutti i controlli funzioneranno, non solo i pulsanti. Sarete in grado di inviare testi e qualsiasi altra cosa all'EA in prova. L'ho già testato. Tutto funziona.

Peter, tu non capisci.

C'è UN consigliere. Si esegue inoltre su un grafico invisibile, solo in modalità agente. Non ci sono eventi in esecuzione sull'agente. Cioè, la risorsa non può chiamarlo, il timer non parte, i tick non arrivano.

Se l'indicatore innesca un EA, si tratta di due entità.

L'Expert Advisor può creare tutti gli agenti che vuole. Ognuno di essi diventa un filo separato.

 
Andrey Barinov:

Peter, tu non capisci.

C'è UN consigliere. Si esegue inoltre su un grafico invisibile, solo in modalità agente. Non ci sono eventi in esecuzione sull'agente. Cioè, la risorsa non può chiamarlo, il timer non parte, i tick non arrivano.

Se un indicatore innesca un EA, si tratta di due entità.

L'Expert Advisor può creare tutti gli agenti che vuole. Ognuno di essi diventa un filo separato.

Vuoi dire come lanciarsi in modalità agente su un grafico invisibile? Questo è qualcosa di nuovo. Non ne sapevo nulla.
 
Реter Konow:
Intendi dire come l'esecuzione di se stesso in modalità agente su un grafico invisibile? Questo è qualcosa di nuovo. Non ne sapevo nulla.

ChartApplyTemplate

 
Andrey Barinov:

Peter, tu non capisci.

...

Un consulente può avere tutti gli agenti che vuole. Ognuno esce come un flusso separato.

Quindi il multithreading esiste già? E nessuno qui lo sa?

 
Andrey Barinov:

C'è UN consigliere. Funziona anche da solo.

Il tester KB ha lo stesso principio. Sei riuscito a risolvere il problema del debugging di un tale EA? Quando il tester era fatto su questo principio, l'inconveniente di scriverlo era nella difficoltà di debugging.

 
Реter Konow:

Poi si scopre che il multithreading esiste già? E nessuno qui lo sa?

Questo si chiama "non sentire il tuo interlocutore".

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Programmazione asincrona e multithread in MQL

fxsaber, 2019.07.25 12:16

All'interno del solo MQL, entrambi i compiti sono risolti attraverso l'esecuzione automatica di un conteggio EA.

 
Реter Konow:

Significa che il multithreading esiste già? E nessuno qui lo sa?

È un trucco ben noto. Non è stato inventato da me. È stato inventato da me su un forum diversi anni fa.

 
fxsaber:

Il tester CB ha lo stesso principio. Sei riuscito a risolvere il problema del debugging di un tale EA? Quando facevo il tester su questo principio, l'inconveniente di scriverlo era la difficoltà di debugging.

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

 
Andrey Barinov:

È un trucco ben noto. Non è stato inventato da me. L'ho preso da un forum qualche anno fa.

Quanto questo "multithreading" corrisponde alla sua nozione? È possibile dividere i compiti di un programma in thread utilizzando questa funzione?