/// <summary> /// Creates a new <see cref="OrderTicket"/> that is invalidated because the algorithm was in the middle of warm up still /// </summary> public static OrderTicket InvalidWarmingUp(SecurityTransactionManager transactionManager, SubmitOrderRequest submit) { submit.SetResponse(OrderResponse.WarmingUp(submit)); var ticket = new OrderTicket(transactionManager, submit); ticket._orderStatusOverride = OrderStatus.Invalid; return(ticket); }
/// <summary> /// Creates a new <see cref="OrderTicket"/> that represents trying to submit a new order that had errors embodied in the <paramref name="response"/> /// </summary> public static OrderTicket InvalidSubmitRequest(SecurityTransactionManager transactionManager, SubmitOrderRequest request, OrderResponse response) { request.SetResponse(response); return(new OrderTicket(transactionManager, request) { _orderStatusOverride = OrderStatus.Invalid }); }
/// <summary> /// Creates a new <see cref="OrderTicket"/> tht represents trying to update an order for which no ticket exists /// </summary> public static OrderTicket InvalidUpdateOrderId(SecurityTransactionManager transactionManager, UpdateOrderRequest request) { var submit = new SubmitOrderRequest(OrderType.Market, SecurityType.Base, string.Empty, 0, 0, 0, DateTime.MaxValue, string.Empty); submit.SetResponse(OrderResponse.UnableToFindOrder(request)); var ticket = new OrderTicket(transactionManager, submit); request.SetResponse(OrderResponse.UnableToFindOrder(request)); ticket.AddUpdateRequest(request); ticket._orderStatusOverride = OrderStatus.Invalid; return(ticket); }
/// <summary> /// Creates a new <see cref="OrderTicket"/> that represents trying to cancel an order for which no ticket exists /// </summary> public static OrderTicket InvalidCancelOrderId(SecurityTransactionManager transactionManager, CancelOrderRequest request) { var submit = new SubmitOrderRequest(OrderType.Market, SecurityType.Base, Symbol.Empty, 0, 0, 0, DateTime.MaxValue, request.Tag); submit.SetResponse(OrderResponse.UnableToFindOrder(request)); submit.SetOrderId(request.OrderId); var ticket = new OrderTicket(transactionManager, submit); request.SetResponse(OrderResponse.UnableToFindOrder(request)); ticket.TrySetCancelRequest(request); ticket._orderStatusOverride = OrderStatus.Invalid; return(ticket); }
/// <summary> /// Add an order to collection and return the unique order id or negative if an error. /// </summary> /// <param name="request">A request detailing the order to be submitted</param> /// <returns>New unique, increasing orderid</returns> public OrderTicket AddOrder(SubmitOrderRequest request) { var response = !_algorithm.IsWarmingUp ? OrderResponse.Success(request) : OrderResponse.WarmingUp(request); request.SetResponse(response); var ticket = new OrderTicket(_algorithm.Transactions, request); _orderTickets.TryAdd(ticket.OrderId, ticket); // send the order to be processed after creating the ticket if (response.IsSuccess) { _orderRequestQueue.Add(request); } else { // add it to the orders collection for recall later var order = Order.CreateOrder(request); // ensure the order is tagged with a currency var security = _algorithm.Securities[order.Symbol]; order.PriceCurrency = security.SymbolProperties.QuoteCurrency; order.Status = OrderStatus.Invalid; order.Tag = "Algorithm warming up."; ticket.SetOrder(order); _orders.TryAdd(request.OrderId, order); } return ticket; }
/// <summary> /// Add an order to collection and return the unique order id or negative if an error. /// </summary> /// <param name="request">A request detailing the order to be submitted</param> /// <returns>New unique, increasing orderid</returns> public OrderTicket AddOrder(SubmitOrderRequest request) { request.SetResponse(OrderResponse.Success(request), OrderRequestStatus.Processing); var ticket = new OrderTicket(_algorithm.Transactions, request); _orderTickets.TryAdd(ticket.OrderId, ticket); // send the order to be processed after creating the ticket _orderRequestQueue.Enqueue(request); return ticket; }
/// <summary> /// Add an order to collection and return the unique order id or negative if an error. /// </summary> /// <param name="request">A request detailing the order to be submitted</param> /// <returns>New unique, increasing orderid</returns> public OrderTicket AddOrder(SubmitOrderRequest request) { var response = !_algorithm.IsWarmingUp ? OrderResponse.Success(request) : OrderResponse.WarmingUp(request); request.SetResponse(response); var ticket = new OrderTicket(_algorithm.Transactions, request); _orderTickets.TryAdd(ticket.OrderId, ticket); // send the order to be processed after creating the ticket if (response.IsSuccess) { _orderRequestQueue.Enqueue(request); } else { // add it to the orders collection for recall later var order = Order.CreateOrder(request); order.Status = OrderStatus.Invalid; order.Tag = "Algorithm warming up."; ticket.SetOrder(order); _orders.TryAdd(request.OrderId, order); } return ticket; }