private void HandleOrderResponse(OrderResponse response) { try { foreach (Order o in response.Data) { _orderStatsHandler.HandleOrder(o); } var bs = _orderStatsHandler.GetBindingSource(); _view.bSRCOrders = bs; } catch (Exception exc) { Log.Error(exc.Message); } }
private void HandleOrderResponse(OrderResponse response) { // Continue without action when there is no Data if (response.Data.Count() == 0) { return; } try { // TODO: If error occurs because of access to multiple thread due to account A and B inflow, add mutex here... var acc = (response.Data.First().Account == Accounts[MTAccount.A]) ? ZoneRecoveryAccount.A : ZoneRecoveryAccount.B; List <string> ClOrdIdList = new List <string>(); if (response.Action == BitmexAction.Insert || response.Action == BitmexAction.Partial) { foreach (Order o in response.Data) { _orderStatsHandler.HandleNewOrder(o, acc); ClOrdIdList.Add(o.ClOrdId); } } else if (response.Action == BitmexAction.Update) { foreach (Order o in response.Data) { var statusChanged = _orderStatsHandler.HandleUpdateOrder(o, acc); if (statusChanged) { ClOrdIdList.Add(o.ClOrdId); } } } else if (response.Action == BitmexAction.Delete) { foreach (Order o in response.Data) { _orderStatsHandler.HandleDeleteOrder(o, acc); } } else if (response.Action == BitmexAction.Undefined) { Log.Warning($"HandleOrderResponse: order response "); foreach (Order o in response.Data) { _orderStatsHandler.HandleNewOrder(o, acc); } } // Update the UI var bs = _orderStatsHandler.GetBindingSource(acc); if (acc == ZoneRecoveryAccount.A) { _view.bSRCOrdersA = bs; _view.TabOrdersATitle = $"Orders [{bs.Count.ToString()}]"; } else if (acc == ZoneRecoveryAccount.B) { _view.bSRCOrdersB = bs; _view.TabOrdersBTitle = $"Orders [{bs.Count.ToString()}]"; } // Calculate... if (CalculatorEnabled && ZRCalculator != null && ZRCalculator.SwitchedOn) { Dictionary <string, decimal> dict = _orderBookStatsComputer.GetBidAsk(); if (dict != null) { ZRCalculator.UpdatePrices(dict); } ZRCalculator.Evaluate(acc, ClOrdIdList); } SetZRStats(); } catch (Exception exc) { string message = $"[HandleOrderResponse]: {exc.Message}"; Log.Error(message); Console.WriteLine(message); } }