/// <inheritdoc /> public override ResponseObject CancelOrder(TradingPair pair, long orderId) { if (!WatchList.ContainsKey(orderId)) { throw new InvalidStateException($"Cannot cancel order {orderId} because it doesn't exist."); } var order = WatchList[orderId]; order.Status = OrderUpdate.OrderStatus.Cancelled; order.FilledTimestamp = Timer.CurrentTime.ToUnixTimeMilliseconds(); WatchList.Remove(order.OrderId); // Add to order cache to confirm cancelled. _orderCache.Enqueue(order); // Add cancelled order to the logger LogOrder(order); return(new ResponseObject(ResponseCode.Success)); }