Exemplo n.º 1
0
        /// <summary>
        /// Gets <see cref="FutureHistory"/> object for a given symbol, date and resolution
        /// </summary>
        /// <param name="symbol">The symbol to retrieve historical future data for</param>
        /// <param name="date">Date of the data</param>
        /// <param name="resolution">The resolution to request</param>
        /// <returns>A <see cref="FutureHistory"/> object that contains historical future data.</returns>
        public FutureHistory GetFutureHistory(Symbol symbol, DateTime date, Resolution? resolution = null)
        {
            SetStartDate(date.AddDays(1));
            var future = Securities[symbol] as Future;

            var provider = new BacktestingFutureChainProvider();
            var allSymbols = provider.GetFutureContractList(future.Symbol, date);

            var requests = future.ContractFilter.Filter(new FutureFilterUniverse(allSymbols, new Tick { Time = date }))
                .Select(x =>
                     new HistoryRequest(date.AddDays(-1),
                                        date,
                                        typeof(QuoteBar),
                                        x,
                                        resolution ?? future.Resolution,
                                        future.Exchange.Hours,
                                        MarketHoursDatabase.FromDataFolder().GetDataTimeZone(future.Symbol.ID.Market, future.Symbol, future.Type),
                                        Resolution.Minute,
                                        future.IsExtendedMarketHours,
                                        future.IsCustomData(),
                                        DataNormalizationMode.Raw,
                                        LeanData.GetCommonTickTypeForCommonDataTypes(typeof(QuoteBar), future.Type))
                    );

            return new FutureHistory(HistoryProvider.GetHistory(requests, TimeZone).Memoize());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets <see cref="OptionHistory"/> object for a given symbol, date and resolution
        /// </summary>
        /// <param name="symbol">The symbol to retrieve historical option data for</param>
        /// <param name="date">Date of the data</param>
        /// <param name="resolution">The resolution to request</param>
        /// <returns>A <see cref="OptionHistory"/> object that contains historical option data.</returns>
        public OptionHistory GetOptionHistory(Symbol symbol, DateTime date, Resolution? resolution = null)
        {
            SetStartDate(date.AddDays(1));
            var option = Securities[symbol] as Option;
            var underlying = AddEquity(symbol.Underlying.Value, option.Resolution);

            var provider = new BacktestingOptionChainProvider();
            var allSymbols = provider.GetOptionContractList(symbol.Underlying, date);
            
            var requests = History(symbol.Underlying, TimeSpan.FromDays(1), resolution)
                .SelectMany(x => option.ContractFilter.Filter(new OptionFilterUniverse(allSymbols, x)))
                .Distinct()
                .Select(x =>
                     new HistoryRequest(date.AddDays(-1), 
                                        date, 
                                        typeof(QuoteBar), 
                                        x, 
                                        resolution ?? option.Resolution, 
                                        underlying.Exchange.Hours,
                                        MarketHoursDatabase.FromDataFolder().GetDataTimeZone(underlying.Symbol.ID.Market, underlying.Symbol, underlying.Type),
                                        Resolution.Minute, 
                                        underlying.IsExtendedMarketHours, 
                                        underlying.IsCustomData(), 
                                        DataNormalizationMode.Raw,
                                        LeanData.GetCommonTickTypeForCommonDataTypes(typeof(QuoteBar), underlying.Type))
                    );

            requests = requests.Union(new[] { new HistoryRequest(underlying.Subscriptions.FirstOrDefault(), underlying.Exchange.Hours, date.AddDays(-1), date) });

            return new OptionHistory(HistoryProvider.GetHistory(requests.OrderByDescending(x => x.Symbol.SecurityType), TimeZone).Memoize());
        }