public void AddAlphaModel(Language language) { IAlphaModel model; IAlphaModel model2 = null; IAlphaModel model3 = null; if (!TryCreateModel(language, out model) || !TryCreateModel(language, out model2) || !TryCreateModel(language, out model3)) { Assert.Ignore($"Ignore {GetType().Name}: Could not create {language} model."); } // Set the alpha model Algorithm.SetAlpha(model); Algorithm.AddAlpha(model2); Algorithm.AddAlpha(model3); Algorithm.SetUniverseSelection(new ManualUniverseSelectionModel()); var changes = new SecurityChanges(AddedSecurities, RemovedSecurities); Algorithm.OnFrameworkSecuritiesChanged(changes); var actualInsights = new List <Insight>(); Algorithm.InsightsGenerated += (s, e) => actualInsights.AddRange(e.Insights); var expectedInsights = ExpectedInsights().ToList(); var consolidators = Algorithm.Securities.SelectMany(kvp => kvp.Value.Subscriptions).SelectMany(x => x.Consolidators); var slices = CreateSlices(); foreach (var slice in slices.ToList()) { Algorithm.SetDateTime(slice.Time); foreach (var symbol in slice.Keys) { var data = slice[symbol]; Algorithm.Securities[symbol].SetMarketPrice(data); foreach (var consolidator in consolidators) { consolidator.Update(data); } } Algorithm.OnFrameworkData(slice); } Assert.AreEqual(expectedInsights.Count * 3, actualInsights.Count); for (var i = 0; i < actualInsights.Count; i = i + 3) { var expected = expectedInsights[i / 3]; for (int j = i; j < 3; j++) { var actual = actualInsights[j]; Assert.AreEqual(expected.Symbol, actual.Symbol); Assert.AreEqual(expected.Type, actual.Type); Assert.AreEqual(expected.Direction, actual.Direction); Assert.AreEqual(expected.Period, actual.Period); Assert.AreEqual(expected.Magnitude, actual.Magnitude); Assert.AreEqual(expected.Confidence, actual.Confidence); } } }