Websocket come? - pagina 23

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

Quindi esprimi come vorresti essere in grado di goderti il processo da solo. Basta capire: non si può chiedere al server una candela specifica, ma solo un intervallo di candele per le date selezionate. Quindi pensa in quella direzione.

Allora sarebbe meglio scrivere i dati in un file. Non capisco come aggiungere una cartella

 
Trovato, aggiunto
 
Maxim Kuznetsov:

è possibile intervenire?

Nessuno vuole fare una classe/interfaccia sul lato MT prima?

cioè dare un ToR specifico che sia discusso e applicabile.

cominciamo:


class Hibou {

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

~Hibou();

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

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

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

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

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

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

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

}

non può! DEVI FARLO! Più parti interessate vengono coinvolte, meglio è!

Di solito On[Event|Connect|Message] e così via sono utilizzati per notificare che l'evento si è verificato, ma non abbiamo la possibilità di notificare MT, un tale modello di evento purtroppo non esiste, non possiamo passare messaggi a MT((((

Quindi ci rimane solo un metodo di polling periodico di sharp da parte di mql, per esempio da un minuscolo timer. (((

E perché tutto avvenga correttamente... Chiunque abbia letto l'aiuto di mql ha notato molte volte l'espressione "coda di eventi", e gli sviluppatori, incluso Renat, ci dicono ad ogni passo che tutti gli eventi del terminale sono sincroni e sono processati in ordine di coda, e tutti gli eventi di sistema e del terminale sono messi in questa stessa coda e processati in modo sequenziale. Questa è la ragione per cui nella prima edizione ho suggerito di usare lo stesso meccanismo di scambio: la coda.

 

Collegare la libreria WebSocket4Net dai pacchetti Nuget al nostro progetto.

Descrivere la classe socket. Aggiungete la proprietà IsOpen, che sarà responsabile del fatto che il socket è aperto.

Formalizzare letteralmente in modo leggero la classe socket, scriviamo le informazioni necessarie attraverso i suggerimenti di contesto.


Successivamente, perfezioniamo il gestore globale. Nel suo costruttore statico creeremo immediatamente un'istanza del socket, per non dimenticarcene.


Ho ascoltato Maxim e ho aggiunto al gestore globale il metodo di connessione a un broker specifico. Sarà conveniente in caso di sviluppo per altri broker.

Stiamo perfezionando il web-socket e creando gestori di eventi per il socket stesso.


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


Ho ascoltato Maxim e ho aggiunto un metodo di connessione specifico per il broker al gestore globale. Sarà conveniente se ci sarà sviluppo per altri broker

devi aver ascoltato con il tuo terzo occhio :-)

 
Maxim Kuznetsov:

devi aver ascoltato con il tuo terzo occhio :-)

Max, hai suggerito di creare una classe, ma abbiamo la classe GlobalManager per i metodi generali e non vedo alcun senso nel creare una classe specifica separata.

Per quanto riguarda l'interfaccia di MT, avremo la classe ConnectorMQL, quando testeremo tutti i nostri metodi in modalità console.

Se ho sbagliato qualcosa, per favore correggetemi, cercate di rendere il vostro punto un po' diverso, non fate conclusioni affrettate.

P.S. Naturalmente, si può fare non solo un punto di ingresso universale come ConnectorMQL, ma in realtà una classe separata HuobiMQL, che invierà comandi specializzati al gestore globale.
 
Алексей Барбашин:

Qualcosa che non posso vedere


 
Fedor Arkhipov:

Non riesco a vederlo.


Sembra a posto, non è sottolineato. Ma dovresti mettere un punto e virgola alla fine della riga.

 

Ho aggiunto una cartella Points e ho creato una classe HuobiMQL in essa


Negli eventi di apertura e chiusura di un socket, ho aggiunto l'impostazione della proprietà di stato del socket


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

Max, hai suggerito di creare una classe, ma abbiamo la classe GlobalManager per i metodi generali, e non vedo ancora il senso di creare una classe specifica separata.

Per quanto riguarda l'interfaccia con MT, avremo la classe ConnectorMQL più tardi, quando testeremo tutti i nostri metodi in modalità console.

Se ho sbagliato qualcosa, correggetemi, cercate di esprimere il vostro punto di vista in modo un po' diverso, non saltate alle conclusioni.

Sul lato del design: è molto più semplice - @Fedor Arkhipov(autore del topic e autore dell'iniziativa) dichiara "voglio che sia così, ma al momento ho bisogno di Hibou". E piccole correzioni concordate da noi poveri :-) Perché è lui che sa di cosa si tratta.

Per quanto mi riguarda non mi è chiaro lo scopo di molte classi, ma questa è la mia lamentela...

Devi ottenere la cosa nella forma più compatta - hai ottenuto una risposta comprensibile e un bel flusso, e hai risolto i bug. Puoi avere centinaia di gerarchie di classi e metodi :-)