portfolio tracking
This commit is contained in:
parent
2611f54314
commit
e607c83a00
125
stockTicker.py
125
stockTicker.py
@ -1661,6 +1661,7 @@ class StockTicker():
|
|||||||
self.blank = Image.new('RGB', (10, 32))
|
self.blank = Image.new('RGB', (10, 32))
|
||||||
return finalDisplayImage
|
return finalDisplayImage
|
||||||
|
|
||||||
|
|
||||||
def getStockImage(self):
|
def getStockImage(self):
|
||||||
|
|
||||||
f = open('csv/stocks_settings.json', 'r')
|
f = open('csv/stocks_settings.json', 'r')
|
||||||
@ -1673,10 +1674,15 @@ class StockTicker():
|
|||||||
image_list.append(self.blank)
|
image_list.append(self.blank)
|
||||||
else:
|
else:
|
||||||
image_list = []
|
image_list = []
|
||||||
|
|
||||||
|
if all_stocks_settings['chart']:
|
||||||
|
try:
|
||||||
|
f = open('csv/portfolio_settings.json', 'r')
|
||||||
|
portfolio_settings = json.load(f)['symbols']
|
||||||
|
f.close()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
stock_info = all_stocks_settings['symbols']
|
stock_info = all_stocks_settings['symbols']
|
||||||
symbols = list(stock_info.keys())
|
symbols = list(stock_info.keys())
|
||||||
|
|
||||||
@ -1687,27 +1693,19 @@ class StockTicker():
|
|||||||
|
|
||||||
change = float(info['change']) #TEXT
|
change = float(info['change']) #TEXT
|
||||||
ticker = symbol #TEXT
|
ticker = symbol #TEXT
|
||||||
|
|
||||||
|
|
||||||
arrow, change = self.getArrow(change)
|
arrow, change = self.getArrow(change)
|
||||||
|
|
||||||
percent_change = '%.2f' % abs(float(info['percent_change'])) + '%'
|
percent_change = '%.2f' % abs(float(info['percent_change'])) + '%'
|
||||||
point_change = '%.2f' % abs(change)
|
point_change = '%.2f' % abs(change)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
current = '%.2f' % float(info['current']) #TEXT
|
current = '%.2f' % float(info['current']) #TEXT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if not all_stocks_settings['percent']:
|
if not all_stocks_settings['percent']:
|
||||||
percent_change = False
|
percent_change = False
|
||||||
if not all_stocks_settings['point']:
|
if not all_stocks_settings['point']:
|
||||||
point_change = False
|
point_change = False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
midFrame = self.textToImage(ticker, current, arrow, percent_change, point_change) #IMAGE THE TEXT
|
midFrame = self.textToImage(ticker, current, arrow, percent_change, point_change) #IMAGE THE TEXT
|
||||||
|
|
||||||
if all_stocks_settings['logos']:
|
if all_stocks_settings['logos']:
|
||||||
@ -1722,29 +1720,102 @@ class StockTicker():
|
|||||||
else:
|
else:
|
||||||
stitchedStock = midFrame
|
stitchedStock = midFrame
|
||||||
|
|
||||||
|
|
||||||
|
if all_stocks_settings['chart'] and (symbol in portfolio_settings): #IF USER INPUTTED PORTFOLIO SETTINGS, DISPLAY PORTFOLIO INFO
|
||||||
|
try:
|
||||||
|
cost = portfolio_settings[symbol]['cost']
|
||||||
|
day = portfolio_settings[symbol]['day']
|
||||||
|
shares = portfolio_settings[symbol]['shares']
|
||||||
|
|
||||||
|
original_value = float(cost) * float(shares)
|
||||||
|
new_value = float(info['current']) * float(shares)
|
||||||
|
value_day_change_percent = ((float(info['percent_change'])/100) * new_value)
|
||||||
|
|
||||||
|
font = ImageFont.load("./fonts/5x8.pil")
|
||||||
|
cost_img = self.textImage('Cost', font, r = 255, g = 255 , b = 255)
|
||||||
|
cost2_img = self.textImage(cost, font, r = 0, g = 255, b = 0)
|
||||||
|
shares_img = self.textImage('Shares', font, r = 255, g = 255 , b = 255)
|
||||||
|
shares2_img = self.textImage(shares, font, r = 0, g = 255, b = 0)
|
||||||
|
|
||||||
|
pnlchange = new_value - original_value
|
||||||
|
pnlpercent = ((new_value - original_value) / original_value) * 100
|
||||||
|
|
||||||
|
pnlpercent_img = self.textImage('P/L%', font, r = 255, g = 255 , b = 255)
|
||||||
|
if pnlpercent >= 0:
|
||||||
|
pnlpercent2_img = self.textImage(str('%.2f' % abs(pnlpercent)) + '%', font, r = 0, g = 255, b = 0)
|
||||||
|
else:
|
||||||
|
pnlpercent2_img = self.textImage(str('%.2f' % abs(pnlpercent)) + '%', font, r = 255, g = 0, b = 0)
|
||||||
|
|
||||||
|
|
||||||
|
daypercent_img = self.textImage('Day%', font, r = 255, g = 255 , b = 255)
|
||||||
|
if float(info['percent_change']) >= 0:
|
||||||
|
daypercent2_img = self.textImage(str('%.2f' % abs(float(info['percent_change']))) +'%', font, r = 0, g = 255, b = 0)
|
||||||
|
else:
|
||||||
|
daypercent2_img = self.textImage(str('%.2f' % abs(float(info['percent_change'])))+'%', font, r = 255, g = 0, b = 0)
|
||||||
|
|
||||||
|
days_img = self.textImage('Days', font, r = 255, g = 255 , b = 255)
|
||||||
|
days2_img = self.textImage(day, font, r = 0, g = 255, b = 0)
|
||||||
|
value_img = self.textImage('Value', font, r = 255, g = 255 , b = 255)
|
||||||
|
value2_img = self.textImage(str('%.2f' % abs(original_value)), font, r = 0, g = 255, b = 0)
|
||||||
|
|
||||||
|
pnlchange_img = self.textImage('P/L$', font, r = 255, g = 255 , b = 255)
|
||||||
|
if pnlchange >= 0:
|
||||||
|
pnlchange2_img = self.textImage(str('%.2f' % abs(pnlchange)), font, r = 0, g = 255, b = 0)
|
||||||
|
else:
|
||||||
|
pnlchange2_img = self.textImage(str('%.2f' % abs(pnlchange)), font, r = 255, g = 0, b = 0)
|
||||||
|
|
||||||
|
daychange_img = self.textImage('Day$', font, r = 255, g = 255 , b = 255)
|
||||||
|
if value_day_change_percent >= 0:
|
||||||
|
daychange2_img = self.textImage(str('%.2f' % abs(value_day_change_percent)), font, r = 0, g = 255, b = 0)
|
||||||
|
else:
|
||||||
|
daychange2_img = self.textImage(str('%.2f' % abs(value_day_change_percent)), font, r = 255, g = 0, b = 0)
|
||||||
|
|
||||||
|
x_offset = 0
|
||||||
|
|
||||||
|
img = Image.new('RGB', (max(cost_img.size[0], cost2_img.size[0], days_img.size[0], days2_img.size[0]) + 7 +
|
||||||
|
max(shares_img.size[0], shares2_img.size[0], value2_img.size[0], value_img.size[0]) + 7 +
|
||||||
|
max(pnlpercent_img.size[0], pnlpercent2_img.size[0], pnlchange_img.size[0], pnlchange2_img.size[0]) + 7 +
|
||||||
|
max(daypercent_img.size[0], daypercent2_img.size[0], daychange_img.size[0], daychange2_img.size[0]) + 15, 32))
|
||||||
|
|
||||||
|
img.paste(cost_img, (x_offset, 0))
|
||||||
|
img.paste(cost2_img, (x_offset, 8))
|
||||||
|
img.paste(days_img, (x_offset, 16))
|
||||||
|
img.paste(days2_img, (x_offset, 24))
|
||||||
|
x_offset += max(cost_img.size[0], cost2_img.size[0], days_img.size[0], days2_img.size[0]) + 7
|
||||||
|
|
||||||
|
img.paste(shares_img, (x_offset, 0))
|
||||||
|
img.paste(shares2_img, (x_offset, 8))
|
||||||
|
img.paste(value_img, (x_offset, 16))
|
||||||
|
img.paste(value2_img, (x_offset, 24))
|
||||||
|
x_offset += max(shares_img.size[0], shares2_img.size[0], value2_img.size[0], value_img.size[0]) + 7
|
||||||
|
|
||||||
|
img.paste(pnlpercent_img, (x_offset, 0))
|
||||||
|
img.paste(pnlpercent2_img, (x_offset, 8))
|
||||||
|
img.paste(pnlchange_img, (x_offset, 16))
|
||||||
|
img.paste(pnlchange2_img, (x_offset, 24))
|
||||||
|
x_offset += max(pnlpercent_img.size[0], pnlpercent2_img.size[0], pnlchange_img.size[0], pnlchange2_img.size[0]) + 7
|
||||||
|
|
||||||
|
img.paste(daypercent_img, (x_offset, 0))
|
||||||
|
img.paste(daypercent2_img, (x_offset, 8))
|
||||||
|
img.paste(daychange_img, (x_offset,16))
|
||||||
|
img.paste(daychange2_img, (x_offset, 24))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
image_list.append(stitchedStock)
|
image_list.append(stitchedStock)
|
||||||
|
if all_stocks_settings['chart'] and (symbol in portfolio_settings):
|
||||||
|
try:
|
||||||
|
image_list.append(img)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
image_list.append(self.blank)
|
image_list.append(self.blank)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
# logf = open('log.txt', "a")
|
|
||||||
# exc_type, exc_obj, exc_tb = sys.exc_info()
|
|
||||||
# fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
|
|
||||||
# logf.write(str(e))
|
|
||||||
# logf.write('. file: ' + fname)
|
|
||||||
# logf.write('. line: ' + str(exc_tb.tb_lineno))
|
|
||||||
# logf.write('. type: ' + str(exc_type))
|
|
||||||
# logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])))
|
|
||||||
# logf.close()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
finalDisplayImage = self.stitchImage(image_list)
|
finalDisplayImage = self.stitchImage(image_list)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return finalDisplayImage
|
return finalDisplayImage
|
||||||
|
|
||||||
|
|
||||||
def getStockProfessional(self):
|
def getStockProfessional(self):
|
||||||
self.blank = Image.new('RGB', (0, 16))
|
self.blank = Image.new('RGB', (0, 16))
|
||||||
|
Loading…
Reference in New Issue
Block a user