← Zurück

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

Добрый день! У кого-нибудь есть такие проблемы?

  1. Соединение со стаканом отваливается раз в несколько минут и сразу же восстанавливается, записав ошибку в лог. Картинка с ошибками в логе прилагается.
  2. Соединение с тиками периодически отваливается, а после восстановления теряет тики. Картинка, где пропущено 15 минут прилагается.
  3. Получение тиковых данных и построение свечей доходит до состояния риал-тайм только на вторые сутки. До этого свечи строятся с задержкой от нескольких минут до нескольких десятков минут. Картинка с текущей свечой и текущим временем прилагается. image2473.pngimage8425.png

War dieses Thema hilfreich?

Thema teilen

Kommentare (8)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Sprite
Sprite Autor
  1. Периодически появляются сбои, при которых строятся свечи в несколько раз больше реальных. На картинке слева свечи в приложении стокшарп, справа на сайте Binance. Две свечи в приложении стокшарп, отмеченные стрелочками, построены на несуществующих трейдах явно вне спреда. image5514.png
Sprite
Sprite Autor
  1. Кто-нибудь использует Binance коннектор и не испытывает задержки при построении свечей, построенных на трейдах (BuildCandlesFrom2 = DataType.Ticks)?

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

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

Binance_PusherClientFutures_MarketData 15.04.2021 15:50:00 +03:00 Error System.AggregateException: One or more errors occurred. (The remote party closed the WebSocket connection without completing the close handshake.) ---> System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake. ---> System.IO.IOException: Unable to read data from the transport connection: Удаленный хост принудительно разорвал существующее подключение.. ---> System.Net.Sockets.SocketException (10054): Удаленный хост принудительно разорвал существующее подключение. at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ReceiveAsync(Socket socket, CancellationToken cancellationToken) at System.Net.Sockets.Socket.ReceiveAsync(Memory1 buffer, SocketFlags socketFlags, Boolean fromNetworkStream, CancellationToken cancellationToken) at System.Net.Sockets.NetworkStream.ReadAsync(Memory1 buffer, CancellationToken cancellationToken) at System.Net.Security.SslStream.FillBufferAsync[TIOAdapter](TIOAdapter adapter, Int32 numBytesRequired) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Security.SslStream.FillBufferAsync[TIOAdapter](TIOAdapter adapter, Int32 numBytesRequired) at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory1 buffer) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory1 buffer) at System.Net.Security.SslStream.ReadAsync(Memory1 buffer, CancellationToken cancellationToken) at System.Net.Http.HttpConnection.ReadBufferedAsyncCore(Memory1 destination) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.HttpConnection.ReadBufferedAsyncCore(Memory1 destination) at System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(Memory1 buffer, CancellationToken cancellationToken) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(Memory1 buffer, CancellationToken cancellationToken) at System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(Int32 minimumRequiredBytes, CancellationToken cancellationToken, Boolean throwOnPrematureClosure) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(Int32 minimumRequiredBytes, CancellationToken cancellationToken, Boolean throwOnPrematureClosure) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsync(ArraySegment1 buffer, CancellationToken cancellationToken) at Ecng.Net.WebSocketClient.OnReceive(CancellationTokenSource source) at Ecng.Net.WebSocketClient.<>c__DisplayClass33_0.<ConnectImpl>b__0() at Ecng.Common.Converter.<>c__DisplayClass22_0.<DoInCulture>b__0() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Action action) at Ecng.Common.Converter.<>c__DisplayClass23_0.<Invariant>b__0() at Ecng.Common.ThreadingHelper.<>c__DisplayClass12_0.<Thread>b__0() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() --- End of stack trace from previous location ---

--- End of inner exception stack trace --- at System.Net.Security.SslStream.FillBufferAsync[TIOAdapter](TIOAdapter adapter, Int32 numBytesRequired) at System.Net.Security.SslStream.ReadAsyncInternal[TIOAdapter](TIOAdapter adapter, Memory1 buffer) at System.Net.Http.HttpConnection.ReadBufferedAsyncCore(Memory1 destination) at System.Net.Http.HttpConnection.RawConnectionStream.ReadAsync(Memory1 buffer, CancellationToken cancellationToken) at System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(Int32 minimumRequiredBytes, CancellationToken cancellationToken, Boolean throwOnPrematureClosure) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter) at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory`1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Ecng.Net.WebSocketClient.OnReceive(CancellationTokenSource source)

Binance_PusherClientFutures_MarketData 15.04.2021 15:50:01 +03:00 Error System.AggregateException: One or more errors occurred. (The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseReceived, CloseSent') ---> System.Net.WebSockets.WebSocketException (0x80004005): The WebSocket is in an invalid state ('Aborted') for this operation. Valid states are: 'Open, CloseReceived, CloseSent' at System.Net.WebSockets.WebSocketValidate.ThrowIfInvalidState(WebSocketState currentState, Boolean isDisposed, WebSocketState[] validStates) at System.Net.WebSockets.ManagedWebSocket.CloseAsync(WebSocketCloseStatus closeStatus, String statusDescription, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at Ecng.Net.WebSocketClient.OnReceive(CancellationTokenSource source) Binance_PusherClientFutures_MarketData 15.04.2021 15:50:01 +03:00 Error Ошибка соединения Binance_PusherClientFutures_MarketData 15.04.2021 15:50:01 +03:00 Info Socket re-connecting 'wss://fstream3.binance.com/stream?streams=btcusdt@depth@0ms'. Binance_PusherClientFutures_MarketData 15.04.2021 15:50:01 +03:00 Info Connecting to wss://fstream3.binance.com/stream?streams=btcusdt@depth@0ms...

William B
William B

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

Sprite
Sprite Autor

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

Добрый день!

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

Однако я проверял с условием загрузки данных за последние 5 минут т.е. вот тут https://github.com/StockSharp/StockSharp/blob/master/Samples/Connectors/SampleConnection/SecuritiesWindow.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, где в логах второго приложения пусто, хотя там должны быть сообщения.
Sprite
Sprite Autor

image4548.png

William B
William B

Добрый день,

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

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

Sprite
Sprite Autor

Юрий Басангов: Добрый день,

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

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

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

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

William B
William B

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