Хранение данных
Atom
04.11.2011


Только начинаю разбираться с S#. Сразу возник вопрос - перечитал весь форум, ответа не нашел.
Для стратегии нужно сохранять информацию из таблицы всех сделок, на основе нее производить определенные вычисления, результаты которых также необходимо сохранять в какой-то файл или таблицу, для дальнейшего их анализа и генерирования торговых сигналов. Раньше все было реализовано в Access.
Вопрос в следующем - какой способ хранения информации более предпочтительней? И с точки зрения добавления новых данных и с точки зрения доступа и работы с ними. В документации к S# этому вопросу уделено очень мало. И Насколько понимаю StockSharp.Algo.Storages позволяет хранить только историю маркет данных, но не сохранять результаты вычисления над ними.
помогите разобраться...

Теги:


Спасибо:


< 1 2 
profts

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


В стратегии на основе события появления новой сделки происходит расчет показателя.
для расчета делается запрос вроде этого :

var sum__riz1_5 = this.Trader.Trades.Where(p => p.Security == base.Security &&
p.Time > DateTime.Now.AddMinutes(-5)).Sum(tr => tr.Volume);

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

1) никак не могу сообразить - как сделать запрос к примеру, только по сделкам, поступившим за последние n минут.
2) если не 1), то как периодически чистить Trader.Trades и оставлять только сделки за последние n минут.
Спасибо:

Alexander

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


profts Перейти
В стратегии на основе события появления новой сделки происходит расчет показателя.
для расчета делается запрос вроде этого :

var sum__riz1_5 = this.Trader.Trades.Where(p => p.Security == base.Security &&
p.Time > DateTime.Now.AddMinutes(-5)).Sum(tr => tr.Volume);

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

1) никак не могу сообразить - как сделать запрос к примеру, только по сделкам, поступившим за последние n минут.
2) если не 1), то как периодически чистить Trader.Trades и оставлять только сделки за последние n минут.


По событию появления новых сделок сохраняйте их в отдельную коллекцию и обрабатывайте её.
Те сделки, которые выходят за 5 минут - чистите.

Вариант 2 - стройте свечки 5-минутные и берите объём.


И да, LINQ медленный.
Спасибо:

vader

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


Цитата:
И да, LINQ медленный.

А что быстрое? Что посоветуете?
Спасибо:
< 1 2 

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

loading
clippy