Ejemplo n.º 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);
            }
Ejemplo n.º 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);
            }