数据 API

行情

get_price - 获取历史数据,可查询多个标的多个数据字段

qff.price.query.get_price(security, start=None, end=None, freq='daily', fields=None, skip_paused=False, fq='pre', count=None, market='stock')[源代码]

获取历史数据,可查询一支或者多个标的的行情数据, 按天或者按分钟,返回数据格式为 DataFrame

参数
  • security (str or list) – 单只标的代码或标的代码列表,标的为股票、指数、ETF等,本参数不能为空.

  • count (int) – 返回的结果集的行数, 即表示获取 end_date 之前几个freq的数据,与 start 二选一,不可同时使用.

  • start (str、datetime.datetime or datetime.date) –

    查询开始时间,与 count 二选一,不可同时使用.

    1. 如果 count 和 start_date 参数都没有, 则 start 等于 end.

    2. 如果 count 和 start_date 参数都设置, 则 start 生效,返回结果会截取最后count数量的记录。

    3. 当取分钟数据时, 时间可以精确到分钟, 比如: 传入datetime.datetime(2015, 1, 1, 10, 0, 0) 或者 ‘2015-01-01 10:00:00’

    4. 当取分钟数据时, 如果只传入日期, 则日内时间是当日的 09:30:00 - 15:00:00

    5. 当取天数据时, 传入的日内时间会被忽略

  • end (str、datetime.datetime or datetime.date) – 查询结束时间, 默认是当前日期, 注意: 当取分钟数据时, 如果 end 只有日期,则日内时间等同于 15:00:00.

  • freq (str) – 单位时间长度, 现在支持[‘daily’, ‘1d’, ‘day’, ‘1min’, ‘5min’, ‘15min’, ‘30min’, ‘60min’, ‘1m’, ‘5m’, ‘15m’, ‘30m’, ‘60m’],

  • fields (str or list) – 选择要获取的行情数据字段, 默认是None,表示[‘open’, ‘close’, ‘high’, ‘low’, ‘vol’,’amount’] 这几个标准字段, 指数另外支持[’up_count’, ‘down_count’]。

  • skip_paused (bool) –

    是否跳过不交易日期(包括停牌, 未上市或者退市后的日期). 如果不跳过, 停牌时会使用停牌前收盘价数据填充。

    关于停牌: 因为此API可以获取多只股票的数据, 可能有的股票停牌有的没有, 为了保持时间轴的一致,我们默认没有跳过停牌的日期

  • fq (str or None) – 复权选项: ‘pre’, 前复权; None,不复权, 返回实际价格;’post’,后复权

  • market (str) – 市场类型,目前支持[“stock”, “index”,”ETF”], 默认”stock”.

返回

请注意, 为了方便比较一只股票的多个属性, 同时也满足对比多只股票的一个属性的需求, 我们在security参数是一只股票和多只股票 时返回的结构完全不一样.

  • 如果是一只股票, 则返回[pandas.DataFrame]对象, 行索引是date(分钟级别数据为datetime), 列索引是行情字段名字.

  • 如果是多只股票, 则返回[pandas.DataFrame]对象,行索引是[‘date’, ‘code’],或[‘datetime’, ‘code’]

返回类型

DataFrame or None

Example

# 获取股票000001当天的日数据
df = get_price('000001')

# 获得000001的2020年01月的分钟数据, 只获取open+close字段
df = get_price('000001', start='2020-01-01', end='2020-01-31 23:00:00', frequency='1m', fields=['open', 'close'])

# 获取获得000001在2020年01月31日前2个交易日的数据
df = get_price('000001', count = 2, end='2015-01-31', freq='daily', fields=['open', 'close'])

# 获得000001的2020年12月1号14:00-2020年12月2日12:00的分钟数据
df = get_price('000001', start='2020-12-01 14:00:00', end_date='2020-12-02 12:00:00', freq='1m')

# 获取多只股票
panel =  get_price(get_index_stocks('000903')) # 获取中证100的所有成分股的当天日数据, 返回一个[pandas.DataFrame]

history - 获取历史数据,可查询多个标的单个数据字段

qff.price.query.history(count, unit='1d', field='close', security_list=None, skip_paused=False, fq='pre')[源代码]

回测/模拟专用API 获取历史数据,可查询多个股票的单个数据字段,返回数据格式为 DataFrame 当取天数据时, 不包括当天的, 即使是在收盘后;分钟数据不包括当前分钟的数据,没有未来

参数
  • count (int) – 数量, 返回的结果集的行数

  • unit (str) – 单位时间长度,现在支持[‘daily’, ‘1d’, ‘day’, ‘1min’, ‘5min’, ‘15min’, ‘30min’, ‘60min’, ‘1m’, ‘5m’, ‘15m’, ‘30m’, ‘60m’]

  • field (str) – 要获取的数据类型,只能是一个值,包含:[‘open’, ‘ close’, ‘low’, ‘high’, ‘vol’, ‘amount’]

  • security_list (Optional[list]) – 要获取数据的股票列表,None 表示查询 context.universe 中所有股票的数据

  • skip_paused (bool) – 是否跳过不交易日期(包括停牌). 如果不跳过, 停牌时会使用停牌前的数据填充。

  • fq (str) – 复权选项。’pre’:前复权;’post’:后复权;None:不复权

返回类型

Optional[DataFrame]

返回

[pandas.DataFrame]对象, 行索引是datetime字符串, 列索引是股票代号.

attribute_history - 获取历史数据,可查询单个标的多个数据字段

qff.price.query.attribute_history(security, count, unit='1d', fields=None, fq='pre')[源代码]

回测/模拟专用API 查看某一支股票的历史数据, 可以选这只股票的多个属性, 默认跳过停牌日期. 当取天数据时, 不包括当天的, 即使是在收盘后;分钟数据不包括当前分钟的数据,没有未来;

参数
  • security (str or list) – 股票代码

  • count (int) – 数量, 返回的结果集的行数

  • unit (str) – 单位时间长度,现在支持[‘daily’, ‘1d’, ‘day’, ‘1min’, ‘5min’, ‘15min’, ‘30min’, ‘60min’, ‘1m’, ‘5m’, ‘15m’, ‘30m’, ‘60m’]

  • fields (str or list) – 包含:[‘open’, ‘ close’, ‘low’, ‘high’, ‘vol’, ‘amount’]

  • fq (str or None) – 复权选项: pre-前复权 None-不复权 post-后复权

返回

返回[pandas.DataFrame]对象,行索引是datetime字符串, 列索引是属性名字.

get_bars - 获取历史数据(包含快照数据),可查询多个标的多个数据字段

qff.price.query.get_bars(security, count, unit='1d', fields=None, include_now=False, end_dt=None, fq_ref_date=None, market='stock')[源代码]

获取各种时间周期的 bar 数据, bar 的分割方式与主流股票软件相同, 而且支持返回当前时刻所在 bar 的数据;

get_bars 开盘时取的bar高开低收都是当天的开盘价,成交量成交额为0; get_bars 没有跳过停牌选项,所获取的数据都是不包含停牌的数据,如果bar个数少于count个,则返回实际个数,并不会填充。

参数
  • security (list) – 一支股票代码或者一个指数代码

  • count (int) – 大于0的整数,表示获取bar的个数。如果行情数据的bar不足count个,返回的长度则小于count个数。

  • unit (str) – bar的时间单位, 支持标准bar,包括[‘1m’, ‘5m’, ‘15m’, ‘30m’, ‘60m’, ‘day’, ‘week’, ‘month’, ‘year’]

  • fields (Optional[list]) – 获取数据的字段, 支持如下值:[‘date’, ‘open’, ‘close’, ‘high’, ‘low’, ‘vol’, ‘amount’],默认为None,表示全部字段。

  • include_now (bool) – 取值True 或者False。 表示是否包含当前bar, 比如策略时间是9:33,unit参数为5m,如果 include_now=True,则返回9:30-9:33这个分钟 bar。

  • end_dt (Optional[str]) –

    查询的截止时间,支持的类型为None或str。默认值为None

    • 在回测/模拟环境下默认为context.current_dt

    • 在其他环境下默认为datetime.now()

    • 由于bar的最小单位是一分钟,所以end_dt的秒没有什么意义,会被替换为0,例如:”2019-11-22 9:35:23” 和 “2019-11-22 9:35:00” 是一样的。

  • fq_ref_date (Optional[str]) –

    复权基准日期,支持的类型为str或None,为None时为不复权数据。

    • 回测/模拟环境中默认为 context.current_dt

    • 在投研环境下默认为datetime.now()

    • 如果输入 fq_ref_date = None, 则获取到的是不复权的数据

    • 如果想获取后复权的数据,可以将fq_ref_date 指定为一个股票IPO之前很早的日期,比如 datetime.date(1990, 1, 1)

    • 定点复权,以某一天价格点位为参照物,进行的前复权或后复权。

    • 设置为datetime.datetime.now()即返回前复权数据。

    • 设置为context.current_dt返回动态复权数据。

  • market (str) – 市场类型,目前支持[“stock”, “index”,”ETF”], 默认”stock”.

返回类型

Optional[DataFrame]

返回

  • 若security为字符串格式的标的代码时,返回pandas.DataFrame,dataframe 的index是一个日期字符串

  • 若security为list格式的标的代码时,返回pandas.DataFrame,dataframe 的index是一个MultiIndex

Note

