Websocket comment ? - page 23

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

Vous exprimez donc votre souhait de pouvoir profiter vous-même du processus. Comprenez bien : on ne peut pas demander au serveur un chandelier spécifique, mais seulement une série de chandeliers pour des dates sélectionnées. Pensez donc dans cette direction.

Il serait alors préférable d'écrire les données dans un fichier. Je ne comprends pas comment ajouter un dossier

 
Je l'ai trouvé, je l'ai ajouté
 
Maxim Kuznetsov:

est-il possible d'intervenir ?

Est-ce que personne ne veut faire une classe/interface sur le côté MT au préalable ?

c'est-à-dire donner un cahier des charges spécifique qui soit discuté et applicable.

Commençons :


class Hibou {

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

~Hibou();

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

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

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

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

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

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

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

}

pas peut ! VOUS DEVEZ LE FAIRE ! Plus les parties intéressées s'impliquent, mieux c'est !

Habituellement, les On[Event|Connect|Message] et ainsi de suite sont utilisés pour notifier que l'événement s'est produit, mais nous n'avons pas la possibilité de notifier MT, un tel modèle d'événement n'existe malheureusement pas, nous ne pouvons pas passer de messages à MT((((.

Il ne nous reste donc qu'une méthode d'interrogation périodique de sharp par mql, par exemple par une minuscule minuterie. (((

Et pour que tout se passe correctement... Tous ceux qui ont lu l'aide de mql ont remarqué à plusieurs reprises l'expression "events queue", et les développeurs, y compris Renat, nous disent à chaque étape que tous les événements du terminal sont synchrones et sont traités dans l'ordre de la file d'attente, et que tous les événements du système et du terminal sont placés dans cette même file d'attente et traités séquentiellement. C'est la raison pour laquelle, dans la première édition, j'ai proposé d'utiliser le même mécanisme d'échange : la file d'attente.

 

Connectez la bibliothèque WebSocket4Net des paquets Nuget à notre projet.

Décrivez la classe socket. Ajoutez-y la propriété IsOpen, qui sera responsable du fait que le socket est ouvert.

Pour formaliser légèrement la classe socket, nous écrivons les informations nécessaires à travers les indices de contexte.


Ensuite, nous affinons le gestionnaire global. Dans son constructeur statique, nous allons immédiatement créer une instance de la socket, afin de ne pas l'oublier.


J'ai écouté Maxim et ajouté au gestionnaire global la méthode de connexion à un courtier spécifique. Il sera pratique en cas de développement pour d'autres courtiers.

Nous affinons le web-socket et créons des gestionnaires d'événements pour le socket lui-même.


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


J'ai écouté Maxim et ajouté une méthode de connexion spécifique au courtier dans le gestionnaire global. Ce serait bien s'il y avait un développement pour d'autres courtiers.

vous avez dû écouter avec votre troisième œil :-)

 
Maxim Kuznetsov:

vous avez dû écouter avec votre troisième œil :-)

Max, vous avez suggéré de créer une classe, mais nous avons la classe GlobalManager pour les méthodes générales et je ne vois pas l'intérêt de créer une classe spécifique distincte.

Quant à l'interface vers MT, nous aurons la classe ConnectorMQL, lorsque nous testerons toutes nos méthodes en mode console.

Si je me trompe, corrigez-moi, essayez de présenter votre point de vue différemment, ne tirez pas de conclusions hâtives.

P.S. Bien sûr, vous pouvez créer non seulement un point d'entrée universel comme ConnectorMQL, mais aussi une classe distincte, HuobiMQL, qui enverra des commandes spécialisées au gestionnaire global.
 
Алексей Барбашин:

Quelque chose que je ne peux pas voir


 
Fedor Arkhipov:

Je ne peux pas le voir.


Il semble bien, il n'est pas souligné. Mais vous devriez mettre un point-virgule à la fin de la ligne.

 

J'ai ajouté un dossier Points et j'y ai créé une classe HuobiMQL.


Dans les événements d'ouverture et de fermeture d'un socket, j'ai ajouté le réglage de la propriété d'état du socket


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

Max, vous avez suggéré de créer une classe, mais nous avons la classe GlobalManager pour les méthodes générales, et je ne vois pas l'intérêt de créer une classe spécifique distincte pour le moment.

Quant à l'interface avec MT, nous aurons la classe ConnectorMQL plus tard, lorsque nous testerons toutes nos méthodes en mode console.

Si je me trompe, corrigez-moi, essayez de présenter votre point de vue un peu différemment, ne tirez pas de conclusions hâtives.

Du côté de la conception : c'est beaucoup plus simple - @Fedor Arkhipov(auteur du sujet et auteur de l'initiative) déclare "Je veux que ce soit comme ça, mais pour l'instant j'ai besoin de Hibou". Et les petites corrections convenues de nous, pauvres gens :-) Parce que c'est lui qui sait de quoi il s'agit.

Pour ma part, je ne comprends pas bien l'objectif de nombreuses classes, mais c'est mon problème...

Vous devez obtenir la chose sous la forme la plus compacte possible - vous avez obtenu une réponse intelligible et un flux agréable, et vous avez résolu les bugs. Vous pouvez avoir des centaines de hiérarchies de classes et de méthodes :-)