protected void OnOrderStatus(int orderId, IBOrderStatusReport status) { if (OrderStatus != null) OrderStatus(this, new TWSOrderStatusEventArgs(this) { Status = status, }); if (OrderChanged != null) { OrderRecord or; if (_orderRecords.TryGetValue(orderId, out or)) { OrderChanged(this, new TWSOrderChangedEventArgs(this, or) { ChangeType = IBOrderChangeType.OrderStatus, Status = status, }); } } }
private void ProcessOrderStatus() { var version = _enc.DecodeInt(); var orderId = _enc.DecodeInt(); var status = _enc.DecodeEnum<IBOrderStatus>(); var filled = _enc.DecodeInt(); var remaining = _enc.DecodeInt(); var avgFillPrice = _enc.DecodeDouble(); var permId = (version >= 2) ? _enc.DecodeInt() : 0; var parentId = (version >= 3) ? _enc.DecodeInt() : 0; var lastFillPrice = (version >= 4) ? _enc.DecodeDouble() : 0; var clientId = (version >= 5) ? _enc.DecodeInt() : 0; var whyHeld = (version >= 6) ? _enc.DecodeString() : null; var newStatus = new IBOrderStatusReport { OrderId = orderId, Status = status, Filled = filled, Remaining = remaining, AvgFillPrice = avgFillPrice, PermId = permId, ParentId = parentId, LastFillPrice = lastFillPrice, ClientId = clientId, WhyHeld = whyHeld }; OnOrderStatus(orderId, newStatus); }