Объединение свечей из разных источников

Объединение свечей из разных источников
Atom
12/26/2011


Как можно объединить в одном токине СandleManager свечи из разных источников?
Пытаюсь объединить исторические свечи со свечами из шлюза таким образом
Code

            this._cm = new CandleManager(this._trader);

            // хранилище, через которое будет производиться доступ к тиковой и котировочной базе
            this.storage = new TradingStorage(new InMemoryStorage()){ BasePath = "Sec" };

            var builder = new CandleBuilder(new TradeStorageCandleBuilderSource(storage));
            this._cm.Sources.Add(builder);

            // Регистрируем свечи
            var candleToken = this._cm.RegisterTimeFrameCandles(security, this._timeFrame);

В итоге приходят только свечи из шлюза.
Если добавить
Code

builder.RegisterTimeFrameCandles(security, _timeFrame);

то в CandleManager придут все свечи и история и трейдер, но это будет два разных токена.

Tags:


Thanks:


< 1 2 3 
Moadip

Avatar
Date: 3/30/2012
Reply


Разбираюсь с 4.1 столкнулся с проблемой.

В 4.0

Code

	    CandleManager _candleManager;
	    readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);

        // Начальная и конечная дата для подгрузки истории
	    readonly DateTime _startTime = DateTime.Today - TimeSpan.FromDays(2);
	    readonly DateTime _stopTime = DateTime.Today;

        // Путь к данным истории
	    private const string _historyPath = "e:\\DataServer\\";

            ...

            _candleManager = new CandleManager();
            _candleManager.CandlesStarted += (token, candles) => DrawCandles(candles);
            _candleManager.CandlesChanged += (token, candles) => DrawCandles(candles);

            ...

		private void btnDrawCandleHistory_Click(object sender, RoutedEventArgs e)
		{
            var storage = new TradingStorage(new InMemoryStorage()) { BasePath = _historyPath };

            var builder = new CandleBuilder(new TradeStorageCandleBuilderSource(storage) { From = _startTime, To = _stopTime });
            _candleManager.Sources.Add(builder);

            _candleManager.RegisterTimeFrameCandles(_instr1, _timeFrame);
		}

        private void bntDrawCandleReal_Click(object sender, RoutedEventArgs e)
        {
            _candleManager.Sources.Add(new CandleBuilder(new TradeCandleBuilderSource(_trader)));
            _candleManager.RegisterTimeFrameCandles(_instr1, _timeFrame);
        }


Два метода, один рисует свечки за сегодняшний день, другой - на основе истории.

Делаю по аналогии в 4.1

Code

	    CandleManager _candleManager;
	    readonly TimeSpan _timeFrame = TimeSpan.FromMinutes(5);

        // Начальная и конечная дата для подгрузки истории
	    readonly DateTime _startTime = DateTime.Today - TimeSpan.FromDays(2);
	    readonly DateTime _stopTime = DateTime.Today;

        // Путь к данным истории
	    private const string _historyPath = "e:\\DataServer\\";

            ...

            _candleManager = new CandleManager();
            _candleManager.Processing += DrawCandles;

            ...

        private void btnDrawCandleHistory_Click(object sender, RoutedEventArgs e)
        {
            var storage = new TradingStorage(new InMemoryStorage());

            var cbs = new TradeStorageCandleBuilderSource() { BasePath = _historyPath, Storage = storage };
            var cb = new TimeFrameCandleBuilder();

            cb.Sources.Add(cbs);
            _candleManager.Sources.Add(cb);

            var series = new CandleSeries(typeof(TimeFrameCandle), _instr1, _timeFrame);
            _candleManager.Start(series, _startTime, _stopTime);
        }

        private void bntDrawCandleReal_Click(object sender, RoutedEventArgs e)
        {
            var cbs = new TradeCandleBuilderSource(_trader);
            var cb = new TimeFrameCandleBuilder();

            cb.Sources.Add(cbs);
            _candleManager.Sources.Add(cb);

            var series = new CandleSeries(typeof (TimeFrameCandle), _instr1, _timeFrame);
            _candleManager.Start(series);
        }


