Source code for robin_stocks.robinhood.markets

"""Contains functions for getting market level data."""
from robin_stocks.robinhood.helper import *
from robin_stocks.robinhood.urls import *
from robin_stocks.robinhood.stocks import *

[docs]def get_top_movers_sp500(direction, info=None): """Returns a list of the top S&P500 movers up or down for the day. :param direction: The direction of movement either 'up' or 'down' :type direction: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each mover. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * instrument_url * symbol * updated_at * price_movement * description """ try: direction = direction.lower().strip() except AttributeError as message: print(message, file=get_output()) return None if (direction != 'up' and direction != 'down'): print('Error: direction must be "up" or "down"', file=get_output()) return([None]) url = movers_sp500_url() payload = {'direction': direction} data = request_get(url, 'pagination', payload) return(filter_data(data, info))
[docs]def get_top_100(info=None): """Returns a list of the Top 100 stocks on Robin Hood. :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each mover. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * ask_price * ask_size * bid_price * bid_size * last_trade_price * last_extended_hours_trade_price * previous_close * adjusted_previous_close * previous_close_date * symbol * trading_halted * has_traded * last_trade_price_source * updated_at * instrument """ url = get_100_most_popular_url() data = request_get(url, 'regular') data = filter_data(data, 'instruments') symbols = [get_symbol_by_url(x) for x in data] data = get_quotes(symbols) return(filter_data(data, info))
[docs]def get_top_movers(info=None): """Returns a list of the Top 20 movers on Robin Hood. :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each mover. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * ask_price * ask_size * bid_price * bid_size * last_trade_price * last_extended_hours_trade_price * previous_close * adjusted_previous_close * previous_close_date * symbol * trading_halted * has_traded * last_trade_price_source * updated_at * instrument """ url = movers_top_url() data = request_get(url, 'regular') data = filter_data(data, 'instruments') symbols = [get_symbol_by_url(x) for x in data] data = get_quotes(symbols) return(filter_data(data, info))
[docs]def get_all_stocks_from_market_tag(tag, info=None): """Returns all the stock quote information that matches a tag category. :param tag: The category to filter for. Examples include 'biopharmaceutical', 'upcoming-earnings', 'most-popular-under-25', and 'technology'. :type tag: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each mover. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * ask_price * ask_size * bid_price * bid_size * last_trade_price * last_extended_hours_trade_price * previous_close * adjusted_previous_close * previous_close_date * symbol * trading_halted * has_traded * last_trade_price_source * updated_at * instrument """ url = market_category_url(tag) data = request_get(url, 'regular') data = filter_data(data, 'instruments') if not data: print('ERROR: "{}" is not a valid tag'.format(tag), file=get_output()) return [None] symbols = [get_symbol_by_url(x) for x in data] data = get_quotes(symbols) return(filter_data(data, info))
[docs]def get_markets(info=None): """Returns a list of available markets. :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each market. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * url * todays_hours * mic * operating_mic * acronym * name * city * country * timezone * website """ url = markets_url() data = request_get(url, 'pagination') return(filter_data(data, info))
[docs]def get_market_today_hours(market, info=None): """Returns the opening and closing hours of a specific market for today. Also will tell you if market is market is open on that date. :param market: The 'mic' value for the market. Can be found using get_markets(). :type market: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a dictionary of key/value pairs for the specific market. If info parameter is provided, \ the string value for the corresponding key will be provided. :Dictionary Keys: * date * is_open * opens_at * closes_at * extended_opens_at * extended_closes_at * previous_open_hours * next_open_hours """ markets = get_markets() result = next((x for x in markets if x['mic'] == market), None) if not result: raise Exception('Not a valid market name. Check get_markets() for a list of market information.') url = result['todays_hours'] data = request_get(url, 'regular') return(filter_data(data, info))
[docs]def get_market_next_open_hours(market, info=None): """Returns the opening and closing hours for the next open trading day after today. Also will tell you if market is market is open on that date. :param market: The 'mic' value for the market. Can be found using get_markets(). :type market: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a dictionary of key/value pairs for the specific market. If info parameter is provided, \ the string value for the corresponding key will be provided. :Dictionary Keys: * date * is_open * opens_at * closes_at * extended_opens_at * extended_closes_at * previous_open_hours * next_open_hours """ url = get_market_today_hours(market, info='next_open_hours') data = request_get(url, 'regular') return(filter_data(data, info))
[docs]def get_market_next_open_hours_after_date(market, date, info=None): """Returns the opening and closing hours for the next open trading day after a date that is specified. Also will tell you if market is market is open on that date. :param market: The 'mic' value for the market. Can be found using get_markets(). :type market: str :param date: The date you want to find the next available trading day after. format is YYYY-MM-DD. :type date: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a dictionary of key/value pairs for the specific market. If info parameter is provided, \ the string value for the corresponding key will be provided. :Dictionary Keys: * date * is_open * opens_at * closes_at * extended_opens_at * extended_closes_at * previous_open_hours * next_open_hours """ url = get_market_hours(market, date, info='next_open_hours') data = request_get(url, 'regular') return(filter_data(data, info))
[docs]def get_market_hours(market, date, info=None): """Returns the opening and closing hours of a specific market on a specific date. Also will tell you if market is market is open on that date. Can be used with past or future dates. :param market: The 'mic' value for the market. Can be found using get_markets(). :type market: str :param date: The date you want to get information for. format is YYYY-MM-DD. :type date: str :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a dictionary of key/value pairs for the specific market. If info parameter is provided, \ the string value for the corresponding key will be provided. :Dictionary Keys: * date * is_open * opens_at * closes_at * extended_opens_at * extended_closes_at * previous_open_hours * next_open_hours """ url = market_hours_url(market, date) data = request_get(url, 'regular') return(filter_data(data, info))
[docs]def get_currency_pairs(info=None): """Returns currency pairs :param info: Will filter the results to get a specific value. :type info: Optional[str] :returns: Returns a list of dictionaries of key/value pairs for each currency pair. If info parameter is provided, \ a list of strings is returned where the strings are the value of the key that matches info. :Dictionary Keys: * asset_currency * display_only * id * max_order_size * min_order_size * min_order_price_increment * min_order_quantity_increment * name * quote_currency * symbol * tradability """ url = currency_url() data = request_get(url, 'results') return(filter_data(data, info))