/// <summary> /// Plots the high and low of a specific, past time range for the current day /// </summary> /// <returns></returns> public HiLoOfTimeRange HiLoOfTimeRange(Data.IDataSeries input, int _StartTimeHr, int _StartTimeMinute, int endTimeHr, int endTimeMinute, bool showCrossingLines) { if (cacheHiLoOfTimeRange != null) { for (int idx = 0; idx < cacheHiLoOfTimeRange.Length; idx++) { if (cacheHiLoOfTimeRange[idx]._StartTimeHr == _StartTimeHr && cacheHiLoOfTimeRange[idx]._StartTimeMinute == _StartTimeMinute && cacheHiLoOfTimeRange[idx].EndTimeHr == endTimeHr && cacheHiLoOfTimeRange[idx].EndTimeMinute == endTimeMinute && cacheHiLoOfTimeRange[idx].ShowCrossingLines == showCrossingLines && cacheHiLoOfTimeRange[idx].EqualsInput(input)) { return(cacheHiLoOfTimeRange[idx]); } } } lock (checkHiLoOfTimeRange) { checkHiLoOfTimeRange._StartTimeHr = _StartTimeHr; _StartTimeHr = checkHiLoOfTimeRange._StartTimeHr; checkHiLoOfTimeRange._StartTimeMinute = _StartTimeMinute; _StartTimeMinute = checkHiLoOfTimeRange._StartTimeMinute; checkHiLoOfTimeRange.EndTimeHr = endTimeHr; endTimeHr = checkHiLoOfTimeRange.EndTimeHr; checkHiLoOfTimeRange.EndTimeMinute = endTimeMinute; endTimeMinute = checkHiLoOfTimeRange.EndTimeMinute; checkHiLoOfTimeRange.ShowCrossingLines = showCrossingLines; showCrossingLines = checkHiLoOfTimeRange.ShowCrossingLines; if (cacheHiLoOfTimeRange != null) { for (int idx = 0; idx < cacheHiLoOfTimeRange.Length; idx++) { if (cacheHiLoOfTimeRange[idx]._StartTimeHr == _StartTimeHr && cacheHiLoOfTimeRange[idx]._StartTimeMinute == _StartTimeMinute && cacheHiLoOfTimeRange[idx].EndTimeHr == endTimeHr && cacheHiLoOfTimeRange[idx].EndTimeMinute == endTimeMinute && cacheHiLoOfTimeRange[idx].ShowCrossingLines == showCrossingLines && cacheHiLoOfTimeRange[idx].EqualsInput(input)) { return(cacheHiLoOfTimeRange[idx]); } } } HiLoOfTimeRange indicator = new HiLoOfTimeRange(); indicator.BarsRequired = BarsRequired; indicator.CalculateOnBarClose = CalculateOnBarClose; #if NT7 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256; indicator.MaximumBarsLookBack = MaximumBarsLookBack; #endif indicator.Input = input; indicator._StartTimeHr = _StartTimeHr; indicator._StartTimeMinute = _StartTimeMinute; indicator.EndTimeHr = endTimeHr; indicator.EndTimeMinute = endTimeMinute; indicator.ShowCrossingLines = showCrossingLines; Indicators.Add(indicator); indicator.SetUp(); HiLoOfTimeRange[] tmp = new HiLoOfTimeRange[cacheHiLoOfTimeRange == null ? 1 : cacheHiLoOfTimeRange.Length + 1]; if (cacheHiLoOfTimeRange != null) { cacheHiLoOfTimeRange.CopyTo(tmp, 0); } tmp[tmp.Length - 1] = indicator; cacheHiLoOfTimeRange = tmp; return(indicator); } }
/// <summary> /// Plots the high and low of a specific, past time range for the current day /// </summary> /// <returns></returns> public HiLoOfTimeRange HiLoOfTimeRange(Data.IDataSeries input, int _StartTimeHr, int _StartTimeMinute, int endTimeHr, int endTimeMinute, bool showCrossingLines) { if (cacheHiLoOfTimeRange != null) for (int idx = 0; idx < cacheHiLoOfTimeRange.Length; idx++) if (cacheHiLoOfTimeRange[idx]._StartTimeHr == _StartTimeHr && cacheHiLoOfTimeRange[idx]._StartTimeMinute == _StartTimeMinute && cacheHiLoOfTimeRange[idx].EndTimeHr == endTimeHr && cacheHiLoOfTimeRange[idx].EndTimeMinute == endTimeMinute && cacheHiLoOfTimeRange[idx].ShowCrossingLines == showCrossingLines && cacheHiLoOfTimeRange[idx].EqualsInput(input)) return cacheHiLoOfTimeRange[idx]; lock (checkHiLoOfTimeRange) { checkHiLoOfTimeRange._StartTimeHr = _StartTimeHr; _StartTimeHr = checkHiLoOfTimeRange._StartTimeHr; checkHiLoOfTimeRange._StartTimeMinute = _StartTimeMinute; _StartTimeMinute = checkHiLoOfTimeRange._StartTimeMinute; checkHiLoOfTimeRange.EndTimeHr = endTimeHr; endTimeHr = checkHiLoOfTimeRange.EndTimeHr; checkHiLoOfTimeRange.EndTimeMinute = endTimeMinute; endTimeMinute = checkHiLoOfTimeRange.EndTimeMinute; checkHiLoOfTimeRange.ShowCrossingLines = showCrossingLines; showCrossingLines = checkHiLoOfTimeRange.ShowCrossingLines; if (cacheHiLoOfTimeRange != null) for (int idx = 0; idx < cacheHiLoOfTimeRange.Length; idx++) if (cacheHiLoOfTimeRange[idx]._StartTimeHr == _StartTimeHr && cacheHiLoOfTimeRange[idx]._StartTimeMinute == _StartTimeMinute && cacheHiLoOfTimeRange[idx].EndTimeHr == endTimeHr && cacheHiLoOfTimeRange[idx].EndTimeMinute == endTimeMinute && cacheHiLoOfTimeRange[idx].ShowCrossingLines == showCrossingLines && cacheHiLoOfTimeRange[idx].EqualsInput(input)) return cacheHiLoOfTimeRange[idx]; HiLoOfTimeRange indicator = new HiLoOfTimeRange(); indicator.BarsRequired = BarsRequired; indicator.CalculateOnBarClose = CalculateOnBarClose; #if NT7 indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256; indicator.MaximumBarsLookBack = MaximumBarsLookBack; #endif indicator.Input = input; indicator._StartTimeHr = _StartTimeHr; indicator._StartTimeMinute = _StartTimeMinute; indicator.EndTimeHr = endTimeHr; indicator.EndTimeMinute = endTimeMinute; indicator.ShowCrossingLines = showCrossingLines; Indicators.Add(indicator); indicator.SetUp(); HiLoOfTimeRange[] tmp = new HiLoOfTimeRange[cacheHiLoOfTimeRange == null ? 1 : cacheHiLoOfTimeRange.Length + 1]; if (cacheHiLoOfTimeRange != null) cacheHiLoOfTimeRange.CopyTo(tmp, 0); tmp[tmp.Length - 1] = indicator; cacheHiLoOfTimeRange = tmp; return indicator; } }