Websocketはどのように? - ページ 19

 
Renat Fatkhullin:

いいえ、それは同期オブジェクトです。

mqlで非同期を実現するための機能を考えていると書いてあったはずですが。
OnSocket イベントもそこに割り当てることができるかも

 
Renat Fatkhullin:

いいえ、それは同期オブジェクトです。

また、ソケットのイベントハンドラを持つことで、タイマーによる連続ポールをする必要がないことも支持します。開発者はもっとエレガントに実装できるはずです。

 
Maxim Kuznetsov:

Maximさん、Websocketを扱って いるので、プロジェクトでwss://api.huobi.pro/wsソケットに追加パラメータなしで接続してみてくれませんか?

目的は、C#で使っているライブラリかどうかを調べることです。

IMHOは、どのような場合でも、追加のパラメータなしで、サイトを通じてと同様に、ソケットを開く必要があります。

 
Fedor Arkhipov:

Maximさん、Websocketを扱っているので、プロジェクトでwss://api.huobi.pro/wsソケットに追加パラメータなしで接続してみてくれませんか?

目的は、C#で使っているライブラリかどうかを調べることです。

IMHOのソケットは、どんな場合でも、追加のパラメータなしで、サイトを通じてだけでなく、開く必要があります。

ソケットが開き、サブスクリプションも機能する。

C:\src>tclsh hibou.tcl                                                                                                                                                                                             Socket sock0000000002E8D890                                                                                                                                                                                        Connected :-)

put json:  { "sub": "market.btcusdt.kline.1min", "id": "1122" }

Message binary ▼       «V*ÈÌKW²24µ036µ425657©♣ ´áƒ!▬

Message binary ▼       «VÊLQ²R2442RÒQ*.I,)-♠òó³A¼Ò¤¤TlnbQvj‰^RIriqJ‰^vNf^ªžanf▲PQ      P¹¡©…™±©¥‘©‰‘±a- éÝ×kS

Message binary ▼       MÌÍ

à ►♦àwÙ³ˆëïêÛ´F→‰ÑҘö►òîM Ð∟g>f6ˆ#♦˜o¯)u~ïq]†Î§’kâ8ç

‘D♠ïV♫►„Rs具^ž÷¿òûþ♣¬↨Ã▬È     ¹u♀Jû\t̏ñ‚·¹­µ▼⌂š“q^£C-

Message binary ▼       MÌÍ

ƒ\?↨Òcºà°Ô­´þÇ◄“dHy÷F(4Ǚ™↔Â♦▲–á5ÇÆï-lëØøœS‰œ–T€A[Á“²ú¦œPŠ¬>«¶fð;¤ñOˆ♀ê3▬ðF↑âh↓„\×س%®

­CÈ   Ÿ€NæZ’ÔNôûß@âq|☺œ

のデータが送信されますが、ドキュメントにあるGZでないか、スマートな中国製ヘッダです :-)

圧縮に対応しなければならないのですが、正直言って面倒くさいんです :-)

PSスクリプトを添付して、何もしない行だけ...4から引っ張ることが可能です。

ファイル:
hibou.zip  1 kb
 
Maxim Kuznetsov:

PS これを行うスクリプトを添付します、数行しかありません・・・4から引っ張ってきてください。

ありがとうございました。つまり、C#ライブラリのことですね。

 
Fedor Arkhipov:

ありがとうございました。ということは、C#のライブラリに関することなのでしょう。

まず、hibouは接続にかなり時間がかかり、タイマーがクラッシュすることがあります。また、TLSのバージョンにうるさいです。

 
Fedor Arkhipov:

ありがとうございました。つまり、C#ライブラリのことですね。

いや、図書館自体に問題はないんですよ。時間をかけなければならなかったが、掘り起こした。

指摘されたものを含め、いくつかの例をgithabからダウンロードしましたが、どれもソケットを動作させることはできませんでした。これがさらに混乱を招いた。そして、その理由はブローカーサーバーのセキュリティ証明書の強化であることが判明した。

ソケットのインスタンスで設定を変更します。

Program クラスを若干調整します。


この変更は、サーバーがライブラリにハードコードされるのではなく、Expert Advisorから設定できるようにするために行われました。

その結果


そのため、結果的にライブラリーは非常にワイドなものとなっています。

次に、Fedorとの見積もり通話を添付してみましょう。

この例にはもっと興味を持つ人がいるので、どんどん改良していきましょう。

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

カッコイイ!効いてますね〜。アレクセイ、ありがとうございます。

 

MT4にライブラリを適用してみたところ、EAファイルがエラーなくコンパイルされました。

しかし、これをチャートに貼り付けると、単純な型を返すメソッドを使用した場合、「グローバル初期化に失敗しました」というエラーが発生します。

構造体を取得しようとすると、「無効なex4ファイル(8)」と表示されます。

構造をすべて捨てればうまくいくのでしょうか?

ILやコムポートをいじる必要がある場合にも

 
Fedor Arkhipov:

MT4にライブラリを適用してみたところ、EAファイルがエラーなくコンパイルされました。

しかし、これをチャートに貼り付けると、単純な型を返すメソッドを使用した場合、「グローバル初期化に失敗しました」というエラーが発生します。

で、構造体を取得しようとすると、「無効なex4ファイル(8)

構造を全部捨てれば、うまくいくかもしれない。

C#から4は、別に悲しい曲です。

から5は単純で、内部にシャッフルがあり、そうでなければDLLから文字列が返されないからです。