unit为1m

  • 分钟bar的时间戳为这一分钟的结束时间,一天有240个分钟bar,第一个分钟bar的时间是09:31

  • 若输end_dt为09:31且include_now=True,则会返回09:31这个bar,end_dt的秒和毫秒会被忽略。

  • 如果end_dt为09:30且include_now=True,会构造一个09:30的bar,open/high/low/close使用当天的开盘价,成交量和成交额都是0。

In [36]: get_bars('000001', 2, unit='1m', include_now=True, end_dt='2019-11-22 09:30:23)
Out[36]:
                date   open   high    low  close   volume     money
0 2019-11-21 15:00:00  15.86  15.86  15.86  15.86  1423800  22581468
1 2019-11-22 09:30:00  15.89  15.89  15.89  15.89        0         0

unit 为 5m/15m/30m/60m 时

  • include_now = False,返回截止到end_dt上一个unit的count个unit频率行情。

  • include_now = true,且end_dt正好在unit结束位置,则返回截止到end_dt的count个unit频率行情。

  • include_now = true,而且 end_dt > 上一个unit结束位置,则获取最后一个bar数据时间到end_dt之间的分钟数据,合并成一个bar。

unit 为 1d 时

  • include_now = False, 获取截止到上一天的count个天行情,返回。

  • include_now = True, 如果end_dt < 当天的收盘时间,获取当天截止到end_dt的分钟行情,合并成一个bar,然后获取截止到上一天的count-1个天行情,两部分合并返回。

  • include_now = Ture时,而且 end_dt >= 当天的收盘时间,获取包含当天的一共count个天行情,返回。

# 获取平安银行最近5天数据,包括context.current_date
df =  get_bars('000001', 5, unit='1d',fields=['open','close'],include_now=True)

# 设置复权基准日为 2018-01-05 , 取得的最近5条包括 end_dt 的天数据
get_bars('600507',5,unit='1d', fields=['date','open', 'high', 'low', 'close'],include_now=True, end_dt='2018-01-05 11:00:00', fq_ref_date='2018-01-05')

unit 为 1w时

  • include_now = False,获取截止到上周5的天bar,然后合并按周线合并。

  • include_now = True时,最后一个bar的合并逻辑是:获取当天截止到 end_dt的分钟bar,合并成天bar,获取本周截止到上一天的天bar,然后把这些day bar合并成一个周线bar;其余的count-1个bar则是由截止到上周五的天bar合并而成。

unit 为 1M时

  • include_now = False时,获取截止到上一月月末的天bar,然后按月线合并。

  • include_now = True时,最后一个bar的合并逻辑是:获取当天截止到 end_dt的分钟bar,合并成天bar,获取本月截止到上一天的天bar,然后把这些day bar合并成一个月线bar;其余的count-1个bar则是由截止到上个月最后一天的天bar合并而成。

get_current_data - 获取当前时刻标的数据

qff.price.cache.get_current_data(code, market='stock')[源代码]

获取当前时刻标的数据

获取当前单位时间(当天/当前分钟)的涨跌停价, 是否停牌,当天的开盘价等。 回测时, 通过其他获取数据的API获取到的是前一个单位时间(天/分钟)的数据, 而有些数据, 我们在这个单位时间是知道的, 比如涨跌停价, 是否停牌, 当天的开盘价. 我们添加了这个API用来获取这些数据.

参数
  • code (str) – 股票代码

  • market (str) – 标的类型,股票还是指数

返回类型

Optional[SecurityUnitData]

返回

一个 SecurityUnitData 对象,代表当前时刻的股票数据

fetch_ticks - 获取实时tick数据

qff.price.fetch.fetch_ticks(code, market='stock')[源代码]

获取股票或指数列表当前时刻的ticks数据

参数
  • code (list) – 一支股票代码或者一个指数代码列表

  • market (str) – 市场类型,目前支持“stock”和”index”, 默认“stock”.

返回

返回[pandas.DataFrame]对象,当前股票列表对应的tick数据。tick字段描述请见 Tick - tick对象

fetch_today_transaction - 获取当日实时分笔成交信息

qff.price.fetch.fetch_today_transaction(code)[源代码]

获取当日实时分笔成交信息,包含集合竞价

参数

code (str) – 一支股票代码

返回

返回对应股票的分笔成交信息,

                  price    vol   num       buyorsell
datetime
2022-12-30 09:25  13.04   3119  153          2
2022-12-30 09:30  13.04   2965   89          0
2022-12-30 09:30  13.05  10320  182          0

其中: buyorsell 1--sell 0--buy 2--盘前'

fetch_today_min_curve - 实时获取当天的1分钟曲线

qff.price.fetch.fetch_today_min_curve(code, market='stock')[源代码]

获取当天的分钟曲线,返回当前时间前的当日1分钟曲线数据,用于模拟交易环境

参数
  • code (str) – 一支股票代码或者一个指数代码

  • market (str) – 市场类型,目前支持“stock/index/etf”, 默认“stock”.

返回

返回[pandas.DataFrame]对象, 行索引是date(分钟级别数据为datetime), 列索引是行情字段名字.

股票

get_all_securities- 获取平台支持的所有股票信息

qff.price.query.get_all_securities(date=None, market='stock', df=False)[源代码]

获取平台支持的所有股票信息

参数
  • date (str) –

    查询日期, 用于获取某日期还在上市的股票信息. 默认值为 None, 表示获取当日的股票信息.

    1. 特定参数”all”, 表示获取所有日期的上市股票信息。

    2. 特定参数”delist”, 表示获取所有退市股票信息

    3. 建议使用时添加上指定date

  • market (str) – 用来过滤securities的类型,目前支持的type仅有[‘stock’, ‘index’, ‘etf]

  • df (bool) – 返回格式,若是True, 返回[pandas.DataFrame], 否则返回一个仅包含标的代码的list, 默认是False.

返回

[pandas.DataFrame or list]返回标的列表

Example

get_all_securities()[:2]

返回:
['000001', '000002']
当日市场交易的所有股票列表

get_all_securities(df=True)[:2]
返回:
---     name    start        end            type
000001  平安银行    1991-04-03      2200-01-01      stock
000002  万 科A    1991-01-29      2200-01-01      stock

name: 中文名称
start: 上市日期
end: 退市日期(股票是最后一个交易日,不同于摘牌日期),如果没有退市则为2200-01-01;
type: 类型,stock(股票),index(指数),etf(场内ETF基金)

get_security_info- 获取股票的信息

qff.price.query.get_security_info(code, market='stock')[源代码]

获取股票的信息.

参数
  • code (字符串) – 证券代码

  • market (字符串) – 用来过滤code的类型,目前支持的type仅有[‘stock’, ‘index’, ‘etf]

返回

一个字典对象, 有如下key值:

  1. code: 股票代码

  2. name: 中文名称

  3. start: 上市日期, 字符串类型

  4. end: 退市日期(股票是最后一个交易日,不同于摘牌日期), 如果没有退市则为2200-01-01

Example

::

# 获取股票000001的上市时间 start_date = get_security_info(‘000001’).start print(start)

get_stock_name- 获取股票名称

qff.price.query.get_stock_name(code=None, date=None)[源代码]

获取股票名称

参数
  • code – 股票代码,支持list, 如果为空,则返回所有股票

  • date – 查询日期,如果为空,则取上一个交易日日期

Return dict

返回股票代码与股票名称的字典

get_block_stock- 根据板块名称检索对应的股票代码

qff.price.query.get_block_stock(block)[源代码]

根据板块名称检索对应的股票代码

参数

block (str) – 板块名称

返回

板块对应的股票代码列表

返回类型

list

板块名称汇总:

blockname =
[
    300ESG,300周期,300非周,3D打印,5G概念,BIPV概念,C2M概念,CIPS概念,CXO概念,ETC概念
    HJT电池,IP变现,MCU芯片,MSCIA50,MSCI中盘,MSCI成份,MiniLED,NFT概念,NMN概念,OLED概念
    PPP模式,PVDF概念,QFII新进,QFII重仓,RCS概念,ST板块,一带一路,三代半导,上海自贸,上证180
    上证380,上证50,上证中盘,上证创新,上证治理,上证混改,上证红利,上证超大,不活跃股,专精特新
    业绩预升,业绩预增,业绩预降,东数西算,两年新股,个人持股,中俄贸易,中创100,中华A80,中字头
    中小100,中小300,中小银行,中盘价值,中盘成长,中证100,中证200,中证央企,中证红利,中证龙头
    久不分红,乡村振兴,亏损股,云游戏,云科技,云计算,互联金融,人工智能,人脑工程,人造肉
    代糖概念,仿制药,低价股,低市净率,低市盈率,体育概念,保险新进,保险重仓,信创,信息安全
    信托重仓,债转股,储能,元宇宙,充电桩,光伏,光刻机,免疫治疗,免税概念,养老概念
    养老金,内地低碳,军民融合,农业50,农村金融,冷链物流,分拆上市,分散染料,创业300,创业创新
    创业大盘,创业板50,创业板指,创业蓝筹,创医药,创成长,创投概念,创新100,创科技,创质量
    券商重仓,券商金股,化肥,北上重仓,北交所,北京冬奥,区块链,区块链50,医废处理,医美概念
    半导体50,博彩概念,卫星导航,即将解禁,参股新股,参股金融,双创50,发可转债,口罩防护,可燃冰
    台资背景,含B股,含GDR,含H股,含可转债,员工持股,商誉减值,回购计划,固态电池,国产软件
    国信价值,国开持股,国证价值,国证农业,国证基建,国证大宗,国证成长,国证服务,国证治理,国证红利
    国证芯片,国资云,国防军工,土地流转,在线消费,地下管网,地摊经济,地热能,垃圾分类,培育钻石
    基因概念,基金减仓,基金增仓,基金独门,基金重仓,壳资源,外资背景,大数据,大盘价值,大盘成长
    大盘股,大飞机,天然气,央企100,央企改革,央视50,婴童概念,字节跳动,安防服务,定增股
    定增预案,家庭医生,密集调研,富时A50,小盘价值,小盘成长,小米概念,工业互联,工业大麻,工业母机
    工业气体,已高送转,幽门菌,微利股,微盘股,恒大概念,成渝特区,户数减少,户数增加,扣非亏损
    投资时钟,抗癌,拟减持,拟增持,持续增长,换电概念,摘帽,操作系统,数字孪生,数字货币
    数据中心,整体上市,新冠检测,新冠药,新型烟草,新材料,新硬件,新能源车,新进成份,新零售
    无人机,无人驾驶,无线耳机,昨成交20,昨收活跃,昨日上榜,昨日振荡,昨日涨停,昨日跌停,昨日较弱
    昨日较强,昨日连板,昨日首板,昨曾涨停,昨曾跌停,昨高换手,智慧城市,智慧政务,智能交通,智能医疗
    智能家居,智能机器,智能电网,智能电视,智能穿戴,最近复牌,最近多板,最近异动,最近闪拉,最近闪跌
    有机硅,机构吸筹,板块趋势,核污防治,核电核能,次新开板,次新股,次新超跌,次新预增,武汉规划
    民企100,民营医院,民营银行,氟概念,氢能源,氮化镓,水产品,水利建设,污水处理,汽车拆解
    汽车电子,汽车芯片,沪深300,油气改革,泛珠三角,活跃股,海南自贸,海外业务,海峡西岸,消费100
    消费电子,涉矿概念,深次新股,深注册制,深证100,深证300,深证价值,深证创新,深证成指,深证成长
    深证治理,深证红利,烟草概念,燃料电池,物业管理,物联网,特斯拉,特高压,猪肉,环保50
    环渤海,生物疫苗,生物质能,电商概念,电子纸,电子身份,电解液,白酒概念,百元股,百度概念
    皖江区域,盐湖提锂,知识产权,石墨烯,破净资产,破发行价,碳中和,碳纤维,磷概念,社保新进
    社保重仓,种业,科创50,科创信息,科技100,租购同权,稀土永磁,稀缺资源,空气治理,粤港澳
    精选指数,绩优股,维生素,绿色建筑,绿色照明,绿色电力,网红经济,网络游戏,职业教育,聚氨酯
    股东减持,股东增持,股权分散,股权激励,股权转让,股权集中,胎压监测,能源互联,腾讯概念,腾讯济安
    航运概念,节能,芯片,苹果概念,草甘膦,虚拟现实,虫害防治,融资增加,融资融券,行业龙头
    被举牌,装配建筑,装饰园林,要约收购,证金汇金,资源优势,赛马概念,超导概念,超清视频,超级电容
    跨境电商,轮动趋势,辅助生殖,边缘计算,近已解禁,近期弱势,近期强势,近期新低,近期新高,远程办公
    连续亏损,送转潜力,送转超跌,透明工厂,通达信88,配股股,配股预案,重组股,重组预案,量子科技
    金融科技,钛金属,钠电池,钴金属,铁路基建,银河99,锂电池,锂矿,镍金属,长三角
    长株潭,阿里概念,陆股通减,陆股通增,降解塑料,雄安新区,页岩气,预制菜,预计扭亏,预计转亏
    预高送转,风沙治理,风能,风险提示,食品安全,高商誉,高市净率,高市盈率,高校背景,高端装备
    "高股息股","高融资盘","高贝塔值","高负债率","高质押股","鸡肉","鸿蒙概念","黄金概念"
]

get_stock_block- 根据股票代码检索所属的板块名称

qff.price.query.get_stock_block(code)[源代码]

根据股票代码检索对应的block名称

get_mtss- 获取股票的融资融券信息

qff.price.query.get_mtss(security_list, start_date, end_date, fields=None)[源代码]

获取股票的融资融券信息.

获取一只或者多只股票在一个时间段内的融资融券信息

参数
  • security_list – 一只股票代码或者一个股票代码的 list

  • start_date – 开始日期, 一个字符串

  • end_date – 结束日期, 一个字符串

  • fields

    字段名或者 list, 可选. 默认为 None, 表示取全部字段, 各字段含义如下:

    字段名

    含义

    date

    日期

    sec_code

    股票代码

    fin_value

    融资余额(元)

    fin_buy_value

    融资买入额(元)

    fin_refund_value

    融资偿还额(元)

    sec_value

    融券余量(股)

    sec_sell_value

    融券卖出量(股)

    sec_refund_value

    融券偿还股(股)

返回

返回一个 pandas.DataFrame 对象,默认的列索引为取得的全部字段. 如果给定了 fields 参数, 则列索引与给定的 fields 对应.

get_st_stock- 获取指定日期ST股票代码和名称

qff.price.query.get_st_stock(code=None, date=None)[源代码]

获取ST股票代码和名称

参数
  • code – 股票代码,支持list, 如果为空,则查询所有股票

  • date – 查询日期,如果为空,则取最近交易日日期

Return dict

返回股票代码与股票名称的字典

get_paused_stock- 获取停牌的股票代码

qff.price.query.get_paused_stock(code=None, date=None)[源代码]

获取停牌的股票代码

参数
  • code – 股票代码,支持list, 如果为空,则查询所有股票

  • date – 查询日期,如果为空,则取最近交易日日期

Return list

返回股票代码列表

指数

get_index_name- 获取指数名称

qff.price.query.get_index_name(code=None)[源代码]

获取指数名称

参数

code – 指数代码,支持list, 如果为空,则返回所有指数

Return dict

返回股票代码与股票名称的字典

get_index_stocks- 获取一个指数给定日期的成分股列表

qff.price.query.get_index_stocks(index, date=None)[源代码]

获取一个指数给定日期的成分股列表.目前仅支持:

  • ‘000016’ :上证50

  • ‘000852’ :中证1000

  • ‘000905’ :中证500

  • ‘000906’ :中证800

  • ‘000300’ :沪深300

  • ‘000010’ :上证180

  • ‘000688’ : 科创50abc

参数
  • index – 字符串,一个指数代码,如’000300’

  • date – 字符串,查询日期, 如’2015-10-15’. 默认为None,指当前日期

返回

返回股票代码的list

get_industry_stocks- 获取申万一级行业给定日期的成分股列表

qff.price.query.get_industry_stocks(industry, date=None)[源代码]

获取申万一级行业给定日期的成分股列表.目前仅支持(申万I级):

  • ‘801010’ :农林牧渔

  • ‘801030’ :基础化工

  • ‘801040’ :钢铁

  • ‘801050’ :有色金属

  • ‘801080’ :电子

  • ‘801110’ :家用电器

  • ‘801120’ :食品饮料

  • ‘801130’ :纺织服饰

  • ‘801140’ :轻工制造

  • ‘801150’ :医药生物

  • ‘801160’ :公用事业

  • ‘801170’ :交通运输

  • ‘801180’ :房地产

  • ‘801200’ :商贸零售

  • ‘801210’ :社会服务

  • ‘801230’ :综合

  • ‘801710’ :建筑材料

  • ‘801720’ :建筑装饰

  • ‘801730’ :电力设备

  • ‘801740’ :国防军工

  • ‘801750’ :计算机

  • ‘801760’ :传媒

  • ‘801770’ :通信

  • ‘801780’ :银行

  • ‘801790’ :非银金融

  • ‘801880’ :汽车

  • ‘801890’ :机械设备

  • ‘801950’ :煤炭

  • ‘801960’ :石油石化

  • ‘801970’ :环保

  • ‘801980’ :美容护理

参数
  • industry – 字符串,一个指数代码,如’801010’

  • date – 字符串,查询日期, 如’2015-10-15’. 默认为None,指当前日期

返回

返回股票代码的list

财务

get_fundamentals- 根据mongodb语法查询财务数据

qff.price.finance.get_fundamentals(filter, projection=None, date=None, report_date=None)[源代码]

根据mongodb语法查询财务数据 详细的财务数据表及字段描述请见 年报(季报)数据

  • 输入date时, 查询指定日期date收盘后所能看到的最近的数据,我们会查找上市公司在这个日期之前(包括此日期)发布的数据, 不会有未来函数.

  • 输入report_date, 查询 report_date 指定的季度或者年份的财务数。

  • 参数report_date和date二选一,同时输入,则report_date有效。

  • 注意:不支持2000年之前的查询

参数
  • filter (Optional[Dict]) – 查询条件字典,按pymongo格式输入

  • projection (Optional[Dict]) – 你需要查询的字段列表,按pymongo格式输入

  • date (Optional[str]) – 查询日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

  • report_date (Optional[str]) –

    财报统计的季度或者年份, 一个字符串, 有两种格式:

    • 季度: 格式是: 年 + ‘q’ + 季度序号, 例如: ‘2015q1’, ‘2013q4’.

    • 年份: 格式就是年份的数字, 例如: ‘2015’, ‘2016’.

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame], 每一行对应数据库返回的每一行, 列索引是你查询的所有字段

