ImexInstrumentMetadata
Анализируемый вид ежедневного дампа метаданных инструментов биржи IMEX (https://storage.imexchange.tech/TS/instr-{date}.json). Содержит три производные карты, которые интересуют потребителей: - InstrumentLots: множитель лота для каждого торгового инструмента (единицы базового актива на 1 контракт). Используется TradeImexDialect для масштабирования OrderRegister.Volume / VisibleVolume до объемов проводов и для масштабирования AddReport / deal.Amount до объема платформы / TradeVolume. - SpotInfoByBalance: пара на спотовый баланс (инструмент-лот, лежащий в основе balance_id). Используется RiskImexDialect для (a) масштабирования позиций на дату клиринга по лотам, (b) агрегирования их по базовому активу через UnderlyingId. - NativeIds: SecurityId -> собственный идентификатор провода. Используется CsvNativeIdStorageProvider в качестве карты идентификации платформы. Единый источник достоверной информации для анализа макета JSON. Вызывающая сторона владеет потоком — файлом, сетью, памятью — все что угодно — парсер никогда не затрагивает саму файловую систему. Типизированная модель POCO десериализуется через Newtonsoft (через CreateJsonSerializerSettings), поэтому любое изменение схемы — переименование/перепечатка/отсутствие ключа оболочки — отображается как JsonReaderException / JsonSerializationException из Parse, а не как молчаливая карта с нулевыми строками.
Свойства
public IReadOnlyDictionary<int, decimal> InstrumentLots { get; }
value = imexInstrumentMetadata.InstrumentLots
Торговля instrument_id -> множитель лотов (основные единицы по контракту).
public IReadOnlyDictionary<SecurityId, long> NativeIds { get; }
value = imexInstrumentMetadata.NativeIds
SecurityId -> native id (instrument_id или balance_id), как и ожидалось по проводному протоколу.
public IReadOnlyDictionary<int, ValueTuple<decimal, int>> SpotInfoByBalance { get; }
value = imexInstrumentMetadata.SpotInfoByBalance
Spot balance_id -> (небольшая часть от ссылающегося торгового инструмента, лежащего в основе balance_id).
Методы
public static ImexInstrumentMetadata Load(Stream stream)
result = ImexInstrumentMetadata.Load(stream)
Строго типизированная загрузка из произвольного потока. Выдается при любом несоответствии макета — отсутствующем ключе-оболочке, отсутствующих массивах, неправильных типах полей — поэтому бесшумное изменение схемы IMEX приводит к громкому сбою при первом запуске.