Пример #1
0
        /// <summary>
        /// Helper method to determine if the requested quantity is above the algorithm minimum order margin portfolio percentage
        /// </summary>
        /// <param name="model">The buying power model</param>
        /// <param name="security">The security</param>
        /// <param name="quantity">The quantity of shares</param>
        /// <param name="portfolioManager">The algorithm's portfolio</param>
        /// <param name="minimumOrderMarginPortfolioPercentage">Minimum order margin portfolio percentage to ignore bad orders, orders with unrealistic small sizes</param>
        /// <remarks>If we are trading with negative margin remaining this method will return true always</remarks>
        /// <returns>True if this order quantity is above the minimum requested</returns>
        public static bool AboveMinimumOrderMarginPortfolioPercentage(this IBuyingPowerModel model, Security security,
                                                                      decimal quantity, SecurityPortfolioManager portfolioManager, decimal minimumOrderMarginPortfolioPercentage)
        {
            if (minimumOrderMarginPortfolioPercentage == 0)
            {
                return(true);
            }
            var absFinalOrderMargin = Math.Abs(model.GetInitialMarginRequirement(new InitialMarginParameters(
                                                                                     security, quantity)).Value);

            return(AboveMinimumOrderMarginPortfolioPercentage(portfolioManager, minimumOrderMarginPortfolioPercentage, absFinalOrderMargin));
        }
Пример #2
0
 /// <summary>
 /// Gets the margin currently allocated to the specified holding
 /// </summary>
 /// <param name="model">The buying power model</param>
 /// <param name="security">The security</param>
 /// <param name="quantity">The quantity of shares</param>
 /// <returns>The initial margin required for the provided security and quantity</returns>
 public static decimal GetInitialMarginRequirement(this IBuyingPowerModel model, Security security, decimal quantity)
 {
     return(model.GetInitialMarginRequirement(new InitialMarginParameters(security, quantity)));
 }