It appears that I am unable to run live trading for longer than a few seconds at the moment. Each time I am told of excessive memory usage. But, I'm currently not sure how to decrease memory usage any further and keep the strategy. 

I currently have one Selectiondata object being used for every stock, and being filled with data points whenever necessary, and using a minidata object to store the results of selectiondata. The algorithm sacrifices speed for memory, ideally, but it's not saving any memory. It's also so ungodly slow I cannot attach a backtest. If I had to guess, something's wrong with the following code.

		private SelectionData spy;
    	private ConcurrentDictionary<Symbol, miniData> costats = new ConcurrentDictionary<Symbol, miniData>();
    	
    	
    	
    	private class miniData
    	{
    		public decimal ScaledDelta;
    		public Int16 buy;
    		private static SelectionData un = new SelectionData();
    		
    		public miniData(QCAlgorithm algy, Symbol sym)
    		{
    			IEnumerable<TradeBar> bars = algy.History<TradeBar>(sym, 200);
    			foreach(TradeBar bar in bars)
                {
                	un.Update(bar);
                }
    			if(un.slow.IsReady)
    			{
    				buy = un.buy;
    				ScaledDelta = un.ScaledDelta;
    			}
    		}
    		
    		public bool Update(QCAlgorithm algy, Symbol sym)
    		{
    			IEnumerable<TradeBar> bars = algy.History<TradeBar>(sym, 200);
    			foreach(TradeBar bar in bars)
                {
                	un.Update(bar);
                }
    			if(un.slow.IsReady)
    			{
    				buy = un.buy;
    				ScaledDelta = un.ScaledDelta;
    				return true;
    			}
    			return false;
    		}
    	}