예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
		/// <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;
		}
예제 #5
0
        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;
        }
예제 #7
0
        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);
            }
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
            }
        }