Здравствуйте! Разбираюсь с библиотекой. Возникло некоторое затруднение.
Рассмотрим простой код, почти из документации. Версия 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?
Смотрел открытые исходные коды. Разбираться помогают, но не в этом случае.
Comentarios (4)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Потому что сжатие идет только на основные параметры. Статус, насколько я помню, сохраняется.
Михаил, спасибо за ответ! У меня статус не сохранялся. Но идею я понял. Некоторые свойства, по крайней мере ExtensionInfo точно, предназначены только для временного хранения в памяти и не сохраняются в хранилище.
Статус сохраняется если сделка несистемная. Вы что хотите сохранять через статус?
Да, действительно, если IsSystem == false, то статус сохраняется. Спасибо. Просто хотел понять, какую информацию можно хранить в объекте Trade. Так Status int, а OpenInterest decimal. Однако первый сохраняется только при IsSystem == false, а второй принимает только целые значения. Что впрочем правильно и понятно :)