Example #1
0
        public void TestFilter()
        {
            var orders = MakeOrders();

            var filter = new OrderFilterAndSortOrder
            {
                filterExpertComment = "FX",
                filterTicker        = "USDCAD",
                filterMagic         = 5,
                sortAscending       = false,
                sortByTimeEnter     = true,
                takeCount           = 2
            };

            var filtered = filter.ApplyFilter(orders.AsQueryable()).ToList();

            Assert.AreEqual(2, filtered.Count, "OrderFilterAndSortOrder - должен вернуть ровно 2 записи");
            Assert.AreEqual(2, filtered[0].ID, "OrderFilterAndSortOrder - должны быть отсортированы по убыванию времени входа");
        }
Example #2
0
        public override RequestStatus GetOrdersByFilter(int accountId, bool getClosedOrders, OrderFilterAndSortOrder filter, out List <MarketOrder> orders)
        {
            var listPos = getClosedOrders ? posHistory : positions;

            orders = filter.ApplyFilter(listPos.AsQueryable()).ToList();
            return(RequestStatus.OK);
        }
Example #3
0
 public abstract RequestStatus GetOrdersByFilter(int accountId, bool getClosedOrders, OrderFilterAndSortOrder filter, out List <MarketOrder> orders);
 public override RequestStatus GetOrdersByFilter(int accountId, bool getClosedOrders, OrderFilterAndSortOrder filter, out List <MarketOrder> orders)
 {
     return(TradeSharpAccount.Instance.proxy.GetOrdersByFilter(accountId, getClosedOrders, filter, out orders));
 }
Example #5
0
        public RequestStatus GetOrdersByFilter(
            int accountId,
            bool getClosedOrders,
            OrderFilterAndSortOrder filter,
            out List <MarketOrder> orders)
        {
            using (var ctx = DatabaseContext.Instance.Make())
            {
                try
                {
                    if (getClosedOrders)
                    {
                        var positions = from pos in ctx.POSITION_CLOSED
                                        where
                                        pos.AccountID == accountId &&
                                        (filter.filterMagic == null || filter.filterMagic.Value == pos.Magic) &&
                                        (filter.filterSide == null || filter.filterSide.Value == pos.Side) &&
                                        (string.IsNullOrEmpty(filter.filterComment) ||
                                         pos.Comment.Contains(filter.filterComment)) &&
                                        (string.IsNullOrEmpty(filter.filterExpertComment) ||
                                         pos.ExpertComment.Contains(filter.filterExpertComment)) &&
                                        (string.IsNullOrEmpty(filter.filterTicker) ||
                                         pos.Symbol.Contains(filter.filterTicker)) &&
                                        (filter.filterTimeEnterStartsWith == null ||
                                         pos.TimeEnter >= filter.filterTimeEnterStartsWith.Value) &&
                                        (filter.filterTimeEnterEndsWith == null ||
                                         pos.TimeEnter <= filter.filterTimeEnterEndsWith.Value) &&
                                        (filter.filterTimeExitStartsWith == null ||
                                         pos.TimeExit >= filter.filterTimeExitStartsWith) &&
                                        (filter.filterTimeExitEndsWith == null ||
                                         pos.TimeExit <= filter.filterTimeExitEndsWith)
                                        select pos;
                        positions =
                            (filter.sortAscending
                                 ? positions.OrderBy(p => filter.sortByTimeEnter ? p.TimeEnter : p.TimeExit)
                                 : positions.OrderByDescending(p => filter.sortByTimeEnter ? p.TimeEnter : p.TimeExit))
                            .Take(filter.takeCount);

                        orders = positions.ToList().Select(LinqToEntity.DecorateOrder).ToList();
                    }
                    else
                    {
                        var positions = from pos in ctx.POSITION
                                        where
                                        pos.AccountID == accountId &&
                                        (filter.filterMagic == null || filter.filterMagic.Value == pos.Magic) &&
                                        (filter.filterSide == null || filter.filterSide.Value == pos.Side) &&
                                        (string.IsNullOrEmpty(filter.filterComment) ||
                                         pos.Comment.Contains(filter.filterComment)) &&
                                        (string.IsNullOrEmpty(filter.filterExpertComment) ||
                                         pos.Comment.Contains(filter.filterExpertComment)) &&
                                        (string.IsNullOrEmpty(filter.filterTicker) ||
                                         pos.Comment.Contains(filter.filterTicker)) &&
                                        (filter.filterTimeEnterStartsWith == null ||
                                         pos.TimeEnter >= filter.filterTimeEnterStartsWith.Value) &&
                                        (filter.filterTimeEnterEndsWith == null ||
                                         pos.TimeEnter <= filter.filterTimeEnterEndsWith.Value)
                                        select pos;
                        positions =
                            (filter.sortAscending
                                    ? positions.OrderBy(p => p.TimeEnter)
                                    : positions.OrderByDescending(p => p.TimeEnter))
                            .Take(filter.takeCount);

                        orders = positions.ToList().Select(LinqToEntity.DecorateOrder).ToList();
                    }
                    return(RequestStatus.OK);
                }
                catch (Exception ex)
                {
                    orders = null;
                    Logger.ErrorFormat("Ошибка в GetOrdersByFilter({0}): {1}", accountId, ex);
                    return(RequestStatus.ServerError);
                }
            }
        }