Здравствуйте! Разбираюсь с библиотекой. Возникло некоторое затруднение.
Рассмотрим простой код, почти из документации. Версия S# - 4.1.13
private IMarketDataStorage<Trade> _tradeStorage;
private Security _sec;
...
_sec= new Security {
Id = "TestId",
MinStepSize = 0.1m,
Decimals = 1
};
StorageRegistry storage = new StorageRegistry();
((LocalMarketDataDrive)storage.DefaultDrive).Path = @"E:\TestStockSharpStorage";
_tradeStorage = storage.GetTradeStorage(_sec);
...
private List<Trade> GenereateTrades(int amount) {
List<Trade> trades = new List<Trade>();
var tradeGenerator = new RandomWalkTradeGenerator(_sec, 99) {
IdGenerator = new IdGenerator {
Current = DateTime.Now.Ticks
}
};
tradeGenerator.Init();
for (var i = 0; i < amount; i++) {
var t = tradeGenerator.Generate(DateTime.Today + TimeSpan.FromMinutes(i));
t.Id = i + 1;
t.Status = 2;
var dic = new Dictionary<object, object>();
dic.Add("Parameter", 1.1m);
t.ExtensionInfo = dic;
trades.Add(t);
}
return trades;
}
private void b_CreateTicks_Click(object sender, RoutedEventArgs e) {
var trades = GenereateTrades(100);
_tradeStorage.Save(trades);
}
private void b_ReadData_Click(object sender, RoutedEventArgs e) {
List<Trade> loadedTrades = _tradeStorage.Load(DateTime.Now.Date).ToList();
}
Теперь, если посмотреть trades из b_CreateTicks_Click, то там у каждого экземпляра Trade будут свойства Status == 2 и ExtensionInfo !=null. Если посмотреть loadedTrades из b_ReadData_Click, то там у каждого экземпляра Trade будут свойства Status == 0 и ExtensionInfo == null. Все остальные свойства будут в порядке. Почему не сохраняются свойства Status и ExtensionInfo?
Смотрел открытые исходные коды. Разбираться помогают, но не в этом случае.
Kommentare (4)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Потому что сжатие идет только на основные параметры. Статус, насколько я помню, сохраняется.
Михаил, спасибо за ответ! У меня статус не сохранялся. Но идею я понял. Некоторые свойства, по крайней мере ExtensionInfo точно, предназначены только для временного хранения в памяти и не сохраняются в хранилище.
Статус сохраняется если сделка несистемная. Вы что хотите сохранять через статус?
Да, действительно, если IsSystem == false, то статус сохраняется. Спасибо. Просто хотел понять, какую информацию можно хранить в объекте Trade. Так Status int, а OpenInterest decimal. Однако первый сохраняется только при IsSystem == false, а второй принимает только целые значения. Что впрочем правильно и понятно :)