Exemplo n.º 1
0
        public Bar[] GetBars(string symbol, PriceType priceType, BarPeriod period, DateTime startTime, DateTime endTime)
        {
            try
            {
                var forexPeriodicity = StorageConvert.ToPeriodicity(period);
                var forexPriceType   = StorageConvert.ToFxPriceType(priceType);
                var manager          = this.storage.GetOrCreateHistoryManager(symbol);

                if (this.source != null)
                {
                    // online mode
                    if (!manager.BarsAreSynchronized(this.source, symbol, forexPeriodicity, forexPriceType, startTime, endTime, false))
                    {
                        manager.SynchronizeBars(this.source, symbol, forexPeriodicity, forexPriceType, startTime, endTime, false, NullCallback);
                    }
                }

                var bars = new List <HistoryBar>();
                if (startTime < endTime)
                {
                    ForwardFillBars(manager, symbol, forexPeriodicity, forexPriceType, startTime, endTime, bars);
                }
                else
                {
                    BackwardFillBars(manager, symbol, forexPeriodicity, forexPriceType, startTime, endTime, bars);
                }

                var result = bars.Select(o => StorageConvert.ToBar(o, period)).ToArray();
                return(result);
            }
            catch (StorageHistoryNotFoundException ex)
            {
                throw new HistoryNotFoundException("GetBars", ex);
            }
        }
