Непонятная работа IMarketDataStorage
Atom Ответить
24.05.2013


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

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

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

Теги:


Спасибо:




4 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 26.05.2013
Ответить


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


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

Architectus

Фотография
Курсы
Дата: 27.05.2013
Ответить


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.05.2013
Ответить


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


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

Architectus

Фотография
Курсы
Дата: 29.05.2013
Ответить


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


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

loading
clippy