public static decimal ReadVolume(this BitArrayReader reader, BinaryMetaInfo info) { if (info.Version < MarketDataVersions.Version44) { if (reader.Read()) { return(reader.ReadLong()); } else { throw new NotSupportedException(LocalizedStrings.Str1011); } } else { if (reader.Read()) { return(reader.ReadLong() * info.VolumeStep); } else { return(info.FirstFractionalVolume = reader.ReadDecimal(info.FirstFractionalVolume)); } } }
public static decimal ReadPriceEx(this BitArrayReader reader, BinaryMetaInfo info, bool useLong, bool largeDecimal) { if (info.Version < MarketDataVersions.Version41) { var prevPrice = info.FirstPrice; return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info)); } else { if (reader.TryReadLargeDecimal(largeDecimal, out var price)) { return(price); } if (reader.Read()) { var prevPrice = info.FirstPrice; return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info, useLong)); } else { return(info.FirstFractionalPrice = reader.ReadDecimal(info.FirstFractionalPrice)); } } }
private static decimal?ReadCommission(BitArrayReader reader, TransactionSerializerMetaInfo metaInfo) { if (!reader.Read()) { return(null); } return(metaInfo.FirstCommission = reader.ReadDecimal(metaInfo.FirstCommission)); }
private static bool TryReadLargeDecimal(this BitArrayReader reader, bool largeDecimal, out decimal value) { if (largeDecimal) { if (reader.Read()) { value = reader.ReadDecimal(); return(true); } } value = default; return(false); }
public static decimal ReadPriceEx <T>(this BitArrayReader reader, BinaryMetaInfo <T> info) where T : BinaryMetaInfo <T> { if (info.Version < MarketDataVersions.Version41) { return(info.FirstPrice = reader.ReadPrice(info.FirstPrice, info)); } else { if (reader.Read()) { return(info.FirstPrice = reader.ReadPrice(info.FirstPrice, info)); } else { return(info.FirstNonSystemPrice = reader.ReadDecimal(info.FirstNonSystemPrice)); } } }
public static decimal ReadPriceEx(this BitArrayReader reader, BinaryMetaInfo info) { if (info.Version < MarketDataVersions.Version41) { var prevPrice = info.FirstPrice; return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info)); } else { if (reader.Read()) { var prevPrice = info.FirstPrice; return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info)); } else { return(info.FirstFractionalPrice = reader.ReadDecimal(info.FirstFractionalPrice)); } } }
public static DataType ReadBuildFrom(this BitArrayReader reader) { if (!reader.Read()) { return(null); } switch (reader.ReadInt()) { case 0: return(DataType.Level1); case 1: return(DataType.MarketDepth); case 2: return(DataType.OrderLog); case 3: return(DataType.Ticks); case 4: return(DataType.Transactions); case 5: return(reader.ReadInt().ToDataType(reader.ReadLong(), reader.Read() ? reader.ReadDecimal(0) : 0M, reader.ReadInt())); default: throw new InvalidOperationException(); } }
private static decimal DeserializeChange(BitArrayReader reader, RefPair <decimal, decimal> info) { info.First = reader.ReadDecimal(info.First); return(info.First); }
public static decimal?ReadNullableDecimal(this BitArrayReader reader) => reader.Read() ? reader.ReadDecimal() : (decimal?)null;
public static decimal ReadDecimal(this BitArrayReader reader, decimal prevPrice) { var diff = reader.ReadDecimal(); return(prevPrice + diff); }