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)); }