Discussion sur "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes". - page 2

 
Je n'ai pas encore testé une seule chose avec le passage de chaînes de caractères à la dll dans MQL5.

J'ai remarqué ce problème avec le passage de chaînes dans MQL4-DLL. Dans le code MQL4, j'appelle une fonction dans la DLL et je passe la chaîne de caractères :

#import "MyDll.dll"
 void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

et dans la dll je reçois cette chaîne avec un nom d'outil.

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


À un certain moment, sur un certain tic (il peut fonctionner correctement pendant une demi-journée), la dll reçoit soudainement une chaîne de caractères gauches avec des caractères non clairs à la place du nom du symbole.
Peut-être pouvez-vous vérifier un code similaire dans mql5 ? Le pointeur mémoire semble être incorrect dans MQL4 ou parfois il y a un conflit d'accès aux streamlines à l'intérieur du terminal.

Les tableaux de doubles et les variables int passent correctement sans aucun problème.

J'écrirai un test pour MQL5-DLL dès que j'en aurai le temps. Mais si vous testez aussi ce genre de choses, écrivez un test pour vérifier la stabilité du passage de la chaîne à la dll, en répétant le processus à chaque tick pendant une longue période de temps.

 
GarF1eld:

S'il est possible d'exporter des cotations uniquement par le biais de la dll, cela signifie qu'un script doit être placé sur chaque instrument à exporter ? Et s'ils sont nombreux ? Par exemple, 50 ?

Je comprends qu'il est possible de passer des cotations pour de nombreux instruments dans un script, mais ce ne sera pas un substitut à part entière de DDE, où les ticks ne sont pas perdus.

Renat:

Le problème est que nous n'avons pas pour mission de "fournir l'interface permettant de donner des devis".

Notre tâche consiste à créer un environnement complet et autosuffisant pour le développement de systèmes analytiques. Un environnement tel que même les programmes tiers n'ont pas besoin d'être utilisés.

La réponse est certainement intéressante. Le titre du sujet "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes" vaut la peine de voir cet article "Transfert de données entre indicateurs - une solution simple d'un problème douloureux " et de le comparer avec le problème mentionné ci-dessus (en italique).
 
Renat:

Le fait est que nous ne sommes pas chargés de "fournir une interface pour l'émission de devis".

Notre tâche consiste à créer un environnement complet et autosuffisant pour le développement de systèmes analytiques. Un tel environnement fait que même les programmes tiers n'ont pas grand besoin d'être utilisés.


L'interface graphique est très faible - il a fallu deux jours pour écrire la logique et une journée entière pour afficher les informations calculées de quelque manière que ce soit.

