-
-
Save joshterrill/4efce9e04517bc3f6ce44579200160cf to your computer and use it in GitHub Desktop.
python 3 Stock Ticker with colored text and percent gain since last seen. Requires connection to Yahoo finance API .Includes indices for s&p 500 and NASDAQ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from termcolor import colored | |
_title = colored("----.----.----^", 'green') | |
print(_title) | |
InteractiveVersion = """""" | |
tickerQ= input('ticker?') | |
stockGroupSelection = input('Selection(snp | nasdaq):') | |
stockGroupSelection=stockGroupSelection.lower() | |
commandLineVersion=""" | |
import sys | |
tickerQ = 'no thanks' | |
try: | |
stockGroupSelection = sys.argv[1] | |
except: | |
print(colored("StockGroup required as system argument to program.","red")) | |
""" | |
import time | |
_startTime = time.time() # Checkpoint times ['T+',timeSinceStart] are printed throughout. | |
print("ProgramStart") | |
from datetime import datetime, timedelta | |
_ProgramStartTime = str(datetime.now()) | |
print(colored(str(["T+",time.time()-_startTime]),"blue")) | |
print("IMPORT:YahooFinance") | |
from yahoo_finance import Share | |
print(colored(str(["T+",time.time()-_startTime]),"blue")) | |
print("IDENTIFYING STOCKGROUP") | |
#import pandas as pd | |
NASDAQ = ['ADSK', 'AKAM', 'ALXN', 'AMAT', 'AMGN', 'AMZN', 'ATVI', 'AVGO', 'BBBY', 'BIDU', 'BIIB', 'BMRN', 'CA', 'CELG', | |
'CERN', 'CHKP', 'CHTR', 'CMCSA', 'COST', 'CSCO', 'CSX', 'CTRP', 'CTSH', 'CTXS', 'DISCA', 'DISCK', 'DISH', 'DLTR', | |
'EA', 'EBAY', 'ESRX', 'EXPE', 'FAST', 'FB', 'FISV', 'FOX', 'FOXA', 'GILD', 'GOOG', 'GOOGL', 'HSIC', 'ILMN', | |
'INCY', 'INTC', 'INTU', 'ISRG', 'JD', 'KHC', 'LBTYA', 'LBTYK', 'LLTC', 'LRCX', 'LVNTA', 'MAR', 'MAT', 'MCHP', | |
'MDLZ', 'MNST', 'MSFT', 'MU', 'MXIM', 'MYL', 'NCLH', 'NFLX', 'NTAP', 'NTES', 'NVDA', 'NXPI', 'ORLY', 'PAYX', | |
'PCAR', 'PCLN', 'PYPL', 'QCOM', 'QVCA', 'REGN', 'ROST', 'SBAC', 'SBUX', 'SIRI', 'SRCL', 'STX', 'SWKS', 'SYMC', | |
'TMUS', 'TRIP', 'TSCO', 'TSLA', 'TXN', 'ULTA', 'VIAB', 'VOD', 'VRSK', 'VRTX', 'WBA', 'WDC', 'WFM', 'XLNX', | |
'YHOO', 'XRAY'] | |
SNP = ['MMM', 'ABT', 'ABBV', 'ACN', 'ATVI', 'AYI', 'ADBE', 'AAP', 'AES', 'AET', 'AMG', 'AFL', 'A', 'APD', 'AKAM', 'ALK', | |
'ALB', 'AGN', 'LNT', 'ALXN', 'ALLE', 'ADS', 'ALL', 'GOOGL', 'GOOG', 'MO', 'AMZN', 'AEE', 'AAL', 'AEP', 'AXP', | |
'AIG', 'AMT', 'AWK', 'AMP', 'ABC', 'AME', 'AMGN', 'APH', 'APC', 'ADI', 'ANTM', 'AON', 'APA', 'AIV', 'AAPL', 'AMAT', | |
'ADM', 'ARNC', 'AJG', 'AIZ', 'T', 'ADSK', 'ADP', 'AN', 'AZO', 'AVB', 'AVY', 'BHI', 'BLL', 'BAC', 'BK', 'BCR', | |
'BAX', 'BBT', 'BDX', 'BBBY', 'BRK-B', 'BBY', 'BIIB', 'BLK', 'HRB', 'BA', 'BWA', 'BXP', 'BSX', 'BMY', 'AVGO', 'BF-B', | |
'CHRW', 'CA', 'COG', 'CPB', 'COF', 'CAH', 'HSIC', 'KMX', 'CCL', 'CAT', 'CBG', 'CBS', 'CELG', 'CNC', 'CNP', 'CTL', | |
'CERN', 'CF', 'SCHW', 'CHTR', 'CHK', 'CVX', 'CMG', 'CB', 'CHD', 'CI', 'XEC', 'CINF', 'CTAS', 'CSCO', 'C', 'CFG', | |
'CTXS', 'CLX', 'CME', 'CMS', 'COH', 'KO', 'CTSH', 'CL', 'CMCSA', 'CMA', 'CAG', 'CXO', 'COP', 'ED', 'STZ', 'GLW', | |
'COST', 'COTY', 'CCI', 'CSRA', 'CSX', 'CMI', 'CVS', 'DHI', 'DHR', 'DRI', 'DVA', 'DE', 'DLPH', 'DAL', 'XRAY', 'DVN', | |
'DLR', 'DFS', 'DISCA', 'DISCK', 'DG', 'DLTR', 'D', 'DOV', 'DOW', 'DPS', 'DTE', 'DD', 'DUK', 'DNB', 'ETFC', 'EMN', | |
'ETN', 'EBAY', 'ECL', 'EIX', 'EW', 'EA', 'EMR', 'ENDP', 'ETR', 'EVHC', 'EOG', 'EQT', 'EFX', 'EQIX', 'EQR', 'ESS', | |
'EL', 'ES', 'EXC', 'EXPE', 'EXPD', 'ESRX', 'EXR', 'XOM', 'FFIV', 'FB', 'FAST', 'FRT', 'FDX', 'FIS', 'FITB', 'FSLR', | |
'FE', 'FISV', 'FLIR', 'FLS', 'FLR', 'FMC', 'FTI', 'FL', 'F', 'FTV', 'FBHS', 'BEN', 'FCX', 'FTR', 'GPS', 'GRMN', | |
'GD', 'GE', 'GGP', 'GIS', 'GM', 'GPC', 'GILD', 'GPN', 'GS', 'GT', 'GWW', 'HAL', 'HBI', 'HOG', 'HAR', 'HRS', 'HIG', | |
'HAS', 'HCA', 'HCP', 'HP', 'HES', 'HPE', 'HOLX', 'HD', 'HON', 'HRL', 'HST', 'HPQ', 'HUM', 'HBAN', 'IDXX', 'ITW', | |
'ILMN', 'IR', 'INTC', 'ICE', 'IBM', 'IP', 'IPG', 'IFF', 'INTU', 'ISRG', 'IVZ', 'IRM', 'JEC', 'JBHT', 'SJM', 'JNJ', | |
'JCI', 'JPM', 'JNPR', 'KSU', 'K', 'KEY', 'KMB', 'KIM','KMI', 'KLAC', 'KSS', 'KHC', 'KR', 'LB', 'LLL', 'LH', 'LRCX', | |
'LEG', 'LEN', 'LVLT', 'LUK', 'LLY', 'LNC', 'LLTC', 'LKQ', 'LMT', 'L', 'LOW', 'LYB', 'MTB', 'MAC', 'M', 'MNK', 'MRO', | |
'MPC', 'MAR', 'MMC', 'MLM', 'MAS', 'MA', 'MAT', 'MKC', 'MCD', 'MCK', 'MJN', 'MDT', 'MRK', 'MET', 'MTD', 'KORS', | |
'MCHP', 'MU', 'MSFT', 'MAA', 'MHK', 'TAP', 'MDLZ', 'MON', 'MNST', 'MCO', 'MS', 'MOS', 'MSI', 'MUR', 'MYL', 'NDAQ', | |
'NOV', 'NAVI', 'NTAP', 'NFLX', 'NWL', 'NFX', 'NEM', 'NWSA', 'NWS', 'NEE', 'NLSN', 'NKE', 'NI', 'NBL', 'JWN', 'NSC', | |
'NTRS', 'NOC', 'NRG', 'NUE', 'NVDA', 'ORLY', 'OXY', 'OMC', 'OKE', 'ORCL', 'PCAR', 'PH', 'PDCO', 'PAYX', 'PYPL', | |
'PNR', 'PBCT', 'PEP', 'PKI', 'PRGO', 'PFE', 'PCG', 'PM', 'PSX', 'PNW', 'PXD', 'PBI', 'PNC', 'RL', 'PPG', 'PPL', | |
'PX', 'PCLN', 'PFG', 'PG', 'PGR', 'PLD', 'PRU', 'PEG', 'PSA', 'PHM', 'PVH', 'QRVO', 'PWR', 'QCOM', 'DGX', 'RRC', | |
'RTN', 'O', 'RHT', 'REGN', 'RF', 'RSG', 'RAI', 'RHI', 'ROK', 'COL', 'ROP', 'ROST', 'RCL', 'R', 'CRM', 'SCG', 'SLB', 'SNI', 'STX', 'SEE', 'SRE', 'SHW', 'SIG', 'SPG', 'SWKS', 'SLG', 'SNA', 'SO', 'LUV', 'SWN', 'SE', 'SPGI', 'SWK', | |
'SPLS', 'SBUX', 'STT', 'SRCL', 'SYK', 'STI', 'SYMC', 'SYF', 'SYY', 'TROW', 'TGT', 'TEL', 'TGNA', 'TDC', 'TSO', | |
'TXN', 'TXT', 'COO', 'HSY', 'TRV', 'TMO', 'TIF', 'TWX', 'TJX', 'TMK', 'TSS', 'TSCO', 'TDG', 'RIG', 'TRIP', 'FOXA', | |
'FOX', 'TSN', 'UDR', 'ULTA', 'USB', 'UA', 'UAA', 'UNP', 'UAL', 'UNH', 'UPS', 'URI', 'UTX', 'UHS', 'UNM', 'URBN', | |
'VFC', 'VLO', 'VAR', 'VTR', 'VRSN', 'VRSK', 'VZ', 'VRTX', 'VIAB', 'V', 'VNO', 'VMC', 'WMT', 'WBA', 'DIS', 'WM', | |
'WAT', 'WEC', 'WFC', 'HCN', 'WDC', 'WU', 'WRK', 'WY', 'WHR', 'WFM', 'WMB', 'WLTW', 'WYN', 'WYNN', 'XEL', 'XRX', | |
'XLNX', 'XL', 'XYL', 'YHOO', 'YUM', 'ZBH', 'ZION', 'ZTS'] | |
three =['ADSK', 'AKAM', 'ALXN'] | |
if(stockGroupSelection == "snp"): | |
_StockGrouptags = SNP | |
elif(stockGroupSelection == "nasdaq"): | |
_StockGrouptags = NASDAQ | |
else: | |
print(colored("NO STOCK GROUP:","red")+stockGroupSelection) | |
print("DEFAULT STOCK GROUP NASDAQ") | |
_StockGrouptags = NASDAQ | |
print(colored(str(["T+",time.time()-_startTime]),"blue")) | |
print("BUILDING STOCKGROUP API HOOKS") | |
#_StockGroupstocks = {k:Share(k) for k in _StockGrouptags} # concise | |
_StockGroupstocks = {} | |
for k in _StockGrouptags: | |
try: | |
_StockGroupstocks[k] = Share(k) | |
print(colored(k, "blue")) | |
except: | |
print(colored(k, "red")) | |
# end verbose | |
def reqRefresh(k): | |
try: | |
_StockGroupstocks[k].refresh() | |
except: | |
retryQ = input("Retry request:"+colored(k,"red")+"?") | |
if("y" in retryQ): | |
reqRefresh(k) | |
if "y" in tickerQ: | |
_StockGrouplastQuote = {k: None for k in _StockGrouptags} | |
counter = 0 | |
secondCounter = 0 | |
while True: | |
for k in _StockGrouptags: | |
reqRefresh(k) | |
counter += 1 | |
quote = _StockGroupstocks[k].get_price() | |
if _StockGrouplastQuote[k] == None or _StockGrouplastQuote[k] == quote: | |
print( k + " : " + str(quote) , " , ", end="") | |
else: | |
perc = str(round((float(quote)/float(_StockGrouplastQuote[k])-1)*100,2)) | |
if(_StockGrouplastQuote[k]<quote): | |
print(colored((k + " : " + str(quote)) +"_"+perc+"%","green"), " , ", end="") | |
else: | |
print(colored((k + " : " + str(quote)) +"_"+perc+"%","red"), " , ", end="") | |
_StockGrouplastQuote[k] = quote | |
if(counter == 8): | |
counter = 0 | |
print(datetime.now()) | |
q = input('ticker?') | |
if "y" in q: | |
counter = 0 | |
continue | |
else: | |
break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment