Exemple #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);
            }
        }
Exemple #2
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());
        }