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