Example

# 策略在开盘前选择净利润增长率大于30%的股票
def before_trading_start(context):
    filter = {'f184' : {"$gt": 0.3}}
    df = get_fundamentals(filter=filter, projection={'f184': 1}, date=context.previous_date)
    g.security = df['code'].to_list()

get_financial_data- 查询多只股票给定日期的财务数据

qff.price.finance.get_financial_data(code, fields=None, date=None, report_date=None)[源代码]

查询多只股票给定日期的财务数据

  • 输入date时, 查询指定日期date收盘后所能看到的最近的数据,我们会查找上市公司在这个日期之前(包括此日期)发布的数据, 不会有未来函数.

  • 输入report_date, 查询 report_date 指定的季度或者年份的财务数。

  • 参数report_date和date二选一,同时输入,则report_date有效。

  • 注意:不支持2000年之前的查询

参数
  • code – 一支股票代码或者一个股票代码的list,None表示所有股票代码

  • fields – 返回的财务数据字段list,’001’-‘580’,None表示所有财务指标,详细的财务数据表及字段描述请见 年报(季报)数据

  • date – 查询日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

  • report_date

    财报统计的季度或者年份, 一个字符串, 有两种格式:

    • 季度: 格式是: 年 + ‘q’ + 季度序号, 例如: ‘2015q1’, ‘2013q4’.

    • 年份: 格式就是年份的数字, 例如: ‘2015’, ‘2016’.

