我是Mr.看海,由于我开发的看海量化交易系统是基于miniQMT的行情和交易接口,所以在此我将miniQMT的使用教程采用案例集的形式进行讲解,该手册会不断完善和丰富,为做miniQMT的开发的朋友提供便利。
需要注意的是,本手册仅作为官方手册的辅助教程,最权威的接口请以官方说明文档为准:
官方手册请点击这里
1.基本面数据获取的运行逻辑与演示案例
在XtQuant中,获取基本面数据主要涉及到三个核心函数:
- download_financial_data() – 下载单只股票的财务数据
- download_financial_data2() – 批量下载多只股票的财务数据
- get_financial_data() – 获取已下载的财务数据
与行情数据类似,基本面数据的获取也需要先下载数据到本地,然后才能查询。不同的是,基本面数据是按照报表期进行组织的,包含了资产负债表、利润表、现金流量表等多个报表。
1.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_time="20230101",
end_time="20240101",
report_type="report_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())
1.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_time="20230101", # 可选:按披露日期筛选
end_time="20240101", # 可选:按披露日期筛选
callback=on_progress # 进度回调函数
)
1.3 财务数据查询的详细说明
get_financial_data()函数是获取财务数据的核心接口,它支持多种查询方式:
from xtquant import xtdata
# 示例1:按报告期查询
data1 = xtdata.get_financial_data(
stock_list=["000001.SZ"],
table_list=["Balance", "Income"],
start_time="20230101",
end_time="20240101",
report_type="report_time" # 按报告期查询
)
# 示例2:按披露日期查询
data2 = xtdata.get_financial_data(
stock_list=["000001.SZ"],
table_list=["Balance", "Income"],
start_time="20230101",
end_time="20240101",
report_type="announce_time" # 按披露日期查询
)
1.4 支持的财务报表类型
XtQuant支持以下主要财务报表:
- Balance – 资产负债表
- Income – 利润表
- CashFlow – 现金流量表
- Capital – 股本表
- Holdernum – 股东数
- Top10holder – 十大股东
- Top10flowholder – 十大流通股东
- Pershareindex – 每股指标
每个报表都包含了大量的字段,具体字段说明可以参考附录中的财务数据字段列表。
2. 注意事项
- 使用前确保miniQMT已启动并正常运行
- 获取数据前需要先下载对应的财务数据
- 财务数据更新频率相对较低,建议按季度更新即可
- 下载数据时注意控制批量大小,建议单次不超过50只股票
- 查询时注意report_type参数的设置:
report_time: 按报告期查询,适合分析某个时点的财务状况
announce_time: 按披露日期查询,适合做历史回测
3. 附录:财务数据接口
3.1 获取财务数据
get_financial_data(stock_list, table_list=[], start_time='', end_time='', report_type='report_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 数据集,数据字段详见附录 – 财务数据字段列表
- 备注
- 无
3.2 下载财务数据
download_financial_data(stock_list, table_list=[])
- 释义
- 下载财务数据
- 参数
- stock_list – list 合约代码列表
- table_list – list 财务数据表名列表
- 返回
- 无
- 备注
- 同步执行,补充数据完成后返回
download_financial_data2(stock_list, table_list=[], start_time='', end_time='', callback=None)
- 释义
- 下载财务数据
-
参数
- 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
如果你还没有开通miniQMT,可以点击此处开通,低费率、低门槛,欢迎咨询。
开发日志
我正在紧锣密鼓地开发系统,完善功能,点击此处了解最新进展。