Как в 4.1 формировать свечки из тиков в реал тайме?
							
							
						 
						
						
						
						
	
			Как теперь формировать свечки из тиков в реальном времени?
Мне нужно самому генерировать тики (сделки), без ITrader.
в 3 версии, я делал так:
определял источник свечек, с методом AddNewTrade() и через него скармливал тики. CandleManager соответственно строил свечки, а теперь?
Код
public abstract class MyCandleSource : Disposable, ICandleSource
public class ParallelMyTraderCandleSource : MyCandleSource
    {
        private readonly SynchronizedList<Trade> _newTrades = new SynchronizedList<Trade>();
        private bool _isInProcess;
        private readonly Timer _timer;
        /// <summary>
        /// Создать <see cref="ParallelTraderCandleSource"/>.
        /// </summary>
        /// <param name="trader">Торговый шлюз, у которого используется событие <see cref="ITrader.NewTrades"/>.</param>
        public ParallelMyCandleSource()
            : this(TimeSpan.FromMilliseconds(300))
        {        }
        /// <summary>
        /// Создать <see cref="ParallelTraderCandleSource"/>.
        /// </summary>
        /// <param name="trader">Торговый шлюз, у которого используется событие <see cref="ITrader.NewTrades"/>.</param>
        /// <param name="interval">Интервал отправки новых сделок.</param>
        public ParallelMyCandleSource(TimeSpan interval)
            : base(int.MaxValue, int.MaxValue)
        {         
            _timer = interval.CreateTimer(OnProcessTrades);
        }
        /// <summary>
        /// Обработчик события <see cref="ITrader.NewTrades"/>.
        /// </summary>
        /// <param name="trades">Новые сделки.</param>
        protected override void OnNewTrades(IEnumerable<Trade> trades)
        {
            base.OnNewTrades(trades);
            _newTrades.AddRange(trades);
        }
        public override void AddNewTrades(Trade trade)
        {
            base.AddNewTrades(trade);
            _newTrades.Add(trade);
        }
        private void OnProcessTrades()
        {
            if (_isInProcess)
                return;
            _isInProcess = true;
            try
            {
                var newTrades = _newTrades.SyncGet(c =>
                {
                    var retVal = c.ToArray();
                    c.Clear();
                    return retVal;
                });
                if (newTrades.Length > 0)
                    base.RaiseNewTrades(newTrades);
            }
            finally
            {
                _isInProcess = false;
            }
        }        
    }