Programmazione asincrona e multithread in MQL - pagina 32

 
Реter Konow:

E come si fa a recuperare i risultati dei calcoli?

In linea di principio, potrebbe scriverli in una risorsa, giusto?

E se avete bisogno di passare un array di dati per i calcoli? Dagli un comando attraverso OnChartEvent(), accederà alla risorsa, leggerà i dati, eseguirà il calcolo e poi scriverà il risultato nella risorsa?

Ma, comunque, il comando può essere dato solo attraverso EventChartCustom()?

E se lo mettiamo in loop dopo la prima chiamata, in modo che chiami costantemente e legga la risorsa ed esegua comandi da essa?

Scusate per il gran numero di domande. ))

Ti aspetta un interessante periodo di sperimentazione!

Delego tutta la logica di trading. Non sono obbligato a riportare i risultati, possono essere consultati da qualsiasi punto del terminale.

 
Andrey Barinov:

Ti aspetta un interessante periodo di sperimentazione!

Delego tutta la logica di trading. I suoi risultati non hanno bisogno di essere comunicati da nessuna parte in particolare, sono già disponibili da qualsiasi punto del terminale.

Grazie per tutto il vostro aiuto. Ho imparato molte cose nuove. Farò degli esperimenti e posterò i risultati in questo thread. Ma non sarà veloce, perché ho ancora molti compiti da risolvere prima.

Sto pensando in questo modo. Se quando OBJ_CHART viene avviato è messo in loop per leggere la risorsa, allora si può comunicare con esso ulteriormente attraverso di esso, e farà tutti i compiti che gli sono stati passati che l'originale che lo ha avviato può fare.


Aggiunto: la documentazione dice che il modello non può essere inserito nell'EA come risorsa. Quindi c'è un problema di portabilità. Ma l'EA può creare un modello di se stesso quando necessario e, inoltre, caricarlo e forzare la sua copia ad eseguire solo le funzioni richieste, comunicando con esso tramite risorse dopo che è stato messo in loop. Mi chiedo se questa opzione non fallisca in nessun punto, il problema del multithreading può essere chiuso.

 
Реter Konow:

Aggiunto: la documentazione dice che il modello non può essere inserito nell'EA come risorsa. Quindi c'è un problema di portabilità. Ma l'EA può creare un modello di se stesso quando necessario e, inoltre, caricarlo e forzare la sua copia ad eseguire solo le funzioni richieste, comunicando con esso tramite risorse dopo che è stato messo in loop. È interessante notare che se questa opzione non fallisce in nessun punto, il problema del multithreading può essere chiuso.

Il modello non ha bisogno di essere migrato da nessuna parte. Deve essere creato una volta all'inizio dell'EA principale (finché non si creano agenti)

 
Andrey Barinov:

Il modello non deve essere spostato da nessuna parte. Deve essere creato una volta quando si avvia l'EA principale (mentre non vengono creati agenti)

Intendevo la portabilità dei programmi che usano i modelli. È possibile creare molti modelli con diverse funzionalità ed eseguirli, se necessario, dall'EA principale. Ma un tale Expert Advisor deve essere trasferito insieme a tutti i modelli da un computer all'altro, perché non possono essere collocati in esso.
 
Реter Konow:

Grazie per il vostro aiuto. Ho imparato molte cose nuove. Sperimenterò e riporterò i risultati in questo thread. Ma non sarà veloce, perché ci sono ancora molti compiti da completare prima.

Sto pensando in questo modo. Se quando OBJ_CHART viene avviato è collegato in loop per leggere la risorsa, allora si può comunicare con esso ulteriormente attraverso di esso e farà tutti i compiti che gli sono stati passati che l'originale che lo ha avviato può fare.


Aggiunto: la documentazione dice che il modello non può essere inserito nell'EA come risorsa. Quindi c'è un problema di portabilità. Ma l'EA può creare un modello di se stesso quando necessario e, inoltre, caricarlo e forzare la sua copia ad eseguire solo le funzioni richieste, comunicando con esso tramite risorse dopo che è stato messo in loop. Mi chiedo se questa opzione non fallisca in nessun punto, il problema del multithreading può essere chiuso.

È una soluzione interessante, ma è la mancanza di un'altra soluzione completa.
Inoltre, non dimenticate che usando questo approccio, non potete creare più di 98 thread!
Poiché il terminale non vi permetterà di aprire più di 99 grafici. E questa è già una limitazione delle possibilità.
Per i programmi GUI dove non sono necessari molti thread, la soluzione funziona bene, ma non è un'opzione dove sono necessari più di 98 thread.
Qualcuno ha controllato quanto tempo ci vuole per lanciare l'agente esperto in questo approccio? Quando crea una copia di un modello, ecc.
Qual è il tempo di costo in questa soluzione?

 
Roman:

È una soluzione interessante, ma è la mancanza di un'altra soluzione completa.
Inoltre, non dimenticate che usando questo approccio, non potete creare più di 98 thread!
Poiché il terminale non vi permetterà di aprire più di 99 grafici. E questa è già una limitazione delle possibilità.
Per i programmi GUI dove non sono necessari molti thread, la soluzione funziona bene, ma non è un'opzione dove sono necessari più di 98 thread.
Qualcuno ha controllato quanto tempo ci vuole per lanciare l'Expert Advisor in questo approccio? Quando crea una copia di un modello, ecc.
Qual è il tempo di costo in questa soluzione?

Sono d'accordo. È una soluzione di stampella e anche se tutte le speranze sono soddisfatte, è disponibile solo per me e poche altre persone che hanno sviluppato la tecnologia interprogramma. Non funzionerà per gli altri. Fatto.
 
Roman:

È una soluzione interessante, ma è la mancanza di un'altra soluzione completa.
Inoltre, non dimenticate che usando questo approccio, non potete creare più di 98 thread!
Poiché il terminale non vi permetterà di aprire più di 99 grafici. E questa è già una limitazione delle possibilità.
Per i programmi GUI dove non sono necessari molti thread, la soluzione funziona bene, ma non è un'opzione dove sono necessari più di 98 thread.
Qualcuno ha controllato quanto tempo ci vuole per lanciare l'agente esperto in questo approccio? Quando crea una copia di un modello, ecc.
Qual è il tempo di costo in questa soluzione?

Non ti piace tutto, quindi sei sulla tua strada verso la tana. Ti ho lasciato dei link al libro di riferimento con esempi, l'hai guardato? O te lo sei perso?

 
Vict:

Non ti piace tutto, quindi sei sulla tua strada verso la tana. Ti ho lasciato dei link al libro di riferimento con esempi, l'hai visto? O te lo sei perso?

Sei più avanti di me con la risposta ) Lo sto guardando ora, grazie per i link, è quello giusto per l'argomento C++ ))
E il fatto che sia difficile o no, è un'altra questione, ho capito cos'è))
Mi piace tutto )) diversi approcci per capire, e poi scegliere quello che ha più senso per me e soddisfa i requisiti, tutto è semplice.

 
Roman:

Sei più avanti di me con la risposta ) Li sto guardando proprio ora, grazie per i link, è proprio quello di cui ho bisogno sul tema del C++ ))
E il fatto che sia difficile o no, è un'altra questione, ho una comprensione di ciò che è futuro ))
Mi piace tutto )) diversi approcci per capire, e poi scegliere quello che ha più senso per me, tutto è semplice.

ok, fammi sapere se hai bisogno di qualcosa, abbozzeremo il tuo euentloop, penso ))

 
Реter Konow:
È una soluzione di stampella

No, è un buon filtro di competenza.