void order_OrderUpdatedEvent(Order order, Order.UpdateTypeEnum updateType)
 {
     if (OrdersUpdatedEvent != null)
     {
         OrdersUpdatedEvent(this, _provider.DefaultAccount.Info, new Order[] { order }, new Order.UpdateTypeEnum[] { updateType });
     }
 }
Exemple #2
0
 protected void RaiseOrderUpdateEvent(OrderInfo orderInfo, Order.UpdateTypeEnum updateType)
 {
     if (OrdersUpdatedEvent != null)
     {
         OrdersUpdatedEvent(this, _account.Info,
                            new[] { orderInfo.Id }, new[] { orderInfo }, new[] { updateType });
     }
 }
Exemple #3
0
        public bool BeginOrdersInformationUpdate(AccountInfo accountInfo, string[] orderIds, out string operationResultMessage)
        {
            OrderInfo[] ordersInfos;
            if (GetOrdersInformation(accountInfo, orderIds, out ordersInfos, out operationResultMessage))
            {
                Order.UpdateTypeEnum[] ordersUpdates = new Order.UpdateTypeEnum[ordersInfos.Length];
                for (int i = 0; i < ordersUpdates.Length; i++)
                {
                    ordersUpdates[i] = Order.UpdateTypeEnum.Update;
                }

                if (OrdersUpdatedEvent != null)
                {
                    GeneralHelper.FireAndForget(delegate()
                    {
                        OrdersUpdatedEvent(this, accountInfo, orderIds, ordersInfos, ordersUpdates);
                    });
                }
            }

            operationResultMessage = string.Empty;
            return(true);
        }
Exemple #4
0
        /// <summary>
        /// Convert history to order orderInfo.
        /// </summary>
        /// <param name="OrderInfo"></param>
        /// <returns></returns>
        OrderInfo?ConvertToOrderInfo(MbtOrderHistory pHist, out Order.UpdateTypeEnum updateType)
        {
            updateType = Order.UpdateTypeEnum.Update;

            if (string.IsNullOrEmpty(pHist.Event))
            {
                return(null);
            }

            OrderInfo info = new OrderInfo(pHist.Token);

            string eventInfo = pHist.Event.ToLower();

            if (eventInfo.Contains("enter") || (eventInfo.Contains("session") && eventInfo.Contains("open")))
            {// "Enter", "Session open" events skipped.
                return(null);
            }

            if (eventInfo.Contains("live"))
            {
                info.State = OrderStateEnum.Submitted;
            }
            else if (eventInfo.Contains("executed"))
            {
                info.State = OrderStateEnum.Executed;
            }
            else if (eventInfo.Contains("suspended"))
            {
                info.State = OrderStateEnum.Suspended;
            }
            else if (eventInfo == "cancel" ||
                     (eventInfo.Contains("cancel") && eventInfo.Contains("reject")) ||
                     (eventInfo.Contains("order") && eventInfo.Contains("reject")) ||
                     (eventInfo.Contains("order") && eventInfo.Contains("cancel")))
            {// Order Reject or Cancel.
                info.State = OrderStateEnum.Canceled;
                updateType = Order.UpdateTypeEnum.Canceled;
            }
            else if (eventInfo.Contains("suspended"))
            {// Suspended
                info.State = OrderStateEnum.Suspended;
                updateType = Order.UpdateTypeEnum.Modified;
            }

            string eventMessage = pHist.Message;

            Symbol?symbol = TryObtainSymbol(pHist.Symbol);

            if (symbol.HasValue == false)
            {
                return(null);
            }

            info.Tag        = pHist.OrderNumber;
            info.OpenPrice  = (decimal)pHist.Price;
            info.StopLoss   = (decimal)pHist.StopLimit;
            info.TakeProfit = (decimal)pHist.StopLimit;
            info.OpenTime   = ConvertDateTime(pHist.Date + " " + pHist.Time);
            info.Volume     = pHist.Quantity;

            info.Symbol = symbol.Value;

            info.Type = ConvertFromMBTOrderType(pHist.OrderType, pHist.BuySell);
            if (info.Type == OrderTypeEnum.UNKNOWN)
            {
                SystemMonitor.OperationWarning("Failed to recognize order type [" + pHist.OrderType.ToString() + "].");
                //return null;
            }

            return(info);
        }
 /// <summary>
 ///
 /// </summary>
 public void UpdateOrderInfo(AccountInfo account, Order.UpdateTypeEnum updateType, OrderInfo orderInfo)
 {
     UpdateOrdersInfo(account, new Order.UpdateTypeEnum[] { updateType }, new OrderInfo[] { orderInfo });
 }
        public bool BeginOrdersInformationUpdate(AccountInfo accountInfo, string[] orderIds, out string operationResultMessage)
        {
            OrderInfo[] ordersInfos;
            if (GetOrdersInformation(accountInfo, orderIds, out ordersInfos, out operationResultMessage))
            {
                Order.UpdateTypeEnum[] ordersUpdates = new Order.UpdateTypeEnum[ordersInfos.Length];
                for (int i = 0; i < ordersUpdates.Length; i++)
                {
                    ordersUpdates[i] = Order.UpdateTypeEnum.Update;
                }

                if (OrdersUpdatedEvent != null)
                {
                    GeneralHelper.FireAndForget(delegate()
                    {
                        OrdersUpdatedEvent(this, accountInfo, orderIds, ordersInfos, ordersUpdates);
                    });
                }
            }

            operationResultMessage = string.Empty;
            return true;
        }