Example #1
0
            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);
            }
Example #2
0
            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));
 }