一文读懂:如何制作股市实时跟踪器?
大家好, 我是Lucy@FinTech社区。
今天这篇文章将教你如何轻松制造一个股市实时跟踪器!
欢迎大家添加微信fintech34,或扫描底部微信,加入FinTech社区,提认知,攒人脉,求职招聘!
毫无疑问,在疫情期间,股市的波动率高于平时。为了更好地监控我们的股票投资组合,我们可以制造实时跟踪器。当股票市场开盘时,灯会亮起,并且,它的颜色会反映开盘时市场的位置并在日间不断进行更新。这将是一个很有趣的小工具。
【要准备的物品】
首先我们自然需要一个智能实时跟踪器。以下是一些供参考的智能灯泡连接 (复制链接至浏览器查看):
Yeelight bulb
https://www.amazon.com/gp/product/B077GCYCT7/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
Light bulb globe
https://www.homedepot.com/p/Westinghouse-6-in-Handblown-Opal-Globe-with-3-1-4-in-Fitter-8150100/203066058
https://www.homedepot.com/p/Leviton-Plastic-Keyless-Lamp-Holder-R50-08829-CW4/100356849
如果你已经拥有一个跟踪器,我们就可以使用Python的Yeelight库对他的颜色进行更改。
【控制跟踪器的Python代码】
创建一个新的python项目。安装要用到的两个库:
pip install yeelight investpy
安装yeelight的app并配置在跟踪器上。在app中,打开“局域网控制”。在灯泡->设置(右上角图标)->设备信息上获取灯泡的IP地址。检查跟踪器是否正常工作。
from yeelight import Bulb, BulbException
BULB_IP = '192.168.X.XXX'
bulb = Bulb(BULB_IP)
bulb.get_properties(requested_properties=['power', ])
【计算投资组合损益的Python代码】
接下来,创建一个函数来计算股票的损益:
def daily_pnl(stock):
stock_data = investpy.get_stock_historical_data(stock, 'united states', from_date=(date.today() +
timedelta(days=-1)).strftime("%d/%m/%Y"), to_date=date.today().strftime("%d/%m/%Y"))
stock_data.index = stock_data.index + timedelta(days=1)
ytd = stock_data.iloc[0].Close
tdy = stock_data.iloc[1].Close
return ((tdy-ytd)/ytd)*100
只要在函数argument处出传递如“ AAPL”之类的股票代码就可以返回前一天的损益情况。
接下来我们要做的就是将损益范围转换为对应的RGB颜色。
def refresh_bulb_color(bulb):
pnl_to_color = {-1.0: '#ff1100', # <1%+ loss
-0.5: '#ff6a00',
0.0: '#ffffff', # neutral
0.5: '#8fb2ff',
1.0: '#0004ff',} # >+0.5% gain
pnl = daily_pnl('AAPL')
print("{:.2f}%".format(pnl))
pnl_idx = np.searchsorted(list(pnl_to_color.keys()), pnl, 'left').clip(0,4)
color = list(pnl_to_color.values())[pnl_idx]
rgb = tuple(int(color.lstrip('#')[i:i+2], 16) for i in (0, 2, 4))
try:
bulb.set_rgb(rgb[0], rgb[1], rgb[2])
except BulbException:
logging.error('bulb disconnected')
return False
return True
最后,我们可以设置无限循环并设置刷新间隔来重复此过程。我们还可以调整损益函数来计算整个投资组合的损益情况。
这样,
一个投资组合实时跟踪器就创建完成了。
你学会了吗?
近期热招: (点击标题,即可了解详情)
更多岗位信息,请前往官网JOB分类查看!
