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