public static IStockStrategy CreateStrategy(string name, StockSerie stockSerie, StockOrder lastBuyOrder, bool supportShortSelling)
 {
     IStockStrategy strategy = null;
      try
      {
     if (name.StartsWith("@"))
        return CreateFilteredStrategy(name, stockSerie, lastBuyOrder, supportShortSelling);
     if (strategyList == null)
     {
        GetStrategyList();
     }
     if (strategyList.Contains(name))
     {
        StrategyManager sm = new StrategyManager();
        strategy =
                    (IStockStrategy)
                        sm.GetType().Assembly.CreateInstance("StockAnalyzer.StockStrategyClasses." + name);
        strategy.Initialise(stockSerie, lastBuyOrder, supportShortSelling);
     }
      }
      catch (Exception ex)
      {
     throw new StockAnalyzerException("Failed to create strategy " + name, ex);
      }
      return strategy;
 }
        public static List<string> GetStrategyList()
        {
            if (strategyList == null)
             {
            strategyList = new List<string>();
            StrategyManager sm = new StrategyManager();
            foreach (Type t in sm.GetType().Assembly.GetTypes().Where(t => t.GetInterface("IStockStrategy") != null && !t.IsInterface && !t.IsAbstract))
            {
               strategyList.Add(t.Name);
            }
            strategyList.AddRange(GetFilteredStrategyList(true));
             }

             strategyList.Sort();
             return strategyList;
        }