private void RecalculateSummaryByOrders(ExecuteOrderSummaryItem rangeSummaryItem)
        {
            ExecuteOrderSummaryItem instrumentSummaryItem = this.ExecuteOrderSummaryItems.SingleOrDefault(P => P.Instrument.Id == rangeSummaryItem.Instrument.Id);

             instrumentSummaryItem.Update(rangeSummaryItem, false);

            foreach (ExecuteOrderSummaryItem orderSummaryItem in rangeSummaryItem.ChildSummaryItems)
            {
                if (rangeSummaryItem.MinNumeratorUnit > orderSummaryItem.MinNumeratorUnit)
                {
                    rangeSummaryItem.MinNumeratorUnit = orderSummaryItem.MinNumeratorUnit;
                }
                if (rangeSummaryItem.MaxDenominator < orderSummaryItem.MaxDenominator)
                {
                    rangeSummaryItem.MaxDenominator = orderSummaryItem.MaxDenominator;
                }
                rangeSummaryItem.Update(rangeSummaryItem, true);
            }
        }
        private ExecuteOrderSummaryItem AddRangeSummaryItem(ExecuteOrderSummaryItem instrumentSummaryItem, Order currentOrder, RangeType rangeType, int interval, string rangeValue)
        {
            ExecuteOrderSummaryItem rangeSummaryItem = null;
            InstrumentClient instrument = currentOrder.Transaction.Instrument;
            OrderRange orderRange;
            foreach (ExecuteOrderSummaryItem item in instrumentSummaryItem.ChildSummaryItems)
            {
                if (rangeType == item.OrderRange.RangeType && item.OrderRange.IsRange(interval, rangeValue))
                {
                    rangeSummaryItem = item;
                    break;
                }
            }
            if(rangeSummaryItem == null)
            {
                if(rangeType == RangeType.Time)
                {
                    orderRange = this.GetTimeRange(currentOrder.Transaction.ExecuteTime.Value,interval);
                }
                else
                {
                    orderRange = this.GetPriceRange(currentOrder.ExecutePrice,interval,instrument);
                }
                rangeSummaryItem = new ExecuteOrderSummaryItem(instrument, orderRange);
                this.AddOrderSummaryItem(rangeSummaryItem, currentOrder);

                instrumentSummaryItem.ChildSummaryItems.Add(rangeSummaryItem);
                //instrumentSummaryItem.Update(rangeSummaryItem, true);
                //instrumentSummaryItem.SetAvgPrice();
            }
            return rangeSummaryItem;
        }
 private ExecuteOrderSummaryItem AddInstrumentSummaryItem(InstrumentClient instrument)
 {
     ExecuteOrderSummaryItem summaryItem = this.ExecuteOrderSummaryItems.SingleOrDefault(P => P.Instrument == instrument);
     if (summaryItem == null)
     {
         summaryItem = new ExecuteOrderSummaryItem(instrument);
         this.ExecuteOrderSummaryItems.Add(summaryItem);
     }
     return summaryItem;
 }
 private void AddOrderSummaryItem(ExecuteOrderSummaryItem rangeSummaryItem, Order order)
 {
     ExecuteOrderSummaryItem orderSummaryItem = rangeSummaryItem.ChildSummaryItems.SingleOrDefault(P => P.Id == order.Id.ToString());
     if (orderSummaryItem == null)
     {
         orderSummaryItem = new ExecuteOrderSummaryItem(order);
         rangeSummaryItem.ChildSummaryItems.Add(orderSummaryItem);
         rangeSummaryItem.Update(orderSummaryItem, true);
         rangeSummaryItem.SetAvgPrice();
     }
 }
 internal void Update(ExecuteOrderSummaryItem childItem, bool increase)
 {
     if (increase)
     {
         this._OrderCount++;
         this._BuyLot += childItem._BuyLot;
         this._SellLot += childItem._SellLot;
         this._BuyLotMultiplyAvgPriceSum += childItem._BuyLot * decimal.Parse(childItem._BuyAvgPrice);
         this._SellLotMultiplyAvgPriceSum += childItem._SellLot * decimal.Parse(childItem._SellAvgPrice);
     }
     else
     {
         this._OrderCount--;
         this._BuyLot -= childItem._BuyLot;
         this._SellLot -= childItem._SellLot;
     }
 }