Exemplo n.º 2
0
        public Quote[] GetQuotes(string symbol, DateTime startTime, DateTime endTime, int depth)
        {
            try
            {
                if (depth == 0)
                    depth = int.MaxValue;

                var manager = this.storage.GetOrCreateHistoryManager(symbol);
                var includeLevel2 = depth != 1;

                if (this.source != null)
                {
                    // online mode
                    if (!manager.TicksAreSynchronized(this.source, symbol, includeLevel2, startTime, endTime, false))
                        manager.SynchronizeTicks(this.source, symbol, includeLevel2, startTime, endTime, false, NullCallback);
                }

                var ticks = new List<TickValue>();
                if (startTime < endTime)
                    ForwardFillTicks(manager, symbol, includeLevel2, startTime, endTime, ticks);
                else
                    BackwardFillTicks(manager, symbol, includeLevel2, startTime, endTime, ticks);

                var converter = new StorageConvert();
                var result = ticks.Select(o => converter.ToQuote(symbol, o, depth)).ToArray();

                return result;
            }
            catch (StorageHistoryNotFoundException ex)
            {
                throw new HistoryNotFoundException("GetQuotes", ex);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// The method append a new quote to the storage.
        /// </summary>
        /// <param name="quote"></param>
        public void Append(Quote quote)
        {
            var manager   = this.GetOrCreateHistoryManager(quote.Symbol);
            var converter = new StorageConvert();
            var tick      = converter.ToFeedTick(quote);

            manager.Append(tick);
        }
Exemplo n.º 4
0
        public MarketBarHistoryFileReport QueryBarHistoryFile(DateTime from, DateTime to, string symbol, string periodicity, FxPriceType priceType)
        {
            if (to != from)
            {
                throw new Exception("Range bar history queries are unsupported");
            }

            var type = StorageConvert.ToPriceType(priceType);

            return(this.Attempt(this.DoQueryBarHistoryFile, from, symbol, periodicity, type));
        }
Exemplo n.º 5
0
        /// <summary>
        /// The method synchronizes bars.
        /// </summary>
        /// <param name="symbol"></param>
        /// <param name="priceType"></param>
        /// <param name="period"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        public void Synchronize(string symbol, PriceType priceType, BarPeriod period, DateTime startTime, DateTime endTime)
        {
            if (this.source == null)
            {
                throw new InvalidOperationException("Can't synchronize in offline mode.");
            }

            var manager     = this.GetOrCreateHistoryManager(symbol);
            var periodicity = StorageConvert.ToPeriodicity(period);
            var fxPriceType = StorageConvert.ToFxPriceType(priceType);

            manager.SynchronizeBars(this.source, symbol, periodicity, fxPriceType, startTime, endTime, false, NullCallback);
        }
Exemplo n.º 6
0
        public TickTraderHistoryInfo GetBarsHistoryInfo(string symbol, Periodicity periodicity, FxPriceType priceType)
        {
            var apiPriceType   = StorageConvert.ToPriceType(priceType);
            var apiPeriodicity = StorageConvert.ToBarPeriod(periodicity);

            var info = this.dataFeed.Server.GetBarsHistoryFiles(symbol, ZeroDateTime, apiPriceType, apiPeriodicity.ToString());

            var result = new TickTraderHistoryInfo
            {
                AvailableFrom = info.FromAll,
                AvailableTo   = info.ToAll
            };

            return(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Imports bars to storage.
        /// </summary>
        /// <param name="symbol">Symbol of importing bars</param>
        /// <param name="period">Period of importing bars</param>
        /// <param name="bars">Importing bars</param>
        /// <param name="priceType">Price type of importing bars</param>
        /// <param name="overwriteBarChainsWithEqualTime"></param>
        public void Import(string symbol, BarPeriod period, IEnumerable <Bar> bars, PriceType priceType, bool overwriteBarChainsWithEqualTime)
        {
            var provider    = this.GetOrCreateHistoryManager(symbol);
            var fxPeriod    = StorageConvert.ToPeriodicity(period);
            var fxPriceType = StorageConvert.ToFxPriceType(priceType);
            var fxBars      = bars.Select(StorageConvert.ToHistoryBar);

            provider.ImportBars(
                fxBars,
                symbol,
                fxPeriod,
                fxPriceType,
                true,
                overwriteBarChainsWithEqualTime ? BarsImportRules.Replace : BarsImportRules.Skip,
                null
                );
        }
Exemplo n.º 8
0
        public HistoryInfo GetBarsInfo(string symbol, PriceType priceType, BarPeriod period)
        {
            try
            {
                var source      = this.GetRemoteOrLocalSource(symbol);
                var periodicity = StorageConvert.ToPeriodicity(period);
                var priceTypeEx = StorageConvert.ToFxPriceType(priceType);
                var info        = source.GetBarsHistoryInfo(symbol, periodicity, priceTypeEx);

                var result = new HistoryInfo(info.AvailableFrom.Value, info.AvailableTo.Value);
                return(result);
            }
            catch (StorageHistoryNotFoundException ex)
            {
                throw new HistoryNotFoundException("GetBarsInfo", ex);
            }
        }
Exemplo n.º 9
0
        Bar[] GetOfflineBars(string symbol, PriceType priceType, BarPeriod period, DateTime startTime, int barsNumber)
        {
            var manager     = this.storage.GetOrCreateHistoryManager(symbol);
            var fxPriceType = StorageConvert.ToFxPriceType(priceType);

            var report = manager.QueryBarHistory(startTime, -barsNumber, symbol, period.ToString(), fxPriceType);

            var items = report.Items;

            if (barsNumber > 0)
            {
                return(items.Select(o => StorageConvert.ToBar(o, period)).ToArray());
            }
            else if (barsNumber < 0)
            {
                return(items.Select(o => StorageConvert.ToBar(o, period)).Reverse().ToArray());
            }

            return(Enumerable.Empty <Bar>().ToArray());
        }
Exemplo n.º 10
0
        public Quote[] GetQuotes(string symbol, DateTime startTime, DateTime endTime, int depth)
        {
            try
            {
                if (depth == 0)
                {
                    depth = int.MaxValue;
                }

                var manager       = this.storage.GetOrCreateHistoryManager(symbol);
                var includeLevel2 = depth != 1;

                if (this.source != null)
                {
                    // online mode
                    if (!manager.TicksAreSynchronized(this.source, symbol, includeLevel2, startTime, endTime, false))
                    {
                        manager.SynchronizeTicks(this.source, symbol, includeLevel2, startTime, endTime, false, NullCallback);
                    }
                }

                var ticks = new List <TickValue>();
                if (startTime < endTime)
                {
                    ForwardFillTicks(manager, symbol, includeLevel2, startTime, endTime, ticks);
                }
                else
                {
                    BackwardFillTicks(manager, symbol, includeLevel2, startTime, endTime, ticks);
                }

                var converter = new StorageConvert();
                var result    = ticks.Select(o => converter.ToQuote(symbol, o, depth)).ToArray();

                return(result);
            }
            catch (StorageHistoryNotFoundException ex)
            {
                throw new HistoryNotFoundException("GetQuotes", ex);
            }
        }
Exemplo n.º 11
0
        Quote[] GetOfflineQuotes(string symbol, DateTime startTime, int quotesNumber, int depth)
        {
            var includeLevel2 = depth != 1;

            var manager = this.storage.GetOrCreateHistoryManager(symbol);
            var report  = manager.QueryTickHistory(startTime, -quotesNumber, symbol, includeLevel2);

            var items = report.Items;

            var converter = new StorageConvert();

            if (quotesNumber > 0)
            {
                return(items.Select(o => converter.ToQuote(symbol, o, depth)).ToArray());
            }
            else if (quotesNumber < 0)
            {
                return(items.Select(o => converter.ToQuote(symbol, o, depth)).Reverse().ToArray());
            }

            return(Enumerable.Empty <Quote>().ToArray());
        }
Exemplo n.º 12
0
        Quote[] GetOnlineQuotes(string symbol, DateTime startTime, int quotesNumber, int depth)
        {
            var includeLevel2 = depth != 1;

            var manager = this.storage.GetOrCreateHistoryManager(symbol);

            var ticks = new List <TickValue>();

            if (quotesNumber > 0)
            {
                ForwardFillTicks(manager, symbol, includeLevel2, startTime, quotesNumber, ticks);
            }
            else if (quotesNumber < 0)
            {
                BackwardFillTicks(manager, symbol, includeLevel2, startTime, -quotesNumber, ticks);
            }

            var converter = new StorageConvert();
            var result    = ticks.Select(o => converter.ToQuote(symbol, o, depth)).ToArray();

            return(result);
        }
Exemplo n.º 13
0
        /// <summary>
        /// Reads data chunk for a specified symbol.
        /// </summary>
        /// <param name="symbol">Can not be null.</param>
        /// <param name="periodicity">Can not be null.</param>
        /// <param name="priceType"></param>
        /// <returns>Can not be null</returns>
        byte[] GetBarMetadataFile(string symbol, string periodicity, FxPriceType priceType)
        {
            var type = StorageConvert.ToPriceType(priceType);

            return(this.Attempt(this.DoGetBarMetadataFile, symbol, type, periodicity));
        }
Exemplo n.º 14
0
		/// <summary>
		/// The method append a new quote to the storage.
		/// </summary>
		/// <param name="quote"></param>
		public void Append(Quote quote)
		{
			var manager = this.GetOrCreateHistoryManager(quote.Symbol);
			var converter = new StorageConvert();
			var tick = converter.ToFeedTick(quote);
			manager.Append(tick);
		}