:return:返回一个 [pandas.DataFrame], 每一行对应数据库返回的每一行, 列名是输入的field字段信息

Example

# 获取股票'000001'和'601567'的每股收益、扣非每股收益及净利润
df = get_financial_data(['000001', '601567'], ['f001', 'f002', 'f095'],watch_date='2020-04-22')

get_stock_reports- 获取单个股票多个报告期发布的财务数据

qff.price.finance.get_stock_reports(code, fields=None, start=None, end=None)[源代码]

获取单个股票多个报告期发布的财务数据

参数
  • code (str) – 一支股票代码

  • fields (Optional[list]) – 返回的财务数据字段list,’001’-‘580’,None表示所有财务指标,详细的财务数据表及字段描述请见 年报(季报)数据

  • start (Optional[str]) – 查询期间开始日期,一个字符串(格式类似’2015-10-15’),可以是None, 代表从股票上市开始

  • end (Optional[str]) – 查询日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame]

get_fundamentals_continuously- 查询单个股票连续多日的财务数据

qff.price.finance.get_fundamentals_continuously(code, fields=None, end_date=None, count=None)[源代码]

查询单个股票连续多日的财务数据

详细的财务数据表及字段描述请见financial_dict

参数
  • code (str) – 一支股票代码

  • fields (Optional[list]) – 返回的财务数据字段list,’001’-‘580’,None表示所有财务指标,详细的财务数据表及字段描述请见 年报(季报)数据

  • end_date (Optional[str]) – 查询日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

  • count (Optional[int]) – 获取 end_date 前 count 个日期的数据

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame]

get_history_fundamentals- 获取多只股票多个季度(年度)的历史财务数据

qff.price.finance.get_history_fundamentals(code, fields, watch_date=None, report_date=None, count=1, interval='1q')[源代码]

获取多只股票多个季度(年度)的历史财务数据 可指定单季度数据, 也可以指定年度数据。可以指定观察日期, 也可以指定最后一个报告期的结束日期

参数
  • code (Optional[str]) – 股票代码或者股票代码列表

  • fields (Optional[list]) – 要查询的财务数据的列表,详细的财务数据表及字段描述请见 年报(季报)数据

  • watch_date (Optional[str]) – 观察日期, 如果指定, 将返回 watch_date 日期前(包含该日期)发布的报表数据

  • report_date (Optional[str]) – 财报日期, 可以是 ‘2019’/’2019q1’/’2018q4’ 格式, 如果指定, 将返回 report_date 对应报告期及之前的历史报告期的报表数据 watch_date 和 stat_date 只能指定一个, 而且必须指定一个

  • count (int) – 查询历史的多个报告期时, 指定的报告期数量. 如果股票历史报告期的数量小于 count, 则该股票返回的数据行数将小于 count

  • interval (str) – 查询多个报告期数据时, 指定报告期间隔, 可选值: ‘1q’/’1y’, 表示间隔一季度或者一年,举例: report_date=’2019q1’, interval=’1q’, count=4, 将返回 2018q2,2018q3,2018q4,2019q1 的数据 report_date=’2019q1’, interval=’1y’, count=4, 将返回 2016q1,2017q1,2018q1,2019q1 的数据

