public static List<string> GetMoneyManagementList()
        {
            if (moneyManagementList == null)
            {
                moneyManagementList = new List<string>();
                MoneyManagementManager sm = new MoneyManagementManager();
                foreach (Type t in sm.GetType().Assembly.GetTypes().Where(t => t.GetInterface("IStockMoneyManagement") != null && !t.IsInterface && !t.IsAbstract))
                {
                    moneyManagementList.Add(t.Name);
                }
            }

            moneyManagementList.Sort();
            return moneyManagementList;
        }
 public static IStockMoneyManagement CreateMoneyManagement(string name, StockSerie stockSerie)
 {
     IStockMoneyManagement moneyManagement = null;
     try
     {
         if (moneyManagementList == null)
         {
             GetMoneyManagementList();
         }
         if (moneyManagementList.Contains(name))
         {
             MoneyManagementManager sm = new MoneyManagementManager();
             moneyManagement =
                         (IStockMoneyManagement)
                             sm.GetType().Assembly.CreateInstance("StockAnalyzer.StockStrategyClasses.StockMoneyManagement." + name);
             moneyManagement.Initialise(stockSerie);
         }
     }
     catch (Exception ex)
     {
         throw new StockAnalyzerException("Failed to create money management " + name, ex);
     }
     return moneyManagement;
 }