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

Хранение данных
Atom
11/4/2011


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

Tags:


Thanks:


< 1 2 
profts

Avatar
Date: 11/16/2011
Reply


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

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 минут.
Thanks:

Alexander

Avatar
Date: 11/16/2011
Reply


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

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 медленный.
Thanks:

vader

Avatar
Date: 11/16/2011
Reply


Quote:
И да, LINQ медленный.

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

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

loading
clippy