返回类型

Optional[DataFrame]

返回

pandas.DataFrame, 数据库查询结果. 数据格式同 get_fundamentals. 每个股票每个报告期(一季度或者一年)的数据占用一行. 推荐用户对结果使用pandas的groupby方法来进行分组分析数据

get_stock_forecast- 获取股票业绩预告数据

qff.price.finance.get_stock_forecast(code=None, start=None, end=None)[源代码]

获取股票业绩预告数据

参数
  • code (Optional[str]) – 一支股票代码或股票列表,可以是None值,代表整个市场

  • start (Optional[str]) – 查询期间开始日期,一个字符串(格式类似’2015-10-15’),可以是None, 代表从股票上市开始

  • end (Optional[str]) – 查询日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame],包含以下数据:

字段名

含义

code

股票代码

pub_date

业绩预告公告日期

report_date

报告期

profit_min

本期利润下限

profit_max

本期利润上限

profit_ratio_min

本期利润同比增幅下限

profit_ratio_max

本期利润同比增幅上限

get_stock_express- 获取股票业绩快报数据

qff.price.finance.get_stock_express(code=None, start=None, end=None)[源代码]

获取股票业绩快报数据

参数
  • code (Optional[str]) – 一支股票代码或股票列表,可以是None值,代表整个市场

  • start (Optional[str]) – 查询期间开始日期,一个字符串(格式类似’2015-10-15’),可以是None, 代表从股票上市开始

  • end (Optional[str]) – 查询日期结束日期, 一个字符串(格式类似’2015-10-15’),可以是None, 使用默认日期. 这个默认日期在回测时, 等于 context.current_dt 的前一天。在实盘时,为当前最新日期,一般是昨天。

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame],包含以下数据:

字段名

含义

code

股票代码

pub_date

业绩快报公告日期

report_date

报告期

net_profit

归母公司净利润

adjusted_profit

扣非净利润

total_assets

总资产

net_assets

净资产

eps

每股收益

roe_diminish

摊薄净资产收益率

roe_weighting

加权净资产收益率

naps

每股净资产

get_valuation- 获取多个股票在指定交易日范围内的市值表数据

qff.price.finance.get_valuation(code, start=None, end=None, fields=None, count=None)[源代码]

获取多个股票在指定交易日范围内的市值表数据

参数
  • code (str) – 一支股票代码或者一个股票代码的list,None表示所有股票代码

  • start (Optional[str]) – 查询开始时间,不能与count共用

  • end (Optional[str]) – 查询结束时间

  • count (Optional[int]) – 表示往前查询每一个标的count个交易日的数据,如果期间标的停牌,则该标的返回的市值数据数量小于count

  • fields (Optional[list]) – 财务数据中市值表的字段,为None返回所有字段,可用字段如下:

返回类型

Optional[DataFrame]

返回

返回一个dataframe,索引默认是pandas的整数索引,返回的结果字段描述如下:

字段名

含义

code

股票代码

date

日期

quantity_ratio

量比

capitalization

总股本(万股)

circulating_cap

流通股本(万股)

market_cap

总市值(亿元)

circulating_market_cap

流通市值(亿元)

turnover_ratio

换手率(%)

pe_ratio

市盈率(PE, TTM)

pe_ratio_lyr

市盈率(PE)s

pe_ratio_dyn

市盈率(动态)

pb_ratio

市净率(PB)

query_valuation- 查询满足条件的市值信息数据

qff.price.finance.query_valuation(filter, projection=None)[源代码]

查询满足条件的市值信息数据 可用查询条件字段如下:

字段名

含义

code

股票代码

date

日期

quantity_ratio

量比

capitalization

总股本(万股)

circulating_cap

流通股本(万股)

market_cap

总市值(亿元)

cir_market_cap

流通市值(亿元)

turnover_ratio

换手率(%)

pe_ttm

市盈率(PE, TTM)

pe_lyr

市盈率(PE)s

pe_dyn

市盈率(动态)

pb_ratio

市净率(PB)

参数
  • filter (Dict) – dict 查询条件字典,按pymongo格式输入

  • projection (Optional[Dict]) – 你需要查询的字段列表,按pymongo格式输入,返回结果中总会包含code、date字段,无需输入

返回类型

Optional[DataFrame]

返回

返回一个 [pandas.DataFrame], 每一行对应数据库返回的每一行, 列索引是你查询的所有字段

Example
# 查询上一个交易日量比大于2,换手率小于2%的股票
yesterday = context.previous_date
filter = {'date': yesterday, 'quantity_ratio': {'$gt': 2}, 'turnover_ratio': {'$lt': 0.02}}
projection = {'quantity_ratio' : 1, 'turnover_ratio': 1}
signal = query_valuation(filter, projection)