/// <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); } }