网站开发实战视频教程,安卓app开发语言,设计logo的理念,徐州专业做网站较好的公司我是Mr.看海#xff0c;我在尝试用信号处理的知识积累和思考方式做量化交易#xff0c;应用深度学习和AI实现股票自动交易#xff0c;目的是实现财务自由~目前我正在开发基于miniQMT的量化交易系统。 在前几篇的文章中讲到#xff0c;我正在开发的看海量化交易系统#xf…我是Mr.看海我在尝试用信号处理的知识积累和思考方式做量化交易应用深度学习和AI实现股票自动交易目的是实现财务自由~目前我正在开发基于miniQMT的量化交易系统。 在前几篇的文章中讲到我正在开发的看海量化交易系统底层是使用miniQMT的Python接口实现的数据获取和交易执行。作为系统开发的基础在此我将系统梳理一下miniQMT的Python接口库XtQuant并以案例集的形式对常用功能进行演示和讲解。当然最权威的教程还是XtQuant的官方文档本文是作为一个易用快查手册方便我自己查阅同时也为做相关研究的朋友提供一个参考。
我会将系统的教程案例集做成一个系列并集结成册需要查看完整教程的朋友可以关注我的公众号看海的城堡。我正在开发的基于miniQMT的量化交易系统也欢迎大家关注和使用。 一、基本概念介绍
1.miniQMT、XtQuant和xtdata的关系
miniQMT是一个量化交易终端软件。它作为本地服务器运行,负责与交易所建立连接,接收和存储行情数据,并提供数据下载和交易接口。
XtQuant是miniQMT的Python接口库,作为Python程序与miniQMT之间的桥梁。它通过TCP连接与本地miniQMT服务通信,包含行情(xtdata)和交易(xttrader)两个主要模块。
xtdata是XtQuant中专门用于获取行情数据的模块。它提供了获取各类行情数据的API接口,本质是向miniQMT发送数据请求并处理返回结果。它既支持查询历史数据,也支持订阅实时行情。
2.xtdata模块能实现的主要功能
xtdata模块作为行情数据获取的核心模块,提供了全面的数据服务功能。
在历史数据方面,它不仅支持获取各种周期(日线、分钟线、周线等)的K线数据,还能获取分笔成交的tick数据,并且提供了前复权、后复权等多种复权方式。对于实时行情,xtdata提供了两种订阅模式:可以针对单只股票订阅特定周期的数据,也可以订阅全市场的tick数据。此外,它还支持Level2深度行情数据的获取需要单独开通权限,为高频交易提供了数据基础。在基本面数据方面,xtdata提供了完整的财务数据查询功能,包括资产负债表、利润表、现金流量表等财务报表,以及主要的财务指标数据。同时,它还提供了股票列表、交易日历、除权除息等基础信息的查询接口。对于指数投资者来说,xtdata提供了指数成分股、成分股权重、指数行情等数据的获取功能。在板块数据方面,支持查询行业分类、概念板块、地域板块等多维度的分类数据。ETF基金投资者可以通过xtdata获取ETF的申赎清单、成分股信息和净值数据。对于期货和期权交易者,xtdata也提供了主力合约、期权链、商品期权等衍生品数据的查询功能。
二、基本面数据获取的运行逻辑与演示案例
在XtQuant中,获取基本面数据主要涉及到三个核心函数:
download_financial_data() - 下载单只股票的财务数据download_financial_data2() - 批量下载多只股票的财务数据get_financial_data() - 获取已下载的财务数据
与行情数据类似,基本面数据的获取也需要先下载数据到本地,然后才能查询。不同的是,基本面数据是按照报表期进行组织的,包含了资产负债表、利润表、现金流量表等多个报表。
1. 基本的财务数据获取流程
下面通过一个简单的案例来演示这个过程:
from xtquant import xtdata# 1.下载单只股票的财务数据
xtdata.download_financial_data(stock_list[000001.SZ],table_list[Balance, Income] # 下载资产负债表和利润表
)# 2.查询财务数据
data xtdata.get_financial_data(stock_list[000001.SZ],table_list[Balance, Income],start_time20230101,end_time20240101,report_typereport_time # 按报告期查询
)# 3.打印结果
print(平安银行财务数据:)
for stock_code in data:print(f\n{stock_code}的财务数据:)for table_name in data[stock_code]:print(f\n{table_name}表主要指标:)print(data[stock_code][table_name].head())2. 财务数据下载函数的对比
在数据下载阶段,我们可以使用download_financial_data()或download_financial_data2()函数。
主要区别:
download_financial_data: 适合单只或少量股票下载,同步执行download_financial_data2: 支持批量下载,可监控下载进度,异步执行
from xtquant import xtdata# 示例1: 使用download_financial_data下载单只股票
xtdata.download_financial_data(stock_list[000001.SZ],table_list[Balance, Income, CashFlow] # 三大报表
)# 示例2: 使用download_financial_data2批量下载
def on_progress(data):print(f已完成:{data[finished]}/{data[total]} - {data[message]})xtdata.download_financial_data2(stock_list[000001.SZ, 600000.SH],table_list[Balance, Income, CashFlow],start_time20230101, # 可选:按披露日期筛选end_time20240101, # 可选:按披露日期筛选callbackon_progress # 进度回调函数
)
3. 财务数据查询的详细说明
get_financial_data()函数是获取财务数据的核心接口,它支持多种查询方式:
from xtquant import xtdata# 示例1:按报告期查询
data1 xtdata.get_financial_data(stock_list[000001.SZ],table_list[Balance, Income],start_time20230101,end_time20240101,report_typereport_time # 按报告期查询
)# 示例2:按披露日期查询
data2 xtdata.get_financial_data(stock_list[000001.SZ],table_list[Balance, Income],start_time20230101, end_time20240101,report_typeannounce_time # 按披露日期查询
)
4. 支持的财务报表类型
XtQuant支持以下主要财务报表:
Balance - 资产负债表Income - 利润表CashFlow - 现金流量表Capital - 股本表Holdernum - 股东数Top10holder - 十大股东Top10flowholder - 十大流通股东Pershareindex - 每股指标
每个报表都包含了大量的字段,具体字段说明可以参考附录中的财务数据字段列表。
三、注意事项
使用前确保miniQMT已启动并正常运行获取数据前需要先下载对应的财务数据财务数据更新频率相对较低,建议按季度更新即可下载数据时注意控制批量大小,建议单次不超过50只股票查询时注意report_type参数的设置:
report_time: 按报告期查询,适合分析某个时点的财务状况announce_time: 按披露日期查询,适合做历史回测
附录1安装与环境配置
1. 启动并登录miniQMT
以上提到的所有功能都需要miniQMT的运行支持。miniQMT是迅投科技开发的量化交易终端软件在很多券商都可以开通。之前的文章介绍过miniQMT的开通方式大家可以翻阅Mr.看海如何轻松开通miniQMT开启量化交易大门
2. 安装xtquant
xtquant库可以通过pip直接安装
pip install xtquant
3. 环境要求
Python版本: 3.7-3.11常用依赖库: numpy, pandas操作系统: Windows (目前仅支持Windows系统)
获取财务数据
get_financial_data(stock_list, table_list[], start_time, end_time, report_typereport_time)
释义 获取财务数据参数 stock_list - list 合约代码列表table_list - list 财务数据表名称列表 Balance #资产负债表 Income #利润表 CashFlow #现金流量表 Capital #股本表 Holdernum #股东数 Top10holder #十大股东 Top10flowholder #十大流通股东 Pershareindex #每股指标start_time - string 起始时间end_time - string 结束时间report_type - string 报表筛选方式 report_time #截止日期 announce_time #披露日期返回 dict 数据集 { stock1 : datas1, stock2 : data2, ... }stock1, stock2, ... 合约代码datas1, datas2, ... dict 数据集 { table1 : table_data1, table2 : table_data2, ... } table1, table2, ... 财务数据表名table_data1, table_data2, ... pd.DataFrame 数据集数据字段详见附录 - 财务数据字段列表备注 无
下载财务数据
download_financial_data(stock_list, table_list[])
释义 下载财务数据参数 stock_list - list 合约代码列表table_list - list 财务数据表名列表返回 无备注 同步执行补充数据完成后返回
download_financial_data2(stock_list, table_list[], start_time, end_time, callbackNone)
释义 下载财务数据参数 stock_list - list 合约代码列表table_list - list 财务数据表名列表start_time - string 起始时间end_time - string 结束时间 以m_anntime披露日期字段按[start_time, end_time]范围筛选callback - func 回调函数 参数为进度信息dict total - 总下载个数finished - 已完成个数stockcode - 本地下载完成的合约代码message - 本次信息返回 无备注 同步执行补充数据完成后返回
关于看海量化交易系统
关于上边提到的我正在开发的基于miniQMT的量化交易系统目前已经开放数据下载、可视化、数据清洗模块有需要的朋友可以关注公众号“看海的城堡”获取。
目前平台更新的进展大致如下
2024.10.11 完成历史数据下载模块初步版本。 2024.10.12 GUI界面更新了打开QMT终端和指示灯功能 数据可视化界面解决了部分bug 2024.11.08 1.将数据下载和数据清洗模块合并为GUI.py文件 2.加入了报错日志保存的功能 3.读取股票列表的函数文件加入了支持各种编码模式。 2024.11.15 1.基本完成数据下载和数据清洗模块 2.完成软件界面可根据显示器分辨率自动调整大小并保持界面居中 2024.11.16 完善重复数据清理的逻辑需进行时间戳与数据双重验证以判定是否为重复数据。 2024.11.17 1.添加了数据可视化模块 2.在平台主界面新增了工具栏可通过工具栏打开可视化模块。3.重新整理了data文件夹使其更具结构化 4.修正了1d数据下载可能存在的bug 5.修正底层下载数据的函数对于下载1d数据不再下载time列 2024.11.18 美化了界面优化了软件界面布局丰富了文件信息内容增加了市场分部、周期类型、日期范围图例解析为中文显示日内数据休市时间使用灰色区域显示。 2024.11.20 在可视化模块中加入了重载文件夹数据功能。 2024.11.22 增加了设置界面添加了icon图标。 2024.11.26 添加splash加载界面显示程序加载进度。 2024.11.28 实现程序打包为exe安装包并支持中文安装界面。 2024.11.29 发布第一个稳定版本V1.0.0 2024.12.01 发布V1.1.6完善日志管理。 2024.12.02 发布V1.1.8优化激活管理和界面日志记录修复激活提示重复显示问题。改进状态指示器逻辑避免重复记录相同状态。 2024.12.02 发布V1.2.0更新股票列表获取和保存功能添加成分股支持优化日志记录增强错误处理机制修复界面关闭时的线程管理问题改进设置对话框添加股票列表管理功能。此提交提升了用户体验和系统稳定性。 2024.12.02 发布V1.2.1内置了对沪深A股、深证A股、上证A股、创业板、科创板、中证500成分股、沪深300成分股、上证50成分股的股票列表以及常用指数的列表。设置界面新增了对上述股票列表的更新功能。 2024.12.05 发布稳定版本V1.2.3修复了多个界面和功能问题提升了用户体验和系统稳定性。 相关文章
【深度学习量化交易1】一个金融小白尝试量化交易的设想、畅享和遐想
【深度学习量化交易2】财务自由第一步三个多月的尝试找到了最合适我的量化交易路径
【深度学习量化交易3】为了轻松免费地下载股票历史数据我开发完成了可视化的数据下载模块
【深度学习量化交易4】 量化交易历史数据清洗——为后续分析扫清障碍
【深度学习量化交易5】 量化交易历史数据可视化模块
【深度学习量化交易6】优化改造基于miniQMT的量化交易软件已开放下载~已完成数据下载、数据清洗、可视化模块
【深度学习量化交易7】miniQMT快速上手教程案例集——使用xtQuant进行历史数据下载篇
【深度学习量化交易8】miniQMT快速上手教程案例集——使用xtQuant进行获取实时行情数据篇