Ejemplo n.º 1
0
        public static List<PendingOrderSummary> GetPendingOrderSummary(List<PendingOrder> orders)
        {
            var summary = new List<PendingOrderSummary>();
            var symbols = orders.Select(o => o.Symbol).Distinct();

            foreach (var symbol in symbols)
            {
                float sumBuys = 0, sumSell = 0;
                var sum = new PendingOrderSummary { symbol = symbol, orders = new List<PendingOrder>() };
                var curSymbol = symbol;
                var sumDeals = orders.FindAll(o => o.Symbol == curSymbol);
                foreach (var sumDeal in sumDeals)
                {
                    sum.orders.Add(sumDeal);
                    sum.exposition += (int)(sumDeal.Side * sumDeal.Volume);

                    if (sumDeal.Side > 0)
                        sumBuys += sumDeal.Volume * sumDeal.PriceFrom;
                    else
                        sumSell += sumDeal.Volume * sumDeal.PriceFrom;
                }
                sum.averagePrice = sum.exposition == 0 ? 0 : (sumBuys - sumSell) / sum.exposition;
                // вычисляю хеш
                sum.hashCode = 0;
                foreach (var order in sumDeals)
                    sum.hashCode += order.PriceFrom * 1000 + (order.TakeProfit ?? 0) * 10 + (order.StopLoss ?? 0) * 10;
                summary.Add(sum);
            }
            return summary;
        }
Ejemplo n.º 2
0
        public static List <PendingOrderSummary> GetPendingOrderSummary(List <PendingOrder> orders)
        {
            var summary = new List <PendingOrderSummary>();
            var symbols = orders.Select(o => o.Symbol).Distinct();

            foreach (var symbol in symbols)
            {
                float sumBuys = 0, sumSell = 0;
                var   sum = new PendingOrderSummary {
                    symbol = symbol, orders = new List <PendingOrder>()
                };
                var curSymbol = symbol;
                var sumDeals  = orders.FindAll(o => o.Symbol == curSymbol);
                foreach (var sumDeal in sumDeals)
                {
                    sum.orders.Add(sumDeal);
                    sum.exposition += (int)(sumDeal.Side * sumDeal.Volume);

                    if (sumDeal.Side > 0)
                    {
                        sumBuys += sumDeal.Volume * sumDeal.PriceFrom;
                    }
                    else
                    {
                        sumSell += sumDeal.Volume * sumDeal.PriceFrom;
                    }
                }
                sum.averagePrice = sum.exposition == 0 ? 0 : (sumBuys - sumSell) / sum.exposition;
                // вычисляю хеш
                sum.hashCode = 0;
                foreach (var order in sumDeals)
                {
                    sum.hashCode += order.PriceFrom * 1000 + (order.TakeProfit ?? 0) * 10 + (order.StopLoss ?? 0) * 10;
                }
                summary.Add(sum);
            }
            return(summary);
        }