Programmazione asincrona e multithread in MQL - pagina 6

 
Andrey Pogoreltsev:

MQL5 ha l'asincronia, ad esempioOrderSendAsync.

Per quanto riguarda l'interazione con la rete o il file system - usate WinAPI, ho scritto la soluzione sopra. Penso che ci sia tutto per questo. Potete leggere su come usare questi metodi sul sito di Microsoft. Cos'altro resta da scoprire?)

Sì,so diOrderSendAsync, ma è solo per inviare richieste.
Stavo guardando in questa direzione
di WinAPI, ma ignaro che i thread non sono disponibili in mql, i prototipi nell'inluder erano fuorvianti.

 
Andrey Pogoreltsev:

MQL5 ha l'asincronia, per esempioOrderSendAsync.

MQL4/5 ha sempre avuto l'esecuzione asincrona e multi-thread del codice MQLhttps://www.mql5.com/ru/docs/runtime/running.

cioè tutto è "out of the box", l'unico problema è lo scambio di dati tra programmi MQL, non c'è una soluzione pronta dagli sviluppatori, o meglio ci sono solo variabili globali del terminale - così hanno progettato lo scambio di dati - molto scomodo e inefficiente, ma ci sono soluzioni pronte per lo scambio di dati in QB

Hai menzionato sopra l'apprendimento di NS - richiede il multithreading, beh, sì, ma MT viene solo con Alglib e l'ho usato a lungo e non ho visto che ci vogliono più di 1-2 secondi per imparare NS, cioè perché è veloce? - Se userete pacchetti di terze parti di NS - non ci sono opzioni, dovrete andare oltre MT - usare dll, poi di nuovo, qual è il problema con lo scambio di dati e il multithreading? - il tutto implementato in una DLL.

si parlava di pitoni... Non sto parlando di velocità lì, è un ambiente molto specifico per lo sviluppo di NS, tutto sembra essere lì, ma è proprio impossibile usarlo - aspetta e aspetta... la cosa più divertente è lavorare con NS in Python! )))

SZZY: Python non ha il multithreading nel suo senso normale, ma potrei sbagliarmi. Odio Python - un sacco di rumore e mainstream, tutto funziona fuori dalla scatola, ma ..... ma non è proprio possibile lavorare con un sistema così lento, gli unici vantaggi sono un sacco di codice Python già pronto e una grande comunità Internet

 

Perché i puntatori nudi sono così poco sicuri?

Secondo me, gli sviluppatori stanno mentendo, e la vera ragione è quella di evitare di tirare dalla dll. Molto probabilmente è stata messa anche qualche convenzione di chiamata ingannevole.

 
Vict:

Perché i puntatori nudi sono così poco sicuri?

Secondo me, gli sviluppatori stanno mentendo, e la vera ragione è quella di evitare di tirare dalla dll. Molto probabilmente è stata messa anche qualche convenzione di chiamata ingannevole.

Come ha scritto il moderatore, l'accesso agli indirizzi di memoria fisica è negato per ragioni di sicurezza.
Attraverso il quale codificatori abili e senza scrupoli possono accedere a qualsiasi elemento del programma compilato.

 
Roman:

Come ha scritto il moderatore, l'accesso agli indirizzi di memoria fisica è negato per ragioni di sicurezza.
Attraverso il quale codificatori abili e senza scrupoli possono accedere a qualsiasi elemento del programma compilato.

Lo trovo difficile da credere. Non abbiamo bisogno della concorrenza con le lingue mature. E tutti questi trucchi, come cambiare le dimensioni quando si ricompila, per lo stesso scopo.

 
Vict:

Lo trovo difficile da credere. Non ha bisogno della concorrenza delle lingue mature. E tutti questi trucchi, come cambiare le dimensioni quando si ricompila, per lo stesso scopo.

No, lo è, ricordate la decompilazione di massa in mql4, gli errori accumulati sono stati presi in considerazione e la protezione è stata implementata.
In generale, questa è una scelta di sicurezza efficace, a scapito delle chiamate WinAPI dirette, ma poiché la dll è aperta, la funzionalità non cambia, il modo di interazione sì.
Pertanto, non incontrerete alcuna decompilazione o potenziale hacking del vostro programma. E questo è un bene e complimenti agli sviluppatori.

 
Vict:

Perché i puntatori nudi sono così insicuri?

admin Renat ha sempre risposto a tali domande che Metaquotes sceglie sempre una soluzione che è garantita per fornire sicurezza, bene in alternativa, si ottiene un puntatore alla memoria e può iniettare un virus che può aggiungere il suo codice al compilato ex4 / ex5


Romano:

a spese delle chiamate dirette a WinAPI

Hai un programma principale che gira in un processo principale, non funzionerà senza il programma principale - è chiaro?

- È possibile eseguire un corpo di funzione da Python in un processo separato usando WinAPI?

-..... corpo della funzione da Java usando WinAPI ?

-..... corpo della funzione da WordBASIC usando WinAPI ?


come opzione, qui Metakvot ha dato una risposta chiara - questa funzionalità non è fornita, vai più in basso nelle istanze: scrivi a Python Software, Oracle, Microsoft - fai saltare il loro cervello ancora

)))

 
Roman:

No no, è così, ricordate la decompilazione diffusa in mql4, i bug sono stati presi in considerazione e la protezione è stata implementata.
Nel complesso, questa è una scelta di sicurezza efficace, a scapito delle chiamate WinAPI dirette, ma poiché l'accesso alla dll è aperto, la funzionalità non è cambiata, cambia il modo di interazione.
Pertanto, non incontrerete alcuna decompilazione o potenziale hacking del vostro programma. E questo è un bene e un rispetto per gli sviluppatori.

Preso in considerazione, e i podcast del mercato hanno iniziato a compilare in nativ

Renat

È già debolmente decompilabile dalla build 500, poiché il sistema di sicurezza è stato completamente cambiato.

Dopo la migrazione al motore MQL5 e al Mercato, il tema del decompilatore morirà completamente. Chi non lo sa - i prodotti del Market sono compilati in 32/64 nativ (assembly puro, nessun modo di decompilare) al momento dell'acquisto e criptati per l'hardware dell'acquirente.

E decompilare da alcuni altri siti methacquot anche redditizio - per guidare tutti a se stessi da decompilare spaventoso e male. In generale - niente di personale, solo affari.
 
fxsaber:

Solo in MQL, entrambi i compiti sono risolti eseguendo automaticamente un conteggio EA.

Esattamente, è così che faccio io. Tuttavia, non uso Web-Request, ma l'auto-ottimizzazione - per me e per TC League - funziona in pieno. E la selezione è fatta in diversi passaggi, prima si ottimizza un sistema "pulito" e si fissano i suoi parametri, poi si esegue l'ottimizzazione di break-even e si fissano i suoi parametri, e poi si esegue l'ottimizzazione di SL protettivo (se necessario). E c'è lavoro con i telai e l'elaborazione dei dati da essi ovunque.

Tutto il multithreading necessario è già presente.

 
Igor Makanu:

admin Renat ha sempre risposto a tali domande, che Metaquotes sceglie sempre una soluzione che è garantita per fornire sicurezza, bene in alternativa, si ottiene un puntatore alla memoria e può iniettare un virus che può aggiungere il suo codice al ex4 / ex5 compilato

Credi davvero che non possa eseguire un terminale con un Expert Advisor sotto un debugger e trovare da quale indirizzo relativo inizia l'esecuzione? L'indirizzo di qualsiasi funzione o variabile? Un'altra cosa è che questi indirizzi possono cambiare (a causa dei trucchi applicati), ma in teoria posso scoprire tutto quello che mi darebbero i puntatori normali.

L'altra cosa che li spaventa è scoprire gli indirizzi delle funzioni attraverso i puntatori in runtime e tirarli in dll.