Programmation asynchrone et multithread dans MQL - page 6

 
Andrey Pogoreltsev:

MQL5 dispose de l'asynchronie, par exempleOrderSendAsync.

Quant à l'interaction avec le réseau ou le système de fichiers - utilisez WinAPI, j'ai écrit la solution ci-dessus. Je pense que tout est là pour ça. Vous pouvez lire comment utiliser ces méthodes sur le site de Microsoft. Que reste-t-il à découvrir ?)

Oui,je connaisOrderSendAsync, mais c'est seulement pour envoyer des demandes.
Je regardais dans cette direction
de WinAPI, mais ignorant que les fils ne sont pas disponibles dans mql, les prototypes dans l'inluder étaient trompeurs.

 
Andrey Pogoreltsev:

MQL5 dispose de l'asynchronie, par exempleOrderSendAsync.

MQL4/5 a toujours eu une exécution asynchrone et multithread du code MQLhttps://www.mql5.com/ru/docs/runtime/running.

c'est-à-dire que tout est "out of the box", le seul problème est l'échange de données entre les programmes MQL, il n'y a pas de solution prête à l'emploi de la part des développeurs, ou plutôt il n'y a que des variables globales du terminal - donc ils ont conçu l'échange de données - très peu pratique et inefficace, mais il y a des solutions prêtes à l'emploi pour l'échange de données dans QB

Vous avez mentionné plus haut l'apprentissage de NS - il nécessite le multithreading, eh bien, oui, mais MT n'est livré qu'avec Alglib et je l'ai utilisé aussi longtemps que je n'ai pas vu qu'il fallait plus de 1-2 secondes pour apprendre NS, c'est-à-dire pourquoi est-ce rapide ? - Si vous utilisez des paquets tiers de NS - il n'y a pas d'options, vous devrez aller au-delà de MT - utilisez dll, alors encore une fois, quel est le problème avec l'échange de données et le multithreading ? - tous mis en œuvre dans une dll.

il y avait une mention des pythons... Je ne parle pas de vitesse, c'est un environnement très spécifique pour le développement de NS, tout semble être là, mais il est tout simplement impossible de l'utiliser - attendre et attendre... la chose la plus amusante est de travailler avec NS en Python ! )))

SZZY : Python ne dispose pas du multithreading dans son sens normal, mais je peux me tromper. Je déteste Python - beaucoup de bruit et de courant, tout fonctionne sans problème, mais ...... mais il n'est tout simplement pas possible de travailler avec un système aussi lent, les seuls avantages sont un grand nombre de codes Python prêts à l'emploi et une large communauté Internet.

 

Pourquoi les pointeurs nus sont-ils si peu sûrs ?

A mon avis, les développeurs mentent, et la vraie raison est d'empêcher de tirer de la dll. Il est fort probable qu'une convention d'appel compliquée ait également été mise en place.

 
Vict:

Pourquoi les pointeurs nus sont-ils si peu sûrs ?

Je pense que les développeurs mentent, et que la vraie raison est d'empêcher de tirer de la dll. Il est fort probable qu'une convention d'appel compliquée ait également été mise en place.

Comme l'a écrit le modérateur, l'accès aux adresses de la mémoire physique est refusé pour des raisons de sécurité.
Grâce à laquelle des codeurs compétents et peu scrupuleux peuvent avoir accès à n'importe quel élément du programme compilé.

 
Roman:

Comme l'a écrit le modérateur, l'accès aux adresses de la mémoire physique est refusé pour des raisons de sécurité.
Grâce à laquelle des codeurs compétents et peu scrupuleux peuvent avoir accès à n'importe quel élément du programme compilé.

Je trouve cela difficile à croire. Nous n'avons tout simplement pas besoin de la concurrence des langues matures. Et toutes ces astuces, comme le changement de taille lors de la recompilation, dans le même but.

 
Vict:

Je trouve ça difficile à croire. Il n'a tout simplement pas besoin de la concurrence des langues matures. Et toutes ces astuces, comme changer la taille lors de la recompilation, dans le même but.

