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

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


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

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

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

builder.RegisterTimeFrameCandles(security, _timeFrame);

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

Теги:


Спасибо:


< 1 2 3 
Moadip

Фотография
Дата: 30.03.2012
Ответить


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

В 4.0

Код

	    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

Код

	    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. Проверил в тесте на истории - нормально.

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

JackSparrow

Фотография
Дата: 30.03.2012
Ответить


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


вы о чём?

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

Mikhail Sukhov

Фотография
Дата: 30.03.2012
Ответить


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


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

JackSparrow

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


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

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

Moadip

Фотография
Дата: 02.04.2012
Ответить


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

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


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

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

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

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

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

Moadip

Фотография
Дата: 04.04.2012
Ответить



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

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

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

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


Спасибо: JackSparrow Johny Cash
< 1 2 3 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy