//Universe Code AddUniverse(coarse => { return (from cf in coarse // grab th SelectionData instance for this symbol let avg = _averages.GetOrAdd(cf.Symbol, sym => new SelectionData(fast, intermediate, slow)) // Update returns true when the indicators are ready, so don't accept until they are where avg.Update(cf.EndTime, cf.AdjustedPrice) // only pick symbols who have their fast ema over their intermediateema where avg.Fast > avg.Intermediate*(1 + Tolerance) //only pick symbolaa who have their intermediate ema over their slow ema where avg.Intermediate > avg.Slow*(1 + Tolerance) // prefer symbols with a larger delta by percentage between the two averages where cf.Price > 10 where cf.Volume > 1000*1000 orderby avg.ScaledDelta descending // we only need to return the symbol and return 'Count' symbols select cf.Symbol).Take(Count); }); //Selection Data public class SelectionData { public readonly ExponentialMovingAverage Fast; public readonly ExponentialMovingAverage Intermediate; public SelectionData(int fast, int intermediate) { Fast = new ExponentialMovingAverage(fast); Intermediate = new ExponentialMovingAverage(intermediate); } // computes an object score of how much large the fast is than the slow public decimal ScaledDelta { get { return (Fast - Intermediate)/((Fast + Intermediate)/2m); } } public bool Update(DateTime time, decimal value) { return Fast.Update(time, value) && Intermediate.Update(time, value); // && Slow.Update(time, value); } } }

Trying to create a Universe with EMA, Volume, and Price restrictions as above, but no data is being pumped to OnData. 

Author