Programmazione asincrona e multithread in MQL - pagina 21

 
Roman:


Ecco un esempio di scrittura di codice lineare asincrono in un thread a scopo illustrativo.

CTask *task2   = obj2.CALLBACK_FUNC(DeleteOrdersLimits(Magic));  //Выполняется асинхронно в пуле потоков

questo non funzionerà:

Igor Makanu:

ma quando si usano applicazioni multithread, il controllo di questi thread è un mal di testa dello sviluppatore, non ha controllato la prontezza del calcolo - ha ottenuto un bug, che apparirà in un momento sconosciuto

OK, avevo il desiderio di scrivere in un argomento con un nome così bello - ho scritto, quindi ho scritto... ricordava Don Chisciotte e la sua eterna lotta con i mulini a vento ))))

Una buona squadra di professionisti, penso che ci sia ancora qualcosa di cui parlare

 
Yuriy Asaulenko:

....

Perché, ipoteticamente, dovrei avere bisogno della vostra GUI, ecc., se può essere scritta in Sharp o Python in due tempi? All'utente non interessa in cosa è scritto, ha bisogno della funzionalità, non delle specifiche di implementazione. Cioè un programmatore non ha bisogno di tali prodotti, ma a un utente non interessa affatto, gli interessa il prezzo, ed è ovviamente più economico e funzionale in Sharp.

1. Dove troverete gli acquirenti dei vostri programmi Sharp?

2) Come proverete la sicurezza dei vostri programmi?

3. Tu, come programmatore esperto, suggerisci di non usare un linguaggio applicativo nello sviluppo di TC, perché Per anni non ho capito perché.

4. Se si propone di fare un programma ibrido - usare la GUI di Sharp e scrivere la logica in MCL - provare a collegare le tabelle di Sharp all'Expert Advisor. È passato mezzo anno, e l'articolo che mostra come farlo non è ancora stato pubblicato. Ho il sospetto che ci siano problemi molto seri. E la GUI a livello dei pulsanti - si può fare con una libreria interna.

In breve, il tuo suggerimento di mantenere l'ICL è come suggerire di fare non so cosa e andare lì, non so dove, perché sembrano essere buoni da mangiare lì....

 
Igor Makanu:

non funzionerà:

Funziona in C e C++ in una delle librerie ))
In che modo mql è diverso da C++?
Se gli sviluppatori fossero disposti, potrebbero implementare questa funzionalità in mql in modo molto realistico.
Dopo tutto, l'idea in sé vale la pena - tanto più che queste tecnologie sono ben note.
E molto probabilmente il lavoro sugli agenti è implementato in modo simile, in un pool di thread.

 
Реter Konow:

1. Dove troverete gli acquirenti dei vostri programmi Sharp?

2) E come proverete la sicurezza di questi programmi?

3. Tu, come programmatore esperto, proponi di rifiutare l'uso di un linguaggio applicativo nello sviluppo di TC, perché... Per anni non ho capito perché.

4. Se si propone di fare un programma ibrido - usare la GUI di Sharp e scrivere la logica in MCL - provare a collegare le tabelle di Sharp all'Expert Advisor. È passato mezzo anno, e l'articolo che mostra come farlo non è ancora stato pubblicato. Ho il sospetto che ci siano problemi molto seri. E la GUI a livello dei pulsanti, si può fare con la libreria interna.

Insomma, il tuo suggerimento di lasciare MKL è come suggerire di fare questo, non so cosa e andare lì, non so dove, perché sembra che si nutrano bene lì....

1. Cerca i clienti sul lato. Il mercato non è l'unico posto dove trovarli.

Il Mercato non è un business. Per i MK fa parte degli affari).

2., 3. и 4. Per me, MKL (o qualsiasi altro linguaggio di qualsiasi terminale) non è altro che il linguaggio di interfaccia tra il terminale e il TS. Il TC non dovrebbe dipendere dal terminale, e dovrebbe essere in grado di connettersi a qualsiasi terminale tramite un'interfaccia appropriata.

Ho questo concetto fin dall'inizio. Tutto questo è abbastanza realizzabile, non vedo alcun problema. Ecco, ad esempio, cosa fa la MCL con la DLL.


Non c'è importazione di librerie in MKL. Nel database vediamo la storia di TF 1m e del tumbler. Tutto questo viene riempito in tempo reale mentre il gioco procede.
 
Ho fatto una coda di messaggi che elabora in modo temporizzato i comandi in arrivo e notifica quando l'operazione è completa. non vedo la necessità diretta di creare thread separati
 
Yuriy Asaulenko:

1. Cercare acquirenti all'esterno. Il Mercato non è un business.

Il Mercato non è un business. Qui, per i MK, fa parte del business).

2., 3. и 4. Per me, MKL (o qualsiasi altro linguaggio di qualsiasi terminale) non è altro che il linguaggio di interfaccia tra il terminale e il TS. Il TC non dovrebbe dipendere dal terminale, e dovrebbe essere in grado di connettersi a qualsiasi terminale tramite un'interfaccia appropriata.

Ho questo concetto fin dall'inizio. È tutto abbastanza fattibile, non vedo il problema.

1 e 2 sono senza risposta. Cercare in un posto poco chiaro e poco chiaro come convincere che il programma è sicuro? E un manuale di 10 pagine per avviarlo, come collegare TC scritto in un linguaggio non applicato a tutti i tipi di piattaforme? ))

TC multipiattaforma - vuoi scommettere? - Studia per diventare un programmatore e vedrai come!

Sai, mi fai ridere ogni volta. Seriamente. Un programmatore-praticante che chiede di non usare un linguaggio applicativo per risolvere problemi altamente specializzati, ma di risolvere quei problemi in linguaggi UNIVERSALI, per amore dell'UNIVERSALITÀ! La praticità e la convenienza scaturiscono semplicemente da ogni frase.

 
Yuriy Asaulenko:
....


Non c'è importazione di librerie in MKL. Nel database vediamo la storia di TF 1m e del vetro. Tutto questo viene riempito in tempo reale mentre il gioco procede.

No. Stai solo trasferendo dati dalla piattaforma una volta al minuto. Mostrate l'interazione dal vivo e riempite la tabella di dati più spesso di una volta al secondo. E i dati devono essere trasferiti in due direzioni. Da MKL a sharp e ritorno.

 
Реter Konow:

Sai, mi fai ridere ogni volta. Seriamente. Un programmatore-praticante che chiama non per usare un linguaggio applicativo per risolvere problemi altamente specializzati, ma per risolvere questi problemi con metodi UNIVERSALI e per amore dell'UNIVERSALITÀ! La praticità e la convenienza scaturiscono da ogni frase.

Ad essere onesti, anche io mi diverto a leggere i tuoi post. Sugli affari, in particolare.

Non sto chiamando nessuno a niente e non sto vendendo niente. Se volete usare i threads - usate C++/C# e nessun problema. Oppure puoi lamentarti per sempre che non ci sono thread in MKL.

 
Реter Konow:

No. Stai solo trasferendo dati dalla piattaforma una volta al minuto. Mostrate l'interazione dal vivo e riempite la tabella di dati più spesso di una volta al secondo. E i dati devono essere trasferiti in due direzioni. Da MKL a sharp e ritorno.

Una volta al minuto. Esperto in tecnologia)) Avete un evento -OnTick, chiamate la funzione DLL su di esso e passate i dati attuali sulla candela. Questo è tutto).

OK, lascia perdere.

 
Yuriy Asaulenko:

...

Se volete usare i thread, usate C++/C# e nessun problema.

Non abbiamo bisogno di loro lì. Le capacità di altri linguaggi non contribuiranno al livello del software qui nella comunità. Ci saranno brutti, brutti ibridi per uso personale e questo è tutto.