private void HandleCancel(Order order)
{
if (this.summariesByOrderId[order.Id] != null && IsOrderDone(this.summariesByOrderId[order.Id].OrdStatus))
{
this.ExecOrderCancelReject(order, "Order already done");
return;
}
this.ordersByInstrumentId[order.Instrument.Id].Remove(order);
var report = new ExecutionReport
{
DateTime = this.framework.Clock.DateTime,
Order = order,
OrderId = order.Id,
Instrument = order.Instrument,
InstrumentId = order.InstrumentId,
OrdQty = order.Qty,
Price = order.Price,
StopPx = order.StopPx,
TimeInForce = order.TimeInForce,
ExecType = ExecType.ExecCancelled,
OrdStatus = OrderStatus.Cancelled,
CurrencyId = order.Instrument.CurrencyId,
OrdType = order.Type,
Side = order.Side,
CumQty = order.CumQty,
LastQty = 0.0,
LeavesQty = order.LeavesQty,
LastPx = 0.0,
AvgPx = 0.0,
Text = order.Text
};
this.summariesByOrderId[order.Id] = new ReportSummary(report);
EmitExecutionReport(report, Queued);
}