/// <summary> /// keltner constructor. /// </summary> /// <param name="initialNextUpdateDateTime"></param> /// <param name="keltnerTradingVariables"></param> /// <param name="marketOpens"></param> /// <param name="marketCloses"></param> public KeltnerIndicatorManager(DateTime initialNextUpdateDateTime, KeltnerTradingVariables keltnerTradingVariables, List <DateTime> marketOpens, List <DateTime> marketCloses) : base() { // Load keltner trading parameters. m_KeltnerTradingVariables = keltnerTradingVariables; m_EMALength = keltnerTradingVariables.EMALength; m_ATRLength = keltnerTradingVariables.ATRLength; m_MOMLength = keltnerTradingVariables.MomentumLength; m_BarUpdateIntervalSecond = keltnerTradingVariables.BarIntervalInSeconds; // Create indicators. m_EMA = new EMA(m_EMASeriesID, m_EMASeriesName, m_EMALength); m_ATR = new ATR(m_ATRSeriesID, m_ATRSeriesName, m_ATRLength); m_MOM = new MOM(m_MOMSeriesID, m_MOMSeriesName, m_MOMLength); this.AddIndicator(m_EMA, m_EMASeriesName); this.AddIndicator(m_ATR, m_ATRSeriesName); this.AddIndicator(m_MOM, m_MOMSeriesName); // Initial setup for the trading indicators. initialNextUpdateDateTime = Functions.GetNextBarUpdateDateTime(initialNextUpdateDateTime, m_BarUpdateIntervalSecond); m_EMA.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses); m_ATR.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses); m_MOM.SetupIndicator(m_BarUpdateIntervalSecond, initialNextUpdateDateTime, marketOpens, marketCloses); }