En conséquence, j'ai tout désactivé - j'ai construit le transport de données(https://www.mql5.com/ru/forum/382) et je suis heureux maintenant.

Les développeurs ne visent-ils pas trop haut ?

Et pourquoi réinventer la roue, si tout a déjà été fait il y a longtemps (C, Delphi, ...) ?

 
yu-sha:

L'interface graphique est très faible - il m'a fallu deux jours pour écrire la logique, et il m'a fallu une journée entière pour afficher les informations calculées de quelque manière que ce soit.

Finalement, j'ai tout abandonné - j'ai construit le transport de données(https://www.mql5.com/ru/forum/382) et je profite de ma vie.

Les développeurs ne visent-ils pas trop haut ?

Et pourquoi réinventer la roue quand tout a déjà été fait il y a longtemps (C, Delphi, ...) ?

À mon avis, le problème de MT5 a commencé dès sa création : l'absence d'une vision claire de ce que ce produit est censé résoudre. Il s'agit soit d'une version améliorée et basée sur MT4, mais portée à un niveau supérieur en termes de vitesse et de fonctions étendues, soit d'une nouvelle plate-forme de négociation moderne dotée d'une structure et d'une extensibilité bien pensées (c'est-à-dire contenant des classes d'activités, ou un cadre de négociation, pour exécuter des classes de tâches spécifiques clairement définies, et basée sur un langage/environnement de programmation moderne avec ses fonctionnalités générales et des outils de support logiciel largement disponibles). Résoudre ce dilemme en tentant de combiner les contraires, en brassant une sorte de compote, pour ainsi dire, par la méthode de "l'impromptu des solistes les plus talentueux", cela ne semble pas tout à fait réussi.

Si cela semble à quelqu'un de la pure camelote sans l'ombre d'une construction, pour la deuxième fois, conduisez-le à un bain public, ou abattez-le pour de bon :)

 

2pisara

Allez à la racine du problème.

MQL est plutôt destiné aux traders ayant peu de compétences en programmation. A la Basic pour les nuls.

Je n'ai rien contre une telle position - je vous en remercie également.

Mais en positionnant MQL5 comme"un environnement complet et autosuffisant pour le développement de systèmes analytiques".C'est le genre d'environnement où même les programmes tiers n'ont pas besoin d'être appliqués."C'est une demande sérieuse. Il faudra des années de travail, pas seulement de la part d'enthousiastes individuels, mais aussi d'une équipe de programmeurs professionnels sous la direction d'un bon architecte pour "lier" le noyau avec un ensemble de soupe digeste. Je ne peux rien dire sur le budget et la gestion - c'est un autre niveau du projet.

Je veux soutenir les employés de l'entreprise dans leur travail. Je tiens à les remercier pour leur travail acharné. Mais soyons réalistes : MQL5 n'est qu'une étape dans la réalisation de l'objectif.

P.S. Moscou ne s'est pas construit en un jour

 
Oui, il est effrayant de penser ou de se rappeler combien de choses inutiles chacun d'entre nous a fait, fait et continuera à faire !
 
Renat:

Il est très facile de vérifier la vitesse d'appel. Par exemple, vous pouvez le calculer approximativement comme suit :

J'ai obtenu 57 000 appels par seconde sur un Quad Q9400 @2.66Ghz. Le même code donne environ 20.000.000 d'appels par seconde dans MetaTrader 4, car il n'y a pas de contrôle et de tuyauterie.

Nous allons certainement essayer de réduire la perte sur les appels DLL dans MetaTrader 5.

Il serait bon de faire une directive spéciale au compilateur qui soit activée par défaut et qui insère ces wrappers dans les appels DLL. Lorsqu'ils sont désactivés, il est préférable de ne pas insérer ces enveloppes. Comme le mode débogage et le mode version. Pourtant, parfois 57K ne suffisent pas. Le même temps est consommé par le temps de fonctionnement de la dll.
 
HideYourRichess:
C'est une bonne idée de faire une directive spéciale du compilateur qui est activée par défaut et qui insère ces wrappers dans les appels de la dll. Lorsqu'ils sont désactivés, il est préférable de ne pas insérer ces enveloppes. Comme le mode débogage et le mode version. Pourtant, parfois 57K ne suffisent pas. Le même temps est consommé par le runtime de la dll.
Le build 240 a simplifié les wrappers, maintenant le taux d'appel est de 19,911,000 appels par seconde.
 
À propos de la discussion sur le MQL / MQL2 / MQL4 / MQL5 : apparemment, vous ne connaissez pas très bien notre histoire. Allez au moins sur le site web de l'entreprise et lisez-le.


Nous avons méthodiquement créé 4 générations de langages de trading depuis 2001 avec une énorme communauté de traders. Les concurrents mouraient, leurs langages de contrôle ne se développaient pas, alors que nous avons travaillé, travaillons et continuerons à travailler.

 

Renat: 

et nous avons travaillé, travaillons et continuerons à travailler.

Comme l'a légué l'arrière grand-père Lénine.

;)

Je ne me souviens pas, je crois que j'ai déjà demandé...
Est-il possible de créer des dlls simples en utilisant les outils mcl5,
il suffit de l'écrire dans unitor et de le compiler... ?