/// <summary> /// Displays the range countdown of a bar. /// </summary> /// <returns></returns> public RangeCounter RangeCounter(Data.IDataSeries input, bool countDown) { if (cacheRangeCounter != null) { for (int idx = 0; idx < cacheRangeCounter.Length; idx++) { if (cacheRangeCounter[idx].CountDown == countDown && cacheRangeCounter[idx].EqualsInput(input)) { return(cacheRangeCounter[idx]); } } } lock (checkRangeCounter) { checkRangeCounter.CountDown = countDown; countDown = checkRangeCounter.CountDown; if (cacheRangeCounter != null) { for (int idx = 0; idx < cacheRangeCounter.Length; idx++) { if (cacheRangeCounter[idx].CountDown == countDown && cacheRangeCounter[idx].EqualsInput(input)) { return(cacheRangeCounter[idx]); } } } RangeCounter indicator = new RangeCounter(); indicator.BarsRequired = BarsRequired; indicator.CalculateOnBarClose = CalculateOnBarClose; #if NT7 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256; indicator.MaximumBarsLookBack = MaximumBarsLookBack; #endif indicator.Input = input; indicator.CountDown = countDown; Indicators.Add(indicator); indicator.SetUp(); RangeCounter[] tmp = new RangeCounter[cacheRangeCounter == null ? 1 : cacheRangeCounter.Length + 1]; if (cacheRangeCounter != null) { cacheRangeCounter.CopyTo(tmp, 0); } tmp[tmp.Length - 1] = indicator; cacheRangeCounter = tmp; return(indicator); } }
/// <summary> /// Displays the range countdown of a bar. /// </summary> /// <returns></returns> public RangeCounter RangeCounter(Data.IDataSeries input, bool countDown) { if (cacheRangeCounter != null) for (int idx = 0; idx < cacheRangeCounter.Length; idx++) if (cacheRangeCounter[idx].CountDown == countDown && cacheRangeCounter[idx].EqualsInput(input)) return cacheRangeCounter[idx]; lock (checkRangeCounter) { checkRangeCounter.CountDown = countDown; countDown = checkRangeCounter.CountDown; if (cacheRangeCounter != null) for (int idx = 0; idx < cacheRangeCounter.Length; idx++) if (cacheRangeCounter[idx].CountDown == countDown && cacheRangeCounter[idx].EqualsInput(input)) return cacheRangeCounter[idx]; RangeCounter indicator = new RangeCounter(); indicator.BarsRequired = BarsRequired; indicator.CalculateOnBarClose = CalculateOnBarClose; #if NT7 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256; indicator.MaximumBarsLookBack = MaximumBarsLookBack; #endif indicator.Input = input; indicator.CountDown = countDown; Indicators.Add(indicator); indicator.SetUp(); RangeCounter[] tmp = new RangeCounter[cacheRangeCounter == null ? 1 : cacheRangeCounter.Length + 1]; if (cacheRangeCounter != null) cacheRangeCounter.CopyTo(tmp, 0); tmp[tmp.Length - 1] = indicator; cacheRangeCounter = tmp; return indicator; } }