文章目录
Tushare的简单介绍
“Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。”
以上是官网对tushare的介绍。总之它提供了便捷的各类财经数据和新闻等的接口, 通过它可以方便的获得有质量的各类数据。
主要思路
首先通过Tushare pro的日线行情接口,获得单只股票的行情数据,然后利用PyQt5与qtpandas创建展示股票数据的GUI,然后通过mplfinnace绘制k线图。
使用Qt Designer生成基本的用户界面
Qt Designer是PyQt5的内置的UI制作工具,利用它做出基本的UI界面,然后写py文件处理业务逻辑,实现界面与逻辑的分离。Qt designer 中的使用的控件及生成的页面如下:
逻辑文件的实现
生成基本的界面后,在Qt designer中保存为.UI界面,然后使用命令 pyuic5 -o Ui_stock.py Ui_stock.ui
将其转换为py文件。然后新建另一个py文件用于处理控件之间signal and slots。翻译成信号与槽,是Qt的核心机制。举个例子,比如上图中的名称为data_get的按钮对象,当我们按下这个按钮时,它会发出一个信号,然后引起另外的反应,一会调用一个通过tushare接口获得数据的函数,这个按钮的点击信号与函数可以通过下面代码实现
self.dataGet.clicked.connect(self.get_data)
一般地
QObject.signal.connect(slot)
其中QObject是某个对象,signal可以是内置信号,也可以是自定义信号,slot代表槽函数,可以是自定义的函数,也可以是PyQt5中的事件处理函数,如鼠标事件,按键事件等。
通过signal and slots机制就可以实现大部分应用。
tushare pro的使用
import tushare as ts
pro = ts.pro('your token')
df = pro.daily(ts_code, start_date, end_date)
通过以上简单的代码就可以获得一只股票的日线行情,包括,开、收盘价、涨跌幅、成交量等,返回的是DataFrame。tushare还有其他各种不同的财经、新闻等数据,可以去官网详细了解。官网链接: tushare数据接口
k线的绘制
利用金融数据可视化包mplfinnace。
从获取的股票数据中提取出OHLC,即开盘价,最高价,最低价,收盘价,并将日期转换为DatatimeIndex,并作为索引。绘图函数如下,
def plot(self):
df_tem = self.model.dataFrame()
daily = df_tem.loc[:,['open','high','low','close','vol','trade_date']]
columns = ['Open', 'High', 'Low', 'Close', 'Volume','trade_date']
daily.columns = columns
daily.set_index(pd.to_datetime(daily['trade_date']), inplace=True) # 将索引转换时间序列索引
daily.sort_index(inplace=True)
print(daily.head())
mpf.plot(daily, type='candle')
即将显示’绘图’的按钮通过上面的connect()连接到plot()函数,当按下绘图按钮时,发出信号,然后调用plot()函数绘图。