Non, ça l'est, souvenez-vous de la décompilation en masse dans mql4, les erreurs accumulées ont été prises en compte et une protection a été mise en place.
Dans l'ensemble, il s'agit d'un choix de sécurité efficace, au détriment des appels directs à l'interface WinAPI, mais comme la dll est ouverte, la fonctionnalité ne change pas, mais le mode d'interaction, oui.
Par conséquent, vous ne rencontrerez aucune décompilation ou piratage potentiel de votre programme. Et c'est une bonne chose et bravo aux développeurs.

 
Vict:

Pourquoi les pointeurs nus sont-ils si peu sûrs ?

admin Renat a toujours répondu à de telles questions que Metaquotes choisit toujours une solution qui est garanti de fournir la sécurité, bien alternativement, vous obtenez un pointeur à la mémoire et peut injecter un virus qui peut ajouter son code à la compilé ex4 / ex5


Romain:

au détriment des appels directs à WinAPI.

Vous avez un programme principal qui fonctionne dans un processus principal, il ne fonctionnera pas sans le programme principal - est-ce clair ?

- Pouvez-vous exécuter un corps de fonction de Python dans un processus séparé en utilisant WinAPI ?

-..... corps de fonction de Java en utilisant WinAPI ?

-..... corps de fonction de WordBASIC en utilisant WinAPI ?


comme une option, ici Metakvot a donné une réponse claire - cette fonctionnalité n'est pas fournie, allez plus loin dans les instances : écrivez à Python Software, Oracle, Microsoft - faites-leur sauter la cervelle encore

)))

 
Roman:

Non non, c'est comme ça, rappelez-vous la décompilation généralisée dans mql4, les bugs ont été pris en compte et une protection a été mise en place.
Dans l'ensemble, il s'agit d'un choix de sécurité efficace, au détriment des appels directs à la WinAPI, mais comme l'accès à la dll est ouvert, la fonctionnalité n'est pas modifiée, c'est le mode d'interaction qui change.
Par conséquent, vous ne rencontrerez aucune décompilation ou piratage potentiel de votre programme. Et c'est une bonne chose et un respect pour les développeurs.

Pris en compte, et les podcasts du marché ont commencé à se compiler en nativ

Renat

Il est déjà faiblement décompilable depuis la build 500, car le système de sécurité a été complètement modifié.

Après la migration vers le moteur et le marché MQL5, le thème du décompilateur disparaîtra complètement. Ceux qui ne le savent pas - les produits de Market sont compilés en 32/64 nativ (assemblage pur, aucun moyen de décompiler) au moment de l'achat et cryptés pour le matériel de l'acheteur.

Et la décompilation à partir de certains autres sites méthacquot même rentable - de conduire tout le monde à eux-mêmes par effrayant et mal décompiles. En général - rien de personnel, juste les affaires.
 
fxsaber:

Dans MQL uniquement, les deux tâches sont résolues en exécutant automatiquement un comptage EA.

Exactement, c'est comme ça que je fais. Cependant, je n'utilise pas Web-Request, mais l'auto-optimisation - pour moi et TC League - fonctionne à plein régime. Et la sélection se fait en plusieurs passes, d'abord, un système "propre" est optimisé et ses paramètres sont fixés, puis l'optimisation du seuil de rentabilité est exécutée et ses paramètres sont fixés, et enfin l'optimisation du SL de protection (si nécessaire) est exécutée. Et partout, on travaille avec des cadres et on traite les données qu'ils contiennent.

Tout le multithreading nécessaire est déjà en place.

 
Igor Makanu:

admin Renat a toujours répondu à de telles questions, que Metaquotes choisit toujours une solution qui est garanti pour fournir la sécurité, bien alternativement, vous obtenez un pointeur à la mémoire et peut injecter un virus qui peut ajouter son code à l'ex4 / ex5 compilé

Pensez-vous vraiment que je ne peux pas exécuter un terminal avec un Expert Advisor sous un débogueur et trouver à partir de quelle adresse relative l'exécution commence ? L'adresse d'une fonction ou d'une variable ? Une autre chose est que ces adresses peuvent changer (à cause des astuces appliquées), mais en théorie je peux trouver tout ce que des pointeurs normaux me donneraient.

L'autre chose qui les effraie, c'est de trouver les adresses des fonctions via des pointeurs dans le runtime et de les arracher dans les dlls.

Raison: