예제 #1
0
        private async Task ReconnectUserDataWS()
        {
            Log.Debug(">>> !!! USER DATA SOCKET RECONNECTING...");
            // Close socket
            webSocketClient.CloseWebSocketInstance(userSocketID);

            // Re-initialize
            userDATA       = new BinaDataUser();
            OpenBUYorders  = new List <OrderInfo>();
            OpenSELLorders = new List <OrderInfo>();
            StrategyP2.ResetOrderLists();


            // Check and sort currently open orders
            await LoadOpenOrders();

            // Reassign events and re-open WS:
            var userMsgs = new UserDataWebSocketMessages();

            userMsgs.OrderUpdateMessageHandler   += data => userDATA.HandleOrderMessage(data);
            userMsgs.TradeUpdateMessageHandler   += data => userDATA.HandleTradeMessage(data);
            userMsgs.AccountUpdateMessageHandler += data => userDATA.HandleAccountMessage(data);
            userSocketID = await webSocketClient.ConnectToUserDataWebSocket(userMsgs);

            Log.Debug(">>> !!! USER DATA SOCKET RECONNECTED");
        }
예제 #2
0
        public async Task Initialize()
        {
            // CONNECT WS (single or combined) AND SEND TO QUEUE:
            if (SETTINGS.SubSpecificSymbols.Count == 1)
            {
                depthSocketID = webSocketClient.ConnectToDepthWebSocket(SETTINGS.SubSpecificSymbols[0], data => depthDATA.DepthUpdateQueue.Enqueue(data));
            }
            else if (SETTINGS.SubSpecificSymbols.Count > 1)
            {
                var symbols = string.Join(",", SETTINGS.SubSpecificSymbols);
                depthSocketID = webSocketClient.ConnectToDepthWebSocketCombined(symbols, data =>
                {
                    depthDATA.DepthUpdateQueue.Enqueue(new BinanceDepthData()
                    {
                        Symbol         = data.Stream.Split('@')[0].ToUpper(),
                        UpdateId       = data.Data.UpdateId,
                        AskDepthDeltas = data.Data.AskDepthDeltas,
                        BidDepthDeltas = data.Data.BidDepthDeltas
                    });
                });
            }

            // BUILD ORDER BOOK, THEN START DATA UPDATES:
            foreach (string sym in SETTINGS.SubSpecificSymbols)
            {
                await depthDATA.BuildDepthCache(sym);
            }

            depthDATA.StartUpdates();

            //Check and sort currently open orders
            await LoadOpenOrders();

            // Handle UserData WS message events, start UserData WS:
            var userMsgs = new UserDataWebSocketMessages();

            userMsgs.OrderUpdateMessageHandler   += data => userDATA.HandleOrderMessage(data);
            userMsgs.TradeUpdateMessageHandler   += data => userDATA.HandleTradeMessage(data);
            userMsgs.AccountUpdateMessageHandler += data => userDATA.HandleAccountMessage(data);
            userSocketID = await webSocketClient.ConnectToUserDataWebSocket(userMsgs);

            UserWSConnectTime = DateTime.Now;
        }