def view(other_args: List[str], s_ticker: str, s_interval, df_stock): """ Plot loaded ticker or load ticker and plot Parameters ---------- other_args:List[str] Argparse arguments s_ticker: str Ticker to load s_interval: str Interval tto get data for df_stock: pd.Dataframe Preloaded dataframe to plot """ parser = argparse.ArgumentParser( add_help=False, prog="view", description="Visualize historical data of a stock.") try: ns_parser = parse_known_args_and_warn(parser, other_args) if not ns_parser: return if not s_ticker: print("No ticker loaded. First use `load {ticker}`") print("") return # Plot view of the stock plot_view_stock(df_stock, s_ticker, s_interval) except Exception as e: print("Error in plotting:") print(e, "\n") except SystemExit: print("") return
def view(l_args, s_ticker, s_start, s_interval, df_stock): parser = argparse.ArgumentParser( add_help=False, prog="view", description= "Visualize historical data of a stock. An alpha_vantage key is necessary.", ) if s_ticker: parser.add_argument( "-t", "--ticker", action="store", dest="s_ticker", default=s_ticker, help="Stock ticker", ) else: parser.add_argument( "-t", "--ticker", action="store", dest="s_ticker", required=True, help="Stock ticker", ) parser.add_argument( "-s", "--start", type=valid_date, dest="s_start_date", default=s_start, help="The starting date (format YYYY-MM-DD) of the stock", ) parser.add_argument( "-i", "--interval", action="store", dest="n_interval", type=int, default=0, choices=[1, 5, 15, 30, 60], help="Intraday stock minutes", ) parser.add_argument( "--type", action="store", dest="type", type=check_ohlc, default="a", # in case it's adjusted close help=("ohlc corresponds to types: open; high; low; close; " "while oc corresponds to types: open; close"), ) try: ns_parser = parse_known_args_and_warn(parser, l_args) if not ns_parser: return except SystemExit: print("") return # Update values: s_ticker = ns_parser.s_ticker # A new interval intraday period was given if ns_parser.n_interval != 0: s_interval = str(ns_parser.n_interval) + "min" type_candles = lett_to_num(ns_parser.type) df_stock.sort_index(ascending=True, inplace=True) # Slice dataframe from the starting date YYYY-MM-DD selected df_stock = df_stock[ns_parser.s_start_date:] # Daily if s_interval == "1440min": # The default doesn't exist for intradaily data ln_col_idx = [int(x) - 1 for x in list(type_candles)] # Check that the types given are not bigger than 4, as there are only 5 types (0-4) # pylint: disable=len-as-condition if len([i for i in ln_col_idx if i > 4]) > 0: print( "An index bigger than 4 was given, which is wrong. Try again") return # Append last column of df to be filtered which corresponds to: 6. Volume ln_col_idx.append(5) # Intraday else: # The default doesn't exist for intradaily data if ns_parser.type == "a": ln_col_idx = [3] else: ln_col_idx = [int(x) - 1 for x in list(type_candles)] # Check that the types given are not bigger than 3, as there are only 4 types (0-3) # pylint: disable=len-as-condition if len([i for i in ln_col_idx if i > 3]) > 0: print( "An index bigger than 3 was given, which is wrong. Try again") return # Append last column of df to be filtered which corresponds to: 5. Volume ln_col_idx.append(4) # Plot view of the stock plot_view_stock(df_stock.iloc[:, ln_col_idx], ns_parser.s_ticker)