예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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;
            }
        }