private void UpdateClassic(IBaseData data) { var currentValue = _selector(data); var volume = _volumeSelector(data); decimal?close = null; // if we're already in a bar then update it if (_currentBar != null) { _currentBar.Update(data.Time, currentValue, volume); // if the update caused this bar to close, fire the event and reset the bar if (_currentBar.IsClosed) { close = _currentBar.Close; OnDataConsolidated(_currentBar); _currentBar = null; } } if (_currentBar == null) { var open = close ?? currentValue; if (_evenBars && !close.HasValue) { open = Math.Ceiling(open / _barSize) * _barSize; } _currentBar = new RenkoBar(data.Symbol, data.Time, _barSize, open, volume); } }
public override void Update(IBaseData data) { var currentValue = _selector(data); var volume = _volumeSelector(data); decimal?close = null; if (_currentBar != null) { _currentBar.Update(data.Time, currentValue, volume); if (_currentBar.IsClosed) { close = _currentBar.Close; OnDataConsolidated(_currentBar); _currentBar = null; } } if (_currentBar == null) { var open = close ?? currentValue; if (_evenBars && !close.HasValue) { open = Math.Ceiling(open / _barSize) * _barSize; } _currentBar = new RenkoBar(data.Symbol, data.Time, _barSize, open, volume); } }