internal void TraderStatusHandle(TraderStatusData data) { _ordersLock.EnterUpgradeableReadLock(); try { foreach (OrderBase order in data.Orders) { if (!_orders.ContainsKey(order.OrigClientId)) { _ordersLock.EnterWriteLock(); try { _orders.Add(order.OrigClientId, order); } finally { _ordersLock.ExitWriteLock(); } } } foreach (Guid guid in _orders.Keys) { if (_orders[guid].TargetSymbol.MarketId != data.MarketId) { continue; } if (data.Orders.FirstOrDefault(x => x.OrigClientId == guid) is null) { _orders[guid].Status = OrderStatus.StatusUndefined; _orders[guid].OrderChanged(); _orders.Remove(guid); } } } finally { _ordersLock.ExitUpgradeableReadLock(); } }
internal void Update(TraderStatusData data) { Update(data as CommonFields); LastTradePrice = data.LastTradePrice; LastTradeQuantity = data.LastTradeQuantity; Leverage = data.Leverage; PositionContracts = data.PositionContracts; PositionLiquidationVolume = data.PositionLiquidationVolume; PositionType = data.PositionType; PositionVolume = data.PositionVolume; TraderBalance2 = data.TraderBalance2; }
private void TraderStatusHandler(TraderStatusData data) { TraderInfo traderInfo = TraderStatistic.Find(x => x.Symbol.Equals(data.Symbol)); if (traderInfo != null) { traderInfo.Update(data); TraderInfoChanged?.Invoke(traderInfo); } _receiver.TraderStatusHandle(data); // Code below is usefull? List <Trade> allTrades = new List <Trade>(); foreach (Trade trade in data.Trades) { trade.Symbol = data.Symbol; allTrades.Add(trade); } NewTrades?.Invoke(new List <Trade>(), allTrades); }