private void RejectOrder(Order order, OrderRejectReason reason, string message, string comment = null) { if (reason != OrderRejectReason.ParentPositionIsNotActive) { foreach (var positionId in order.PositionsToBeClosed) { if (_ordersCache.Positions.TryGetPositionById(positionId, out var position) && position.Status == PositionStatus.Closing) { position.CancelClosing(_dateService.Now()); } } } if (order.OrderType == OrderType.Market || reason != OrderRejectReason.NoLiquidity || order.PendingOrderRetriesCount >= _marginTradingSettings.PendingOrderRetriesThreshold) { order.Reject(reason, message, comment, _dateService.Now()); _orderRejectedEventChannel.SendEvent(this, new OrderRejectedEventArgs(order)); } //TODO: think how to avoid infinite loop else if (!_ordersCache.TryGetOrderById(order.Id, out _)) // all pending orders should be returned to active state if there is no liquidity { order.CancelExecution(_dateService.Now()); _ordersCache.Active.Add(order); _orderChangedEventChannel.SendEvent(this, new OrderChangedEventArgs(order, new OrderChangedMetadata { UpdatedProperty = OrderChangedProperty.None })); } }
private void RejectOrder(Order order, OrderRejectReason reason, string message, string comment = null) { order.CloseDate = DateTime.UtcNow; order.Status = OrderStatus.Rejected; order.RejectReason = reason; order.RejectReasonText = message; order.Comment = comment; _orderRejectedEventChannel.SendEvent(this, new OrderRejectedEventArgs(order)); }
public ValidateOrderException(OrderRejectReason reason, string rejectReasonText, string comment = null) : base(rejectReasonText) { RejectReason = reason; Comment = comment; }
private void FireCreateRejected(Order order, OrderRejectReason reason) { OrderCreateRejected?.Invoke(this, new OrderCreateRejectedEventArgs(order, reason)); }
public Reject(Order order, OrderInfo orderInfo, OrderRejectReason reason) : base(ExecType.Rejected, OrderStatus.Rejected, order, orderInfo) { OrderRejectReason = reason; Text = "lookup table"; }
public OrderCreateRejectedEventArgs(Order order, OrderRejectReason reason) : base(order) { Reason = reason; }