internal HistoricalBars(ResponseComposer c) // a one-shot deal
        {
            if (!c.Config.SupportsServerVersion(ServerVersion.SyntRealtimeBats))
            {
                c.RequireVersion(3);
            }
            RequestId = c.ReadInt();
            Start     = c.ReadLocalDateTime(DateTimePattern);
            End       = c.ReadLocalDateTime(DateTimePattern);
            var n = c.ReadInt();

            for (var i = 0; i < n; i++)
            {
                Bars.Add(new HistoricalBar(c));
            }
        }
 internal HistoricalBar(ResponseComposer c)
 {
     Date   = c.ReadLocalDateTime(HistoricalBars.DateTimePattern);
     Open   = c.ReadDouble();
     High   = c.ReadDouble();
     Low    = c.ReadDouble();
     Close  = c.ReadDouble();
     Volume = c.Config.ServerVersionCurrent < ServerVersion.SyntRealtimeBats ? c.ReadInt() : c.ReadLong();
     WeightedAveragePrice = c.ReadDouble();
     if (!c.Config.SupportsServerVersion(ServerVersion.SyntRealtimeBats))
     {
         c.ReadString(); /*string hasGaps = */
     }
     Count = c.ReadInt();
 }