本文介绍基于Python构建查询历史股票行情的应用。
1 数据获取
量化数据接口有很多,有tushare、alltick、xtquant等等。本文使用的是akshare库,它是开源的财经数据库,不仅包含股票、期货、期权、外汇、基金等常见的金融数据,还包括能源、事件、舆情和艺人指数这类不常见但可能影响市场行为的其他数据,可以说是目前市面上免费接口里最全的一个。
以获取深市A股历史日线数据为例,首先获取深市A股的股票信息:
import akshare as ak
stock_info = ak.stock_info_sz_name_code()
stock_info.to_excel('stock_code.xlsx')
2 应用架构
本应用基于dash框架、开源组件库feffery_antd_components与akshare金融数据接口开发的轻量级应用。app.py中进行应用对象的实例化,并构建应用的初始化页面内容;setting.css进行前端界面样式的调整;data储存的是深交所A股信息。
- demo
- data
- stock_code.xlsx
- assets
- setting.css
- app.py
3 应用启动
安装好当前项目依赖库,然后直接在终端执行python app.py
即可启动应用,按照控制台提示的信息,浏览器访问本地http://127.0.0.1:8050地址即可访问应用。
4 代码
# app.py
import pandas as pd
import dash
from pyecharts import options as opts
import akshare as ak
from dash import Dash, html, dcc, callback, Output, Input, State
import dash_bootstrap_components as dbc
from pyecharts.charts import Kline
import feffery_antd_components as fac
# 应用实例化
app = Dash(
__name__,
title='量化小应用',
update_title='加载中...',
assets_url_path='assets/setting.css'
)
app.layout = fac.AntdSpace([
dcc.Store(storage_type='local', id='stock-code-store', data=pd.read_excel('data\stock_code.xlsx', dtype={
'A股代码': 'str'}).to_dict('records')),
fac.AntdFlex([
fac.AntdIcon(icon='antd-right', style={
'color': '#0069d9'}),
fac.AntdText('股票历史日线数据查询', className='header')
]),
fac.AntdFlex([
fac.AntdFlex([
'股票代码:',
dcc.Dropdown(
id='stock-dropdown',
multi=False,
searchable=True,
value='000001',
placeholder='股票代码',
style={
'width': '100px'}
),
], align='center', gap='small'),
fac.AntdFlex([
'日期:',
fac