Websocket comment ? - page 14

 
Алексей Барбашин:

Fedor, tu vas dans la mauvaise direction. Ça ne marche pas comme ça ! Vous avez utilisé proprement le code que Volodja vous a donné. Votre tâche est de récupérer les données de la websocket et de passer les ask et bid à mql ! Alors que nous avons seulement renvoyé l'offre des données reçues à mql, votre tâche est de renvoyer la structure entière à mql et de sortir l'information dans le journal.

Ok. Je vais essayer de le refaire maintenant.
 
Алексей Барбашин:

Si, ça ne l'est pas. Mais ce problème peut être résolu. Au dernier stade, lorsque le code est débogué, il suffit d'implémenter DLLExport dans la bibliothèque de Sharp et tout fonctionnera avec mt4.

ça ne le fera pas, je l'ai déjà testé.

soit C++/CLI

ou Exportations non gérées par Robert Giesecke - à propos de l'article que je suis en train d'écrire

ZS : peut-être qu'avec DLLExport, les méthodes simples retournant a + b fonctionneront ; pas plus, tout ce qui nécessite une initialisation .Net ne fonctionne pas, cependant..... serait heureux d'apprendre quelque chose de nouveau.

ZZZY : trouvéhttps://github.com/3F/DllExport , n'a pas utilisé, trouvé autre chose, mais c'est la même puce.

Veuillez noter à nouveau que les UnmanagedExports ont été créés par Robert Giesecke. Vous devez visiter sa page.

Mais ce dépôt n'est pas lié à Robert et est généralement toujours en cours de développement par le développeur de GitHub/3F.

 

Pour une raison quelconque, il renvoie des zéros.


 
Igor Makanu:

ça n'arrivera pas, j'ai déjà vérifié.

ou C++/CLI

ou Exportations non gérées par Robert Giesecke - à propos de l'article que je suis en train d'écrire

ZS : peut-être qu'avec DLLExport, les méthodes simples de retour a + b ; , rien de plus, tout ce qui nécessite une initialisation .Net ne fonctionne pas cependant..... je serais heureux de donner un exemple, toujours heureux d'apprendre quelque chose de nouveau


travaillé.
Vous devez apporter les modifications correctes au code IL.

J'ai fait mon propre exe, qui fait des changements après la compilation de VS.
Et alors les méthodes C# deviennent visibles depuis C/MQL

plus le triage.
Je ne l'ai pas utilisé depuis un moment.

 
Vladimir Suslov:


ça a marché.
Vous devez apporter les modifications appropriées au code IL.

J'ai créé mon propre exe qui fait des changements après la compilation de VS.
Et alors les méthodes C# deviennent visibles depuis C/MQL

Je ne l'ai pas utilisé depuis un moment

Je viens de mettre à jour mon message ci-dessus.

c'est le même code que j'utilise - code de Robert Giesecke

mais vous n'avez pas à corriger quoi que ce soit manuellement ici, le principal problème est de traiter des types de données complexes, j'ai récemment fait un échange de données, j'ai gratté une méthode

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
J'ai essayé de traiter un tableau de chaînes par le biais de StringBuilder, cela fonctionne de manière très instable et j'ai abandonné parce que cela nécessite un contrôle constant de l'allocation de mémoire pour le tampon de chaîne à la fois dans MQL4 et .Net - en général la recherche constante du moment où quelque chose cesse de fonctionner ;)))
 
Алексей Барбашин:

Lorsque j'utilisais cette méthode, je devais implémenter DllExport une seule fois, puis toutes les méthodes pouvaient être déclarées comme exportées. Cette bibliothèque a apporté elle-même les modifications nécessaires au code. Mais depuis que MT5 a commencé à prendre en charge Sharp, j'ai arrêté de "déconner" avec lui.

Je pense que la question portait sur MT4 ?

 
Алексей Барбашин:

Ce n'est pas grave. La méthode Dequeue() prend un enregistrement dans la file d'attente. Vous essayez de prendre deux enregistrements et différents paramètres de chacun d'eux. Tout d'abord, personne ne garantit qu'il y aura deux enregistrements dans la file d'attente au moment de l'accès).

Je l'ai retravaillé de cette façon.

MQL


Il ne renvoie plus rien du tout maintenant, car j'ai ajouté une vérification.

 
Igor Makanu:

Je viens de mettre à jour mon message ci-dessus.

C'est le même code que j'utilise - code de Robert Giesecke

mais il n'y a rien à corriger à la main, le principal problème est de traiter des types de données complexes, j'ai récemment fait un échange de données, j'ai gratté une méthode

Celui-ci ne fonctionnait pas (il y a quelques années), j'ai donc fabriqué le mien.
Il a peut-être été mis à jour maintenant et il fonctionne.
Mais le principe est exactement le même

 
Vladimir Suslov:

Cette librairie n'a pas fonctionné pour moi (il y a quelques années) et j'ai fait la mienne.
J'ai pu le mettre à jour maintenant et il fonctionne.
Mais le principe est exactement le même

il ne fonctionne pas sur la langue russe Win

Mais il fonctionnera certainement sans problèmes si vous installez une machine virtuelle + Win 7 en anglais - j'ai choisi pendant l'installation la langue Win, essayé différentes façons d'installer Win7 en russe passer à l'anglais. - Quelque part, soit dans le registre ou un dossier reste russe, à cause de cela, le modèle Robert Giesecke compilé avec des avertissements et ne fonctionne pas l'exportation .dll

SZZY : j'ai sauvegardé une image de la machine virtuelle 10GB sur mon disque dur, maintenant je peux utiliser le modèle sans problèmeRobert Giesecke

 
Les gars, pourquoi est-ce que je reçois des zéros en retour ? Et la file d'attente est vide ?