Beispiel #1
0
        /// <summary>
        /// Open orders in position management
        /// </summary>
        public bool CancelPending(string openOrderId, out string operationResultMessage)
        {
            ISourceOrderExecution provider = _orderProvider;

            if (provider == null || provider.DefaultAccount == null)
            {
                operationResultMessage = "Position not initialized.";
                return(false);
            }

            Order order = provider.TradeEntities.GetOrderById(openOrderId);

            if (order.State != OrderStateEnum.Submitted)
            {
                operationResultMessage = "Order state not 'submitted', so not able to cancel as a pending order";
                return(false);
            }

            ActiveOrder activeOrder = order as ActiveOrder;

            if (null != activeOrder)
            {
                return(activeOrder.Cancel(out operationResultMessage));
            }

            PassiveOrder passiveOrder = order as PassiveOrder;

            if (null != passiveOrder)
            {
                return(passiveOrder.CloseOrCancel(null, null, out operationResultMessage));
            }

            operationResultMessage = "Not able to cancel order";
            return(false);
        }