Websocket wie? - Seite 14

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

Fedor, du gehst in die falsche Richtung. So funktioniert das nicht! Sie haben den Code, den Volodja Ihnen gegeben hat, sauber verwendet. Ihre Aufgabe ist es, die Daten aus dem Websocket zu holen und den Ask und Bid an mql zu übergeben! Während wir nur ein Gebot aus den empfangenen Daten an mql zurückgegeben haben, besteht Ihre Aufgabe darin, die gesamte Struktur an mql zurückzugeben und die Informationen in das Protokoll auszugeben.

Gut. Ich werde jetzt versuchen, sie zu überarbeiten.
 
Алексей Барбашин:

Ja, das ist nicht der Fall. Aber dieses Problem kann gelöst werden. In der letzten Phase, wenn der Code debuggt ist, müssen wir nur noch DLLExport in Sharps Bibliothek implementieren und alles wird mit mt4 funktionieren.

Nein, ich habe es bereits getestet.

entweder C++/CLI

oder Unmanaged Exports von Robert Giesecke - über den Artikel, den ich schreibe

ZS: vielleicht mit DLLExport funktioniert einfache Methoden zurückgeben a + b; nicht mehr, alles, was Initialisierung erfordert .Net nicht funktioniert, obwohl.... würde sich freuen, etwas Neues zu lernen.

ZZZY: gefundenhttps://github.com/3F/DllExport , nicht benutzt, etwas anderes gefunden, aber es ist der gleiche Chip

Bitte beachten Sie noch einmal, dass die UnmanagedExports von Robert Giesecke erstellt wurden. Sie müssen seine Seite besuchen.

Aber dieses Repository hat nichts mit Robert zu tun und wird im Allgemeinen noch von GitHub/3F-Entwicklern entwickelt

 

Aus irgendeinem Grund gibt sie Nullen zurück.


 
Igor Makanu:

wird es nicht, ich habe es bereits überprüft

oder C++/CLI

oder Unmanaged Exports von Robert Giesecke - über den Artikel, den ich schreibe

ZS: vielleicht mit DLLExport funktioniert einfache Methoden zurückgeben a + b; , nichts mehr, alles, was Initialisierung erfordert .Net funktioniert nicht obwohl.... Ich würde gerne ein Beispiel geben, ich lerne immer gerne etwas Neues


gearbeitet.
Sie müssen die richtigen Änderungen am IL-Code vornehmen.

Ich habe meine eigene Exe erstellt, die nach der VS-Kompilierung Änderungen vornimmt.
Und dann werden C#-Methoden von C/MQL aus sichtbar

plus Rangieren.
Das habe ich schon lange nicht mehr benutzt.

 
Vladimir Suslov:


Es hat funktioniert.
Sie müssen die richtigen Änderungen am IL-Code vornehmen.

Ich habe meine eigene Exe, die Änderungen nach VS kompiliert macht.
Und dann werden C#-Methoden von C/MQL aus sichtbar

Habe ich schon lange nicht mehr benutzt

Ich habe gerade meinen Beitrag oben aktualisiert.

Dies ist der gleiche Code, den ich verwende - Code von Robert Giesecke

aber Sie müssen dort nichts manuell korrigieren, das Hauptproblem ist der Umgang mit komplexen Datentypen, ich habe erst kürzlich einen Datenaustausch gemacht, eine Methode ausgekratzt

  [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;
        }
Ich habe versucht, ein Array von Zeichenfolgen durch StringBuilder zu verarbeiten, es funktioniert sehr instabil und ich gab auf, weil es ständige Kontrolle der Speicherzuweisung für String-Puffer sowohl in MQL4 und .Net erfordert - im Allgemeinen die ständige Suche nach, wenn etwas nicht mehr funktioniert )))
 
Алексей Барбашин:

Wenn ich diese Methode verwendete, musste ich DllExport einmal implementieren, und dann konnten alle Methoden als exportiert deklariert werden. Diese Bibliothek selbst hat die notwendigen Änderungen am Code vorgenommen. Aber seit MT5 Sharp unterstützt, habe ich aufgehört, damit "herumzuspielen".

Ich glaube, die Frage bezog sich auf MT4?

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

Das ist keine große Sache. Die Methode Dequeue() entnimmt einen Datensatz aus der Warteschlange. Sie versuchen, zwei Datensätze und verschiedene Parameter aus jedem von ihnen zu übernehmen. Nun, zunächst einmal garantiert niemand, dass sich zum Zeitpunkt des Zugriffs zwei Datensätze in der Warteschlange befinden).

Ich habe es so überarbeitet.

MQL


Gibt jetzt überhaupt nichts mehr zurück, weil ich eine Prüfung hinzugefügt habe

 
Igor Makanu:

Ich habe gerade meinen Beitrag oben aktualisiert.

Es ist derselbe Code, den ich verwende - Code von Robert Giesecke

aber es gibt nichts von Hand zu korrigieren, das Hauptproblem ist der Umgang mit komplexen Datentypen, ich habe erst kürzlich einen Datenaustausch gemacht, eine Methode ausgekratzt

Diese funktionierte bei mir nicht (vor ein paar Jahren), also habe ich meine eigene gemacht.
Möglicherweise wurde sie jetzt aktualisiert und funktioniert.
Aber das Prinzip ist genau dasselbe

 
Vladimir Suslov:

Diese Lib funktionierte bei mir nicht (vor ein paar Jahren) und ich habe meine eigene gemacht.
Vielleicht habe ich es jetzt aktualisiert und es funktioniert.
Aber das Prinzip ist genau dasselbe

es funktioniert nicht auf Russisch Win

Aber es wird auf jeden Fall ohne Probleme funktionieren, wenn Sie eine virtuelle Maschine + Win 7 in Englisch zu installieren - ich wählte während der Installation Win Sprache, versuchte verschiedene Möglichkeiten, Win7 in Russisch zu installieren, um Englisch wechseln. - Irgendwo, entweder in der Registry oder in einem Ordner, bleibt die russische, weil diese, die Vorlage Robert Giesecke mit Warnungen kompiliert und wird nicht funktionieren exportieren .dll

SZZY: ein Image der virtuellen Maschine 10GB auf meiner Festplatte gespeichert, jetzt kann ich ohne Probleme die Vorlage verwendenRobert Giesecke

 
Leute, warum bekomme ich Nullen zurück? Und die Warteschlange ist leer?