void FirstThreadMethod(object obj) { var symbol = (string)obj; var startTime = DateTime.UtcNow.Date; var endTime = startTime.AddHours(1); var quotes = new QuotesSingleSequence(this.Storage.Online, symbol, startTime, endTime, 1); var averageSpread = 0D; var count = 0; foreach (var element in quotes) { averageSpread += element.Spread; count++; } if (count > 0) { averageSpread /= count; } else { averageSpread = double.NaN; } Console.WriteLine("Averge spread of {0} = {1}", symbol, averageSpread); }
void FirstThreadMethod(object obj) { var symbol = (string)obj; var startTime = DateTime.UtcNow.Date; var endTime = startTime.AddHours(1); var quotes = new QuotesSingleSequence(this.Storage.Online, symbol, startTime, endTime, 1); var averageSpread = 0D; var count = 0; foreach (var element in quotes) { averageSpread += element.Spread; count++; } if (count > 0) { averageSpread /= count; } else { averageSpread = double.NaN; } Console.WriteLine("Averge spread of {0} = {1}", symbol, averageSpread); }
void SecondThreadMethod(object obj) { var symbol = "EURUSD"; var from = (DateTime)obj; var to = this.now; var quotes = new QuotesSingleSequence(this.Storage.Online, symbol, from, to, 1); var averageSpread = 0D; var count = 0; foreach (var element in quotes) { averageSpread += element.Spread; count++; } if (count > 0) { averageSpread /= count; } else { averageSpread = double.NaN; } Console.WriteLine("Averge spread of {0} [{1}, {2}] = {3}", symbol, from, to, averageSpread); }
/// <summary> /// Creates a new iterator instance. /// </summary> /// <param name="sequence">An existing sequence instance.</param> /// <exception cref="System.ArgumentNullException">if sequence is null.</exception> public QuotesSingleIterator(QuotesSingleSequence sequence) { if (sequence == null) throw new ArgumentNullException(nameof(sequence), "Sequence parameter can not be null."); this.Sequence = sequence; if (sequence.StartTime <= sequence.EndTime) { this.from = sequence.StartTime.Normalize(); this.to = sequence.EndTime.Normalize(); this.direction = TimeDirection.Forward; } else { this.from = sequence.EndTime.Normalize(); this.to = sequence.StartTime.Normalize(); this.direction = TimeDirection.Backward; } this.fromEx = this.from.RoundDownMilliseconds(); this.toEx = this.to.RoundUpMilliseconds(); if (this.direction == TimeDirection.Forward) this.Current = this.ConstructForward(); else this.Current = this.ConstructBackward(); this.Continue = this.Current != null; }
bool Run(string symbol, DateTime startTime, DateTime endTime) { Console.WriteLine("Getting quotes for {0}", symbol); var sequence = new QuotesSingleSequence(this.Storage.Online, symbol, startTime, endTime, 1); var hour = 0; foreach (var element in sequence) { if (hour != element.CreatingTime.Hour) { Console.WriteLine(element.CreatingTime); hour = element.CreatingTime.Hour; } } return(true); }
bool Run(string symbol, DateTime startTime, DateTime endTime) { Console.WriteLine("Getting quotes for {0}", symbol); var sequence = new QuotesSingleSequence(this.Storage.Online, symbol, startTime, endTime, 1); var hour = 0; foreach (var element in sequence) { if (hour != element.CreatingTime.Hour) { Console.WriteLine(element.CreatingTime); hour = element.CreatingTime.Hour; } } return true; }
void ExportTicks(StreamWriter writer, DataFeedStorage storage) { writer.WriteLine("Time,Ask,Bid,AskVolume,BidVolume"); var quotes = new QuotesSingleSequence(storage.Offline, m_symbol, m_from, m_to, 1); var previousBidPrice = double.NaN; var previousAskPrice = double.NaN; foreach (var element in quotes) { if (!continueMonitoring) { break; } var bid = element.Bids[0]; var ask = element.Asks[0]; if (this.m_removeDuplicateEntries) { if (previousBidPrice == bid.Price && previousAskPrice == ask.Price) { continue; } previousBidPrice = bid.Price; previousAskPrice = ask.Price; } var dateTime = element.CreatingTime.ToString("yyyy.MM.dd HH:mm:ss.fff"); var bidPrice = bid.Price.ToString(CultureInfo.InvariantCulture); var askPrice = ask.Price.ToString(CultureInfo.InvariantCulture); var bidVolume = (bid.Volume / m_contractSize).ToString(CultureInfo.InvariantCulture); var askVolume = (ask.Volume / m_contractSize).ToString(CultureInfo.InvariantCulture); writer.WriteLine("{0},{1},{2},{3},{4}", dateTime, askPrice, bidPrice, askVolume, bidVolume); this.RaiseProgress(element.CreatingTime); } }
void SecondThreadMethod(object obj) { var symbol = "EURUSD"; var from = (DateTime)obj; var to = this.now; var quotes = new QuotesSingleSequence(this.Storage.Online, symbol, from, to, 1); var averageSpread = 0D; var count = 0; foreach (var element in quotes) { averageSpread += element.Spread; count++; } if (count > 0) { averageSpread /= count; } else { averageSpread = double.NaN; } Console.WriteLine("Averge spread of {0} [{1}, {2}] = {3}", symbol, from, to, averageSpread); }
void ExportTicks(StreamWriter writer, DataFeedStorage storage) { writer.WriteLine("Time,Ask,Bid,AskVolume,BidVolume"); var quotes = new QuotesSingleSequence(storage.Offline, m_symbol, m_from, m_to, 1); var previousBidPrice = double.NaN; var previousAskPrice = double.NaN; foreach (var element in quotes) { if (!continueMonitoring) { break; } var bid = element.Bids[0]; var ask = element.Asks[0]; if (this.m_removeDuplicateEntries) { if (previousBidPrice == bid.Price && previousAskPrice == ask.Price) { continue; } previousBidPrice = bid.Price; previousAskPrice = ask.Price; } var dateTime = element.CreatingTime.ToString("yyyy.MM.dd HH:mm:ss.fff"); var bidPrice = bid.Price.ToString(CultureInfo.InvariantCulture); var askPrice = ask.Price.ToString(CultureInfo.InvariantCulture); var bidVolume = (bid.Volume / m_contractSize).ToString(CultureInfo.InvariantCulture); var askVolume = (ask.Volume / m_contractSize).ToString(CultureInfo.InvariantCulture); writer.WriteLine("{0},{1},{2},{3},{4}", dateTime, askPrice, bidPrice, askVolume, bidVolume); this.RaiseProgress(element.CreatingTime); } }