← Zurück

Непонятная работа IMarketDataStorage

Здравствуйте! Разбираюсь с библиотекой. Возникло некоторое затруднение.

Рассмотрим простой код, почти из документации. Версия 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?

Смотрел открытые исходные коды. Разбираться помогают, но не в этом случае.

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Architectus: Почему не сохраняются свойства Status и ExtensionInfo?

Потому что сжатие идет только на основные параметры. Статус, насколько я помню, сохраняется.

Architectus
Architectus Autor

Михаил, спасибо за ответ! У меня статус не сохранялся. Но идею я понял. Некоторые свойства, по крайней мере ExtensionInfo точно, предназначены только для временного хранения в памяти и не сохраняются в хранилище.

Mikhail Sukhov
Mikhail Sukhov

Architectus: Михаил, спасибо за ответ! У меня статус не сохранялся. Но идею я понял. Некоторые свойства, по крайней мере ExtensionInfo точно, предназначены только для временного хранения в памяти и не сохраняются в хранилище.

Статус сохраняется если сделка несистемная. Вы что хотите сохранять через статус?

Architectus
Architectus Autor

Да, действительно, если IsSystem == false, то статус сохраняется. Спасибо. Просто хотел понять, какую информацию можно хранить в объекте Trade. Так Status int, а OpenInterest decimal. Однако первый сохраняется только при IsSystem == false, а второй принимает только целые значения. Что впрочем правильно и понятно :)