Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }