コード例 #1
0
 private void BeginSaveAribtrageOrder()
 {
     while (m_saveQueue.Count > 0)
     {
         USeArbitrageOrder arbitrageOrder = m_saveQueue.Dequeue();
         Debug.Assert(arbitrageOrder != null);
         try
         {
             m_dataAccessor.SaveUSeArbitrageOrder(arbitrageOrder);
         }
         catch (Exception ex)
         {
             m_eventLogger.WriteError("保存套利单信息失败," + ex.Message);
         }
     }
 }
コード例 #2
0
        public static void TestOrder()
        {
            USeArbitrageOrder order = new USeArbitrageOrder();


            //ArbiOrder基础参数
            order.BrokerId       = "9000";
            order.TraderIdentify = Guid.NewGuid();
            order.Account        = "090952";
            order.State          = ArbitrageOrderState.Closed;
            order.CreateTime     = DateTime.Now;
            order.FinishTime     = DateTime.Now;

            //order.OpenArgument = CreateOpenArg();
            //order.CloseArgument = CreateCloseArg();


            order.CloseTaskGroup = CreateTaskGroup();
            USeDataAccessor dataAccessor = new USeDataAccessor();

            dataAccessor.SaveUSeArbitrageOrder(order);
        }
コード例 #3
0
ファイル: USeManager.cs プロジェクト: handayu/TFS-WebKit
        /// <summary>
        /// 处理异常委托单。
        /// </summary>
        /// <returns></returns>
        private bool PorcessErrorOrderBook()
        {
            //m_checkErrorOrderBook = true;
            //return true;

            string text = string.Empty;

            try
            {
                //1.读取所有未完成套利单信息
                List <USeArbitrageOrder> arbitrageOrderList = m_dataAccessor.GetUnfinishArbitrageOrders(m_loginUser.BrokerId, m_loginUser.Account);
                text = string.Format("读取[{0}]所有未完成套利单信息成功,共计{1}个套利单", m_loginUser, arbitrageOrderList.Count);
                m_eventLogger.WriteInformation(text);

                //2.检查是否有异常套利单
                Dictionary <Guid, ErrorArbitrageOrder> errorArbitrageOrderDic = new Dictionary <Guid, ErrorArbitrageOrder>();
                List <ErrorUSeOrderBook> errorOrderBookList = new List <ErrorUSeOrderBook>();

                foreach (USeArbitrageOrder arbitrageOrder in arbitrageOrderList)
                {
                    ErrorArbitrageOrder errorArbitrageOrder = CheckErrorArbitrageOrder(arbitrageOrder);
                    if (errorArbitrageOrder.HasError)
                    {
                        errorArbitrageOrderDic.Add(arbitrageOrder.TraderIdentify, errorArbitrageOrder);
                        errorOrderBookList.AddRange(errorArbitrageOrder.ErrorOrderBooks);
                    }
                    if (errorArbitrageOrder.HasChanged)
                    {
                        //有变更先记录到文件
                        m_dataAccessor.SaveUSeArbitrageOrder(errorArbitrageOrder.ArbitrageOrder);
                    }
                }

                text = string.Format("[{0}]有{1}个异常套利单共计{2}条委托回报需人工介入",
                                     m_loginUser, errorArbitrageOrderDic.Count, errorOrderBookList.Count);
                m_eventLogger.WriteError(text);

                //3.人工处理异常套利单
                if (errorOrderBookList.Count > 0)
                {
                    ErrorOrderBookProcessForm errorOrderBookForm = new ErrorOrderBookProcessForm(errorOrderBookList);
                    if (DialogResult.Yes != errorOrderBookForm.ShowDialog())
                    {
                        return(false);
                    }

                    List <ErrorUSeOrderBook> checkBookList = errorOrderBookForm.Result;
                    Debug.Assert(checkBookList.Count == errorOrderBookList.Count);

                    foreach (ErrorUSeOrderBook checkOrderBook in checkBookList)
                    {
                        Debug.Assert(checkOrderBook.OrderBook.IsFinish);
                        ErrorArbitrageOrder errorArbitrageOrder = null;
                        if (errorArbitrageOrderDic.TryGetValue(checkOrderBook.TradeIdentify, out errorArbitrageOrder) == false)
                        {
                            Debug.Assert(false);
                            continue;
                        }
                        OrderBookUpdateResult updateResult = errorArbitrageOrder.ArbitrageOrder.UpdateOrderBook(checkOrderBook.OrderBook);
                        Debug.Assert(updateResult != null);
                        if (updateResult != null)
                        {
                            updateResult.Task.UpdateTaskState();
                            errorArbitrageOrder.ArbitrageOrder.UpdataArbitrageOrderState();
                        }
                    }

                    foreach (ErrorArbitrageOrder errorArbitageOrder in errorArbitrageOrderDic.Values)
                    {
                        m_dataAccessor.SaveUSeArbitrageOrder(errorArbitageOrder.ArbitrageOrder);
                    }
                }

                m_checkErrorOrderBook = true;
                return(true);
            }
            catch (Exception ex)
            {
                text = "异常单处理失败," + ex.Message;
                m_eventLogger.WriteError(text);
                throw new ApplicationException(text);
            }
        }