Websocket как сделать? - страница 19

 
Renat Fatkhullin:

Нет, это синхронный объект.

Вроде вы писали, что планируете некие функции для асинхронности в mql.
Может там и событие OnSocket припишется?

 
Renat Fatkhullin:

Нет, это синхронный объект.

Я тоже поддерживаю наличие обработчика события сокетов чтобы не приходилось по таймеру постоянный опрос делать. Уверен что разработчики могут это реализовать изящнее.

 
Maxim Kuznetsov:

Максим, раз вы занимаетесь Websocket'ами, а вы можете попробовать в вашем проекте подключиться к сокету wss://api.huobi.pro/ws без дополнительных параметров?

Цель - узнать дело в библиотеке которую мы используем в С# или нет.

ИМХО сокет должен открываться в любом случае, так же как и через сайт, без всяких дополнительных параметров.

 
Fedor Arkhipov:

Максим, раз вы занимаетесь Websocket'ами, а вы можете попробовать в вашем проекте подключиться к сокету wss://api.huobi.pro/ws без дополнительных параметров?

Цель - узнать дело в библиотеке которую мы используем в С# или нет.

ИМХО сокет должен открываться в любом случае, так же как и через сайт, без всяких дополнительных параметров.

Сокет открывается, даже подписка срабатывает

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#.

Нет, в самой библиотеке нет проблем. Пришлось потратить время, но раскопал.

Скачал несколько примеров с гитхаба, в том числе и те, на которые указывали, ни в одном из них сокет не заработал. Это еще больше сбило с толку. А причиной оказалось усиление сертификата безопасности на сервере брокера.

Изменяем настройку в экземпляре нашего сокета:

Чуточку корректируем класс Program


такое изменение сделано для того, чтобы сервер не был жестко прописан в библиотеке, а чтобы можно было его из советника задавать

В итоге результат:


Так что в итоге библиотека получилась очень широкоформатной. 

Далее прикрутим с Федором вызов котировок.

Появились еще заинтересованные лица на данный пример, так что продолжим улучшение.

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

Круто! Заработало! Большое спасибо, Алексей!

 

Я попробовал применить библиотеку к МТ4, файл советника компилится без ошибок,

но когда я его прикрепляю к графику получая ошибку "Global initialization failed" если использую метод который возвращает простой тип.

а если пытаюсь получить структуру, то Invalid ex4 file (8)

Может будет работать если выкинуть все структуры

или нужно делать шаманство с IL или com-портами

 
Fedor Arkhipov:

Я попробовал применить библиотеку к МТ4, файл советника компилится без ошибок,

но когда я его прикрепляю к графику получая ошибку "Global initialization failed" если использую метод который возвращает простой тип.

а если пытаюсь получить структуру, то Invalid ex4 file (8)

Может будет работать если выкинуть все структуры

прикручивание C# к 4-ке это отдельная печальная песня, выше по треду про это писали.

к 5-ке просто, там шарп у него внутри, иначе string нельзя было-бы возвращать из dll