За текущий день отрисовывает, историю - нет.
Данные от 4.0 переконвертировал в 4.1. Проверил в тесте на истории - нормально.

Что делаю не так? В чем причина?
Thanks:

JackSparrow

Avatar
Date: 3/30/2012
Reply


Alexander Mukhanchikov Go to
JackSparrow Go to
Нет так нет.


вы о чём?

Александр я где то на Вашем форуме читал, что если написать индикатор то можно получить несколько ответов.
На данный момент я не получил не одного ответа не на один вопрос, хотя я не задаю заумных вопросов, все очень просты, и их не много.
Желание спрашивать пропадает.
К тому же Вы высказываете сожаления что Вам мало помогают, но время запрачиваемое на разгребание простых вопросов в отсутствие либо доков либо исходников, не оставляет шансов помощ в написании чего либо.
Thanks:

Mikhail Sukhov

Avatar
Date: 3/30/2012
Reply


JackSparrow Go to
Александр я где то на Вашем форуме читал, что если написать индикатор то можно получить несколько ответов.


И я отвечал на ваши вопросы. В основном по Гидре. Поверьте, если бы не помощь по индикаторам, ответом было бы меньше, так как мы отвечаем только на вопросы, касающиеся багов.

JackSparrow Go to

но время запрачиваемое на разгребание простых вопросов в отсутствие либо доков либо исходников, не оставляет шансов помощ в написании чего либо.


Предлагаю взять паузу на выходные. Чувствую, неделя была у всех тяжелая... По свечкам - как выложим официально бету в паблик, так и доку обновим. Нет ни времени ни смысла каждому сейчас расказывать о том, как свечки устроены в новой версии, если можно за раз написать доку, и всех отправлять ее читать.

Если есть претензии по текущей доке, то надо их высказывать сейчас. Будем смотреть, исправлять. До этого вы ничего не писали про качество документации. Значит все было окей. Сейчас что-то изменилось?
Thanks:

Moadip

Avatar
Date: 4/2/2012
Reply


Quote:
За текущий день отрисовывает, историю - нет.
Данные от 4.0 переконвертировал в 4.1. Проверил в тесте на истории - нормально.

Что делаю не так? В чем причина?


Отвечу сам на свой вопрос.
Для того чтобы отрисовались свечки, надо немного подождать.[smile]

Время отрисовки свечек по RI за один день:
В 4.0 10 сек.
В 4.1 90 сек.

Также в 4.1 наблюдается странный глюк.
Допустим есть данные за неделю 26-30 марта.
Если выставить дату по которой нет данных, например 25 марта, то будет ошибка - очередь пуста, все правильно.
Если выставить дату 30 марта, т.е. последний день существующих данных, то ошибки не будет, но и свечки по какой то причине не генерируются.
Если выставить 29 марта, все нормально отрисуется.

Проверял данные в тесте на истории за этот же день(30 марта), все нормально.

В 4.0 такого не наблюдается.
Thanks:

Moadip

Avatar
Date: 4/4/2012
Reply



Подгрузили историю, проверили кол-во значений/свечек в IndicatorManager.Container и CandleManager.Container
Подгрузили сегодняшний день, проверили кол-во значений/свечек в IndicatorManager.Container и CandleManager.Container

При остановке series и смене построителя свечек, а затем повторном запуске этой же series свечки в СandleManager.Container за прошлый день не сохраняются.
В IndicatorManager.Container прошлые значения сохраняются. Может сделать чтобы также было в СandleManager.Container?

Можно конечно сделать свой CandleManagerContainer и в него складывать свечки, но это не очень удобно.

Весь код, может кому пригодится.[smile]


Thanks: JackSparrow Johny Cash
< 1 2 3 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy