/// <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); } }
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(); }