/// <summary>
 /// Reads all ticks from the ITickStreamReader with TimeStamp property less
 /// than <paramref name="until"/>.
 /// </summary>
 public static IEnumerable <Tick> ReadUntilJustBefore(this ITickStreamReader reader, TimeStamp until)
 {
     while (reader.GetTimestampNextTickOrMaxValue() < until)
     {
         yield return(reader.ReadNext() !);
     }
 }
 /// <summary>
 /// Reads all available ticks from the ITickStreamReader.
 /// </summary>
 public static IEnumerable <Tick> ReadRemaining(this ITickStreamReader reader)
 {
     while (reader.ReadNext() is Tick tick)
     {
         yield return(tick);
     }
 }
Exemple #3
0
        public SessionRespectingTickStreamReader(TradingSessions tradingSessions, ITickStreamReader tickStreamReader)
        {
            _tradingSessions  = tradingSessions;
            _tickStreamReader = tickStreamReader;
            var timeOfFirstTick        = tickStreamReader.PeekNext() !.TimeStamp;
            var sessionDateOfFirstTick = _tradingSessions.GetActualSessionAt(timeOfFirstTick).SessionDate;

            _iterator  = new TradingSessionIterator(_tradingSessions, sessionDateOfFirstTick);
            Instrument = tickStreamReader.Instrument;
        }
        public static string Dump(this ITickStreamReader reader, TimeZoneInfo timeZone)
        {
            var sb        = new StringBuilder();
            var converter = ConversionIterators.FromTimeStamp(timeZone);

            foreach (var tick in reader.ReadRemaining())
            {
                sb.AppendLine($"{converter.GetDateTime(tick.TimeStamp).ToString("yyyy-MM-dd HH:mm:ss.fff")}\t{tick.Price}\t{tick.Volume}");
            }

            return(sb.ToString());
        }
        /// <summary>
        /// Gets the TimeStamp property of the "PeekTick" in the ITickStreamReader.
        /// Returns TimeStamp.MaxValue if no peek tick is available.
        /// </summary>
        public static TimeStamp GetTimestampNextTickOrMaxValue(this ITickStreamReader reader)
        {
            var peekTick = reader.PeekNext();

            return(peekTick is null ? TimeStamp.MaxValue : peekTick.TimeStamp);
        }
 /// <summary>
 /// Sets up the tick stream reader so that the next tick it returns via
 /// ReadNext() will have a timestampLocal property >= until.
 /// </summary>
 public static void MoveUntil(this ITickStreamReader reader, TimeStamp until)
 {
     // don't forget to call Count or something similar to actually run the
     // enumerator.
     reader.ReadUntilJustBefore(until).Count();
 }