ImexInstrumentMetadata

StockSharp.Imex

Анализируемый вид ежедневного дампа метаданных инструментов биржи 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, а не как молчаливая карта с нулевыми строками.

Свойства

InstrumentLots
public IReadOnlyDictionary<int, decimal> InstrumentLots { get; }
value = imexInstrumentMetadata.InstrumentLots

Торговля instrument_id -> множитель лотов (основные единицы по контракту).

NativeIds
public IReadOnlyDictionary<SecurityId, long> NativeIds { get; }
value = imexInstrumentMetadata.NativeIds

SecurityId -> native id (instrument_id или balance_id), как и ожидалось по проводному протоколу.

SpotInfoByBalance
public IReadOnlyDictionary<int, ValueTuple<decimal, int>> SpotInfoByBalance { get; }
value = imexInstrumentMetadata.SpotInfoByBalance

Spot balance_id -> (небольшая часть от ссылающегося торгового инструмента, лежащего в основе balance_id).

Методы

Load
public static ImexInstrumentMetadata Load(Stream stream)
result = ImexInstrumentMetadata.Load(stream)

Строго типизированная загрузка из произвольного потока. Выдается при любом несоответствии макета — отсутствующем ключе-оболочке, отсутствующих массивах, неправильных типах полей — поэтому бесшумное изменение схемы IMEX приводит к громкому сбою при первом запуске.