public void UpdateOrdTerm(OrderUpd orderexec) { try { Order ord; if (_ordersMap.TryGetValue(orderexec.Orderid, out ord)) { ord.Status = orderexec.Status; ord.Rsn = orderexec.CxlReason; ord.IsActive = false; inactiveOrdBlock.Post(ord); } else if (_ordersMap.TryGetValue(orderexec.RefOrderId, out ord)) { ord.Status = orderexec.Status; ord.IsActive = false; inactiveOrdBlock.Post(ord); } else { //_logger.LogError("MISSING ORDER for cxl." + orderexec.Orderid); //orderExecBufBlock.Post(orderexec); } } catch (Exception ex) { _logger.LogError("Terminate Error:" + ex.Message); } }
public void ProcessOrderExec(OrderUpd ex, Order ord) { ord.AvgPriceCum = ex.ExecPrice; ord.ExecSharesCum = ex.ExecShares; ord.ExecNotl = ex.ExecPrice * ex.ExecShares; ord.Leaves = ord.OrdSize - ex.ExecShares; ord.Status = ex.Status; if (ord.ExecSharesCum == ord.OrdSize || ex.Status == "FILLED") { ord.IsActive = false; inactiveOrdBlock.Post(ord); ord.Status = "FILLED"; } }
public void UpdateExec(OrderUpd orderexec) { try { Order ord; if (_ordersMap.TryGetValue(orderexec.Orderid, out ord)) { ProcessOrderExec(orderexec, ord); } else if (_inactiveOrderMap.TryGetValue(orderexec.Orderid, out ord)) { ProcessOrderExec(orderexec, ord); } else { //orderExecBufBlock.Post(orderexec); _logger.LogError("MISSING ORDER for exec." + orderexec.Orderid); } } catch (Exception ex) { _logger.LogError("Exec Upd Error:" + ex.Message); } }