def get_option_historicals_by_chain_id(chain_id, span='week'): """Returns the data that is used to make the graphs. :param chain_id: The id for the option_chain (if not available use original option_historicals) :type chain_id: str :param span: Sets the range of the data to be either 'day', 'week', 'year', or '5year'. Default is 'week'. :type span: Optional[str] :returns: Returns a list that contains a list for each symbol. \ Each list contains a dictionary where each dictionary is for a different time. """ span_check = ['day', 'week', 'year', '5year'] if span not in span_check: print('ERROR: Span must be "day","week","year",or "5year"') return ([None]) if span == 'day': interval = '5minute' elif span == 'week': interval = '10minute' elif span == 'year': interval = 'day' else: interval = 'week' url = urls.option_historicals(chain_id) payload = {'span': span, 'interval': interval} data = helper.request_get(url, 'regular', payload) return (data)
def get_option_historicals(symbol, expirationDate, strike, optionType, span='week', state='expired', tradable='untradable'): """Returns the data that is used to make the graphs. :param symbol: The ticker of the stock. :type symbol: str :param expirationDate: Represents the expiration date in the format YYYY-MM-DD. :type expirationDate: str :param strike: Represents the price of the option. :type strike: str :param optionType: Can be either 'call' or 'put'. :type optionType: str :param span: Sets the range of the data to be either 'day', 'week', 'year', or '5year'. Default is 'week'. :type span: Optional[str] :returns: Returns a list that contains a list for each symbol. \ Each list contains a dictionary where each dictionary is for a different time. """ try: symbol = symbol.upper().strip() optionType = optionType.lower().strip() except AttributeError as message: print(message) return [None] span_check = ['day', 'week', 'year', '5year'] if span not in span_check: print('ERROR: Span must be "day","week","year",or "5year"') return ([None]) if span == 'day': interval = '5minute' elif span == 'week': interval = '10minute' elif span == 'year': interval = 'day' else: interval = 'week' optionID = helper.id_for_option(symbol, expirationDate, strike, optionType, state, tradable) url = urls.option_historicals(optionID) payload = {'span': span, 'interval': interval} data = helper.request_get(url, 'regular', payload) return (data)
def get_option_historicals(symbol, expirationDate, strikePrice, optionType, interval='hour', span='week', bounds='regular', info=None): """Returns the data that is used to make the graphs. :param symbol: The ticker of the stock. :type symbol: str :param expirationDate: Represents the expiration date in the format YYYY-MM-DD. :type expirationDate: str :param strikePrice: Represents the price of the option. :type strikePrice: str :param optionType: Can be either 'call' or 'put'. :type optionType: str :param interval: Interval to retrieve data for. Values are '5minute', '10minute', 'hour', 'day', 'week'. Default is 'hour'. :type interval: Optional[str] :param span: Sets the range of the data to be either 'day', 'week', 'year', or '5year'. Default is 'week'. :type span: Optional[str] :param bounds: Represents if graph will include extended trading hours or just regular trading hours. Values are 'regular', 'trading', and 'extended'. \ regular hours are 6 hours long, trading hours are 9 hours long, and extended hours are 16 hours long. Default is 'regular' :type bounds: Optional[str] :param info: Will filter the results to have a list of the values that correspond to key that matches info. :type info: Optional[str] :returns: Returns a list that contains a list for each symbol. \ Each list contains a dictionary where each dictionary is for a different time. """ try: symbol = symbol.upper().strip() optionType = optionType.lower().strip() except AttributeError as message: print(message, file=helper.get_output()) return [None] interval_check = ['5minute', '10minute', 'hour', 'day', 'week'] span_check = ['day', 'week', 'year', '5year'] bounds_check = ['extended', 'regular', 'trading'] if interval not in interval_check: print( 'ERROR: Interval must be "5minute","10minute","hour","day",or "week"', file=helper.get_output()) return([None]) if span not in span_check: print('ERROR: Span must be "day", "week", "year", or "5year"', file=helper.get_output()) return([None]) if bounds not in bounds_check: print('ERROR: Bounds must be "extended","regular",or "trading"', file=helper.get_output()) return([None]) optionID = helper.id_for_option(symbol, expirationDate, strikePrice, optionType) url = urls.option_historicals(optionID) payload = {'span': span, 'interval': interval, 'bounds': bounds} data = helper.request_get(url, 'regular', payload) if (data == None or data == [None]): return data histData = [] for subitem in data['data_points']: subitem['symbol'] = symbol histData.append(subitem) return(helper.filter(histData, info))