Esempio n. 1
0
 /// <summary>
 /// получить список отложенных ордеров
 /// </summary>
 public RequestStatus GetPendingOrders(int accountId, out List <PendingOrder> orders)
 {
     orders = new List <PendingOrder>();
     try
     {
         using (var ctx = DatabaseContext.Instance.Make())
         {
             var pendingOrders = from ord in ctx.PENDING_ORDER
                                 where ord.AccountID == accountId
                                 select ord;
             // ReSharper disable LoopCanBeConvertedToQuery
             foreach (var ord in pendingOrders) // нельзя рефакторить
             // ReSharper restore LoopCanBeConvertedToQuery
             {
                 orders.Add(LinqToEntity.DecoratePendingOrder(ord));
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error("Ошибка при получении списка отложенных ордеров", ex);
         return(RequestStatus.ServerError);
     }
     return(RequestStatus.OK);
 }
        /// <summary>
        /// проверить SL, TP, трейлинги
        /// </summary>
        private void CheckOrders()
        {
            if (!WorkingDay.Instance.IsWorkingDay(DateTime.Now))
            {
                return;
            }

            var curPrices = QuoteStorage.Instance.ReceiveAllData();

            try
            {
                using (var ctx = DatabaseContext.Instance.Make())
                {
                    // позиции
                    foreach (var order in ctx.POSITION)
                    {
                        if ((PositionState)order.State != PositionState.Opened)
                        {
                            continue;
                        }
                        try
                        {
                            tradeManager.CheckOrder(LinqToEntity.DecorateOrder(order), curPrices);
                        }
                        catch (Exception ex)
                        {
                            Logger.Error("AccountCheckStream.CheckOrder() error", ex);
                        }
                    }

                    // отложенные ордера
                    foreach (var order in ctx.PENDING_ORDER)
                    {
                        try
                        {
                            tradeManager.CheckPendingOrder(LinqToEntity.DecoratePendingOrder(order), curPrices);
                        }
                        catch (Exception ex)
                        {
                            Logger.Error("AccountCheckStream.CheckPendingOrder() error", ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка в CheckOrders()", ex);
            }
        }