public override IEnumerable <Order> SplitOrder(Order order) { var totalWeight = InnerPortfolios.Sum(p => p.Value); var orders = InnerPortfolios .Select(p => { var newOrder = order.ReRegisterClone(newVolume: order.Balance); newOrder.Portfolio = p.Key; newOrder.Volume = order.Volume * p.Value / totalWeight; return(newOrder); }) .ToArray(); return(orders); }
public override IEnumerable <Order> SplitOrder(Order order) { var orders = InnerPortfolios .Select(p => { var newOrder = order.ReRegisterClone(newVolume: order.Balance); var price = order.Security.GetCurrentPrice(_strategy, Sides.Buy, MarketPriceTypes.Middle); if (price == null) { return(null); } newOrder.Portfolio = p.Key; newOrder.Volume = p.Key.CurrentValue * p.Value / (decimal)price; return(newOrder); }) .Where(o => o != null) .ToArray(); return(orders); }
private void ExecutedRemove(object sender, ExecutedRoutedEventArgs e) { InnerPortfolios.Remove(SelectedInnerPortfolio); _portfolio.Weights.Remove(SelectedInnerPortfolio); }
private void CanExecuteAdd(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = SelectedAllPortfolio != null && !InnerPortfolios.Contains(SelectedAllPortfolio); }
private void ExecutedAdd(object sender, ExecutedRoutedEventArgs e) { InnerPortfolios.Add(SelectedAllPortfolio); _portfolio.Weights.Add(SelectedAllPortfolio, 1); }
private void ExecutedRemove(object sender, ExecutedRoutedEventArgs e) { var item = (KeyValuePair <Portfolio, decimal>)ListBoxPortfolios.SelectedItem; InnerPortfolios.Remove(item); }
private void ExecutedAdd(object sender, ExecutedRoutedEventArgs e) { InnerPortfolios.Add(new KeyValuePair <Portfolio, decimal>(ComboBoxAllPortfolios.SelectedPortfolio, (decimal)PortfolioWeight.Value)); }