Websocket wie? - Seite 23

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

Sie bringen also zum Ausdruck, wie gerne Sie den Prozess selbst genießen würden. Zum Verständnis: Der Server kann nicht nach einem bestimmten Candlestick gefragt werden, sondern nur nach einer Reihe von Candlesticks für ausgewählte Daten. Denken Sie also in diese Richtung.

Dann wäre es besser, die Daten in eine Datei zu schreiben. Ich verstehe nicht, wie man einen Ordner hinzufügt

 
Gefunden und hinzugefügt
 
Maxim Kuznetsov:

Ist es möglich zu intervenieren?

Möchte niemand vorher eine Klasse/Schnittstelle auf der MT-Seite machen?

d.h. eine spezifische ToR zu geben, die diskutiert und durchgesetzt werden kann.

Fangen wir an:


class Hibou {

Hidou(string url=HIBOU_WS_URL);  // думаю почти бесспорно

~Hibou();

void DoEvent(); // веб-сокеты асинхронны, а может в тредах реализуем, будем дёргать при первой возможности

int State(); // некое текущее состояние

/// хенды по событиям протокола, вызываемые из DoEvevnt

virtual void OnConnect();  //  соеденились - зашибись

virtual void OnMessage(string json); // получили внятный Event

/// и так далее - заказчик представляет как он намерен использовать интерфейс.

/// если он этого не знает, мы за него ничего придумать не можем, клиника в руках пациентов

}

Nicht können! SIE MÜSSEN ES TUN! Je mehr interessierte Parteien sich beteiligen, desto besser!

Normalerweise werden On[Event|Connect|Message] und so weiter verwendet, um mitzuteilen, dass das Ereignis eingetreten ist, aber wir haben nicht die Möglichkeit, MT zu benachrichtigen, ein solches Ereignismodell existiert leider nicht, wir können keine Nachrichten an MT weitergeben((((

Es bleibt also nur eine Methode zur periodischen Abfrage von sharp durch mql, z.B. durch einen winzigen Timer. (((

Und damit alles richtig läuft... Jeder, der die mql-Hilfe gelesen hat, hat oft den Ausdruck "events queue" (Warteschlange) bemerkt, und die Entwickler, einschließlich Renat, sagen uns bei jedem Schritt, dass alle Terminal-Ereignisse synchron sind und in der Reihenfolge der Warteschlange verarbeitet werden, und dass alle System- und Terminal-Ereignisse in eben diese Warteschlange gestellt und sequentiell verarbeitet werden. Aus diesem Grund habe ich in der ersten Ausgabe vorgeschlagen, denselben Austauschmechanismus zu verwenden: die Warteschlange.

 

Verbinden Sie die WebSocket4Net-Bibliothek aus den Nuget-Paketen mit unserem Projekt.

Beschreiben Sie die Socket-Klasse. Fügen Sie die Eigenschaft IsOpen hinzu, die für die Tatsache verantwortlich ist, dass der Socket geöffnet ist.

Buchstäblich leicht zu formalisieren die Socket-Klasse, schreiben wir die notwendigen Informationen durch den Kontext Hinweise.


Als nächstes verfeinern wir den globalen Manager. In seinem statischen Konstruktor erstellen wir sofort eine Instanz des Sockets, um ihn nicht zu vergessen.


Ich habe Maxim zugehört und dem globalen Manager die Methode der Verbindung mit einem bestimmten Broker hinzugefügt. Dies wird im Falle einer Entwicklung für andere Makler von Vorteil sein.

Wir verfeinern den Web-Socket und erstellen Event-Handler für den Socket selbst.


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


Ich habe Maxim zugehört und eine maklerspezifische Verbindungsmethode zum globalen Manager hinzugefügt. Es wäre praktisch, wenn es eine Entwicklung für andere Makler geben würde.

Sie müssen mit Ihrem dritten Auge zugehört haben :-)

 
Maxim Kuznetsov:

Sie müssen mit Ihrem dritten Auge zugehört haben :-)

Max, Sie haben vorgeschlagen, eine Klasse zu erstellen, aber wir haben die Klasse GlobalManager für allgemeine Methoden, und ich sehe keinen Sinn darin, eine separate spezifische Klasse zu erstellen.

Für die Schnittstelle zur Verbindung mit MT haben wir die ConnectorMQL-Klasse, mit der wir alle unsere Methoden im Konsolenmodus testen werden.

Wenn ich etwas falsch verstanden habe, korrigieren Sie mich bitte, versuchen Sie, Ihren Standpunkt ein wenig anders darzustellen, ziehen Sie keine voreiligen Schlüsse.

P.S. Natürlich können Sie nicht nur einen universellen Einstiegspunkt wie ConnectorMQL, sondern tatsächlich eine separate Klasse HuobiMQL, die spezielle Befehle an den globalen Manager senden wird.
 
Алексей Барбашин:

Etwas, das ich nicht sehen kann


 
Fedor Arkhipov:

Ich kann es nicht sehen.


Es scheint in Ordnung zu sein, es ist nicht unterstrichen. Sie sollten jedoch ein Semikolon an das Ende der Zeile setzen.

 

Ich habe einen Points-Ordner hinzugefügt und darin eine HuobiMQL-Klasse erstellt


In den Ereignissen des Öffnens und Schließens eines Sockets, fügte ich die Einstellung der Socket-Status-Eigenschaft


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

Max, Sie haben vorgeschlagen, eine Klasse zu erstellen, aber wir haben die Klasse GlobalManager für allgemeine Methoden, und ich sehe noch keinen Sinn darin, eine separate spezifische Klasse zu erstellen.

Was die Schnittstelle mit MT betrifft, so werden wir die ConnectorMQL-Klasse später haben, wenn wir alle unsere Methoden im Konsolenmodus testen werden.

Wenn ich etwas falsch verstanden habe, korrigieren Sie mich, versuchen Sie, Ihren Standpunkt ein wenig anders darzustellen, ziehen Sie keine voreiligen Schlüsse.

Was das Design angeht: Es ist viel einfacher - @Fedor Arkhipov(Autor des Themas und Autor der Initiative) erklärt: "Ich möchte, dass es so ist, aber im Moment brauche ich Hibou". Und kleine/einvernehmliche Korrekturen von uns armen Leuten :-) Denn er ist derjenige, der weiß, worum es bei der ganzen Idee geht.

Ich für meinen Teil bin mir über den Zweck vieler Klassen nicht im Klaren, aber das ist mein Problem...

Sie müssen die Sache in die kompakteste Form bringen - Sie haben eine verständliche Antwort und einen schönen Fluss, und Sie haben die Fehler gelöst. Sie können Hunderte von Hierarchien von Klassen und Methoden haben :-)

Grund der Beschwerde: