Binance коннектор, проблемы с соединением и производительностью.


Binance коннектор, проблемы с соединением и производительностью.
Atom
04.04.2021


Добрый день!
У кого-нибудь есть такие проблемы?
1. Соединение со стаканом отваливается раз в несколько минут и сразу же восстанавливается, записав ошибку в лог. Картинка с ошибками в логе прилагается.
2. Соединение с тиками периодически отваливается, а после восстановления теряет тики. Картинка, где пропущено 15 минут прилагается.
3. Получение тиковых данных и построение свечей доходит до состояния риал-тайм только на вторые сутки. До этого свечи строятся с задержкой от нескольких минут до нескольких десятков минут. Картинка с текущей свечой и текущим временем прилагается.
image2473.pngimage8425.png
image2473.png 73 KB (653) image8425.png 332 KB (648)



Спасибо:


Sprite

Фотография
Дата: 05.04.2021
Ответить


4. Периодически появляются сбои, при которых строятся свечи в несколько раз больше реальных. На картинке слева свечи в приложении стокшарп, справа на сайте Binance. Две свечи в приложении стокшарп, отмеченные стрелочками, построены на несуществующих трейдах явно вне спреда.
image5514.png
image5514.png 54 KB (649)
Спасибо:

Sprite

Фотография
Дата: 15.04.2021
Ответить


1. Кто-нибудь использует Binance коннектор и не испытывает задержки при построении свечей, построенных на трейдах (BuildCandlesFrom2 = DataType.Ticks)?

2. Может быть разработчики прокомментируют? Невозможно же пользоваться коннектором. Ведь если строить свечи по трейдам, а не получать готовые, то мы никогда не увидим актуальные рыночные данные. Насколько я понимаю коннектор при подключении начинает в порядке очереди обрабатывать получаемые трейды и строит по ним свечи. А так как в этом процессе он никогда не успевает дойти до состояния "обработан последний трейд и этот же трейд обработан при построении текущей свечи", то свечи постоянно формируются с задержкой в несколько минут.

3. Есть планы по исправлению постоянных обрывов с сокетом, получающим стаканы?
Лог ошибки:
Спасибо:

Юрий Басангов

Фотография
Дата: 19.04.2021
Ответить


Добрый день, вы все эти ошибки получаете, используя коннектор с собственным приложением?
Чтобы подтвердить/опровергнуть факт наличия ошибки пожалуйста возьмите наш пример SampleConnection из S#.API (установить можно Инсталлером).
Если вы получите подобные ошибки на нашем примере, то присылайте логи и информацию о том, как воспроизвести.
Спасибо:

Sprite

Фотография
Дата: 19.04.2021
Ответить


Юрий Басангов Перейти
Добрый день, вы все эти ошибки получаете, используя коннектор с собственным приложением?
Чтобы подтвердить/опровергнуть факт наличия ошибки пожалуйста возьмите наш пример SampleConnection из S#.API (установить можно Инсталлером).
Если вы получите подобные ошибки на нашем примере, то присылайте логи и информацию о том, как воспроизвести.


Добрый день!

Проверил на вашем примере SampleConnectionWithStorage (единственное что поменял в примере - это способ получения маркет данных с таймфрейм свечей на тики). Действительно, всё работает корректно, т.е. соединение со стаканами не отваливается и свечи строятся из тиков синхронно с текущими данными.

Однако я проверял с условием загрузки данных за последние 5 минут т.е.
вот тут
https://github.com/Stock...tiesWindow.xaml.cs#L454
заменил на
var mdMsg = new MarketDataMessage
{
SecurityId = security.ToSecurityId(),
IsSubscribe = true,
DataType2 = DataType.TimeFrame(TimeSpan.FromSeconds(130)),
From = DateTimeOffset.Now.AddMinutes(-5),
To = settings.To,
BuildMode = settings.BuildMode,
BuildFrom = DataType.Ticks,
Skip = settings.Skip,
Count = settings.Count,
};

Потому что если закачивать данные за день или больше (собственно в вашем примере можно выбрать дату закачки данных минимум в день), то вот именно тогда и проявляется то, что я принял за задержку в обработке актуальных данных.
Т.е. есть если мы запустим коннектор с подпиской даты например за неделю, то коннектор начинает скачивать исторические тики и их обрабатывать так медленно, что кажется что он завис.
Собственно я это понял когда ожидание изменения подписки на тики за неделю с Active до Online у меня заняло порядка 4-х часов так и не дойдя до онлайн, после чего я увидел записи в логе, всё выключил и задал 5 минут.

Вот так выглядит лог получения данных за 5 минут:

Binance (Subscription) 18.04.2021 19:53:15 +03:00 Info Subscription 71525669 Stopped->Active.
Binance (PartialDownload) 18.04.2021 19:53:15 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:47:30 +00:00-
Binance (SubscriptionOnline) 18.04.2021 19:53:15 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525670,Cnt=1000,From=19.04.2021 16:47:30 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:53:22 +03:00 Info Partial 71525670 finished.
Binance (PartialDownload) 18.04.2021 19:53:24 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:47:55 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:53:24 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525672,Cnt=1000,From=19.04.2021 16:47:55 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:53:32 +03:00 Info Partial 71525672 finished.
Binance (PartialDownload) 18.04.2021 19:53:34 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:48:22 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:53:34 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525674,Cnt=1000,From=19.04.2021 16:48:22 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:53:41 +03:00 Info Partial 71525674 finished.
Binance (PartialDownload) 18.04.2021 19:53:43 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:48:56 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:53:43 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525677,Cnt=1000,From=19.04.2021 16:48:56 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:53:50 +03:00 Info Partial 71525677 finished.
Binance (PartialDownload) 18.04.2021 19:53:52 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:49:27 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:53:52 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525679,Cnt=1000,From=19.04.2021 16:49:27 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:00 +03:00 Info Partial 71525679 finished.
Binance (PartialDownload) 18.04.2021 19:54:02 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:49:43 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:02 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525681,Cnt=1000,From=19.04.2021 16:49:43 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:09 +03:00 Info Partial 71525681 finished.
Binance (PartialDownload) 18.04.2021 19:54:11 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:50:03 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:11 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525683,Cnt=1000,From=19.04.2021 16:50:03 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:19 +03:00 Info Partial 71525683 finished.
Binance (PartialDownload) 18.04.2021 19:54:21 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:50:20 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:21 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525685,Cnt=1000,From=19.04.2021 16:50:20 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:28 +03:00 Info Partial 71525685 finished.
Binance (PartialDownload) 18.04.2021 19:54:30 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:50:38 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:30 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525687,Cnt=1000,From=19.04.2021 16:50:38 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:37 +03:00 Info Partial 71525687 finished.
Binance (PartialDownload) 18.04.2021 19:54:39 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:51:03 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:39 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525688,Cnt=1000,From=19.04.2021 16:51:03 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:47 +03:00 Info Partial 71525688 finished.
Binance (PartialDownload) 18.04.2021 19:54:49 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:51:17 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:49 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525691,Cnt=1000,From=19.04.2021 16:51:17 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:54:56 +03:00 Info Partial 71525691 finished.
Binance (PartialDownload) 18.04.2021 19:54:58 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:51:39 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:54:58 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525693,Cnt=1000,From=19.04.2021 16:51:39 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:05 +03:00 Info Partial 71525693 finished.
Binance (PartialDownload) 18.04.2021 19:55:07 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:52:05 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:07 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525695,Cnt=1000,From=19.04.2021 16:52:05 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:15 +03:00 Info Partial 71525695 finished.
Binance (PartialDownload) 18.04.2021 19:55:17 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:52:25 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:17 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525697,Cnt=1000,From=19.04.2021 16:52:25 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:24 +03:00 Info Partial 71525697 finished.
Binance (PartialDownload) 18.04.2021 19:55:26 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:52:35 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:26 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525699,Cnt=1000,From=19.04.2021 16:52:35 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:33 +03:00 Info Partial 71525699 finished.
Binance (PartialDownload) 18.04.2021 19:55:35 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:52:49 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:35 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525700,Cnt=1000,From=19.04.2021 16:52:49 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:43 +03:00 Info Partial 71525700 finished.
Binance (PartialDownload) 18.04.2021 19:55:45 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:53:12 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:45 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525703,Cnt=1000,From=19.04.2021 16:53:12 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:49 +03:00 Info Partial 71525703 finished.
Binance (PartialDownload) 18.04.2021 19:55:51 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: 19.04.2021 16:53:19 +00:00-19.04.2021 19:53:19 +03:00
Binance (SubscriptionOnline) 18.04.2021 19:55:51 +03:00 Info In: MarketData,T(L)=2021.04.18 19:53:15.502,Sec=BTCUSDT_PERPETUAL@BNB,DataType=Тики,IsSubscribe=True,TransId=71525705,Cnt=1000,From=19.04.2021 16:53:19 +00:00,To=19.04.2021 19:53:19 +03:00,SmallTF=True
Binance (PartialDownload) 18.04.2021 19:55:55 +03:00 Info Partial 71525705 finished.
Binance (PartialDownload) 18.04.2021 19:55:57 +03:00 Info Downloading BTCUSDT_PERPETUAL@BNB/Тики: -
Binance (PartialDownload) 18.04.2021 19:55:57 +03:00 Info Downloading 71525669 is online.

Итак, что для меня в итоге выяснилось:
1. Коннектор работает как заявлено, однако переход из режима скачивания и обработки истории в режим онлайн может занять очень много времени. Видимо на рынках, которые работают круглосуточно нужно без перерыва выкачивать маркет данные, чтобы минимизировать коннектору время перехода в онлайн.
2. Проблему выше я увидел и понял её причину только запустив отдельно пример с коннектором так как у себя я запускал тест коннектора во втором экземпляре своего приложения (с уже одним работающим), а в этом случае во втором приложении в окно логов ничего не пишется и не понятно что происходит. Прилагаю картинку с запущенными двумя экземплярами SampleConnectionWithStorage, где в логах второго приложения пусто, хотя там должны быть сообщения.
image3233.png 180 KB (213)
Спасибо:

Sprite

Фотография
Дата: 19.04.2021
Ответить



image4548.png
image4548.png 180 KB (625)
Спасибо:

Юрий Басангов

Фотография
Дата: 20.04.2021
Ответить


Добрый день,
1) получение и обработка тиков за неделю это действительно достаточно длительный процесс. для разных инструментов по разному, для очень ликвидных — тиков может быть очень много. Кроме того, остается открытым вопрос, что именно тормозит, сам коннектор, или скорость, с которой сервер отдает исторические тики.
В идеале, нужно получать исторические свечи, а потом достраивать их тиками, но у вас нестандартный таймфрейм, поэтому получать свечи не получится.
Поэтому, рекомендация такая: сделать отдельную функцию/утилиту или используйте S#.Data которая будет получать исторические данные, формировать из них свечи и сохранять их в локальное хранилище, а основное приложение будет получать сохраненные свечи из локального хранилища, после чего подписываться на тики в коннекторе и достраивать свечи из тиков.

2) вы запустили 2 экземпляра приложения из одной и той же папки, поэтому есть конфликт записи логов. Для параллельного запуска нужно скопировать приложение в другую папку и второй экземпляр запускать из нее, тогда конфликта не будет.
Спасибо:

Sprite

Фотография
Дата: 20.04.2021
Ответить


Юрий Басангов Перейти
Добрый день,
1) получение и обработка тиков за неделю это действительно достаточно длительный процесс. для разных инструментов по разному, для очень ликвидных — тиков может быть очень много. Кроме того, остается открытым вопрос, что именно тормозит, сам коннектор, или скорость, с которой сервер отдает исторические тики.

Сервер точно не тормозит, коннектор на вашем примере тоже не тормозит. Судя по всему тормозит моё приложение, буду разбираться.

Юрий Басангов Перейти
В идеале, нужно получать исторические свечи, а потом достраивать их тиками, но у вас нестандартный таймфрейм, поэтому получать свечи не получится.
Поэтому, рекомендация такая: сделать отдельную функцию/утилиту или используйте S#.Data которая будет получать исторические данные, формировать из них свечи и сохранять их в локальное хранилище, а основное приложение будет получать сохраненные свечи из локального хранилища, после чего подписываться на тики в коннекторе и достраивать свечи из тиков.

Да, я так и делаю, просто на рынках с клирингом я это делаю во время клиринга, в крипте же видимо надо параллельно постоянно выкачивать маркет данные. Таймфрейм взял просто для примера, не кратный минуткам, чтобы коннектор точно не скачивал из веб-сокета с готовыми свечами. Но смысл для меня тот же, так как я строю и сохраняю свои типы свечей.

Юрий Басангов Перейти
2) вы запустили 2 экземпляра приложения из одной и той же папки, поэтому есть конфликт записи логов. Для параллельного запуска нужно скопировать приложение в другую папку и второй экземпляр запускать из нее, тогда конфликта не будет.

Понял, огромное спасибо, так и буду делать, а то постоянно мучила эта беда.

И еще не совсем в тему - у меня закончился триал, я могу заказать новый или на один аккаунт возможен только один триал?
Спасибо:

Юрий Басангов

Фотография
Дата: 21.04.2021
Ответить


Добрый день, триальный период предоставляется единоразово, чтобы вы могли до покупки попробовать работу с коннектором.
Если вам все устраивает, то дальше начинается период платного использования, если нет, то вы его просто не покупаете.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy