Пример #1
0
        protected override void OnBarUpdate()
        {
            if (Bars == null)
            {
                return;
            }
            if (!BarsType.GetInstance(Bars.Period.Id).IsIntraday)
            {
                return;
            }
            if (Bars.Period.Id == PeriodType.Minute && Bars.Period.Value > _minutes / 2)
            {
                return;
            }

            if (!_isLoaded && !_isInit)
            {
                _isInit               = true;
                _intradayBars         = Bars.GetBars(Bars.Instrument, new Period(PeriodType.Minute, _minutes, MarketDataType.Last), Bars.From, Bars.To, (Session)Bars.Session.Clone(), Bars.SplitAdjust, Bars.DividendAdjust);
                _existsHistHourlyData = (_intradayBars.Count <= 1) ? false : true;
                _isInit               = false;
                _isLoaded             = true;
            }

            if (!_existsHistHourlyData)
            {
                return;
            }

            DateTime intradayBarTime = Time[0].AddMinutes(-_minutes);
            IBar     intradayBar     = _intradayBars.Get(_intradayBars.GetBar(intradayBarTime));
            double   high            = intradayBar.High;
            double   low             = intradayBar.Low;
            double   close           = intradayBar.Close;

            Hpp.Set((high + low + close) / 3);
            Hs1.Set(2 * Hpp[0] - high);
            Hr1.Set(2 * Hpp[0] - low);
            Hs2.Set(Hpp[0] - (high - low));
            Hr2.Set(Hpp[0] + (high - low));
        }