Python免费的交易数据接口续

之前在学校用WRDS,可以接python,直接筛选导入数据,但是每次都需要验证码,

没有WRDS账户以后,换了好几个python的交易数据接口都不好用。

最近发现迅投xtdata 挺好用的,同时做策略回测也方便。

xtdata是xtquant库中提供行情相关数据的模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,作为python库的形式可以被灵活添加到各种策略脚本中。

今天继续分享一些使用过程的感受。

  • 其他依赖库 numpy、pandas会在数据返回的过程中使用本模块会尽可能减少对numpy和pandas库的直接依赖,以允许使用者在不同版本的库之间自由切换pandas库中旧的三维数据结构Panel没有被使用,而是以dict嵌套DataFrame代替(后续可能会考虑使用xarray等的方案,也欢迎使用者提供改进建议)后文中会按常用规则分别简写为np、pd,如np.ndarray、pd.DataFrame
  • 全推数据是市场全部合约的切面数据,是高订阅数场景下的有效解决方案。持续订阅全推数据可以获取到每个合约最新分笔数据的推送,且流量和处理效率都优于单股订阅
  • 单股订阅行情是仅返回单股数据的接口,建议单股订阅数量不超过50。如果订阅数较多,建议直接使用全推数据
  • 板块分类信息等静态信息更新频率低,无需频繁下载,按周或按日定期下载更新即可

接口说明

行情接口

订阅单股行情

subscribe_quote(stock_code, period='1d', start_time='', end_time='', count=0, callback=None)
  • 释义
    • 订阅单股的行情数据,返回订阅号
    • 数据推送从callback返回,数据类型和period指定的周期对应
    • 数据范围代表请求的历史部分的数据范围,数据返回后会进入缓存,用于保证数据连续,通常情况仅订阅数据时传count = 0即可
  • 参数
    • stock_code – string 合约代码
    • period – string 周期
    • start_time – string 起始时间
    • end_time – string 结束时间
    • count – int 数据个数
    • callback – 数据推送回调
      • 回调定义形式为on_data(datas),回调参数datas格式为 { stock_code : [data1, data2, …] }
def on_data(datas):
    for stock_code in datas:
        	print(stock_code, datas[stock_code])

  • 返回
    • 订阅号,订阅成功返回大于0,失败返回-1
  • 备注
    • 单股订阅数量不宜过多,详见 接口概述-请求限制

订阅全推行情

subscribe_whole_quote(code_list, callback=None)
  • 释义
    • 订阅全推行情数据,返回订阅号
    • 数据推送从callback返回,数据类型为分笔数据
  • 参数
    • code_list – 代码列表,支持传入市场代码或合约代码两种方式
      • 传入市场代码代表订阅全市场,示例:[‘SH’, ‘SZ’]
      • 传入合约代码代表订阅指定的合约,示例:[‘600000.SH’, ‘000001.SZ’]
    • callback – 数据推送回调
      • 回调定义形式为on_data(datas),回调参数datas格式为 { stock1 : data1, stock2 : data2, … }
    • 订阅全推行情
def on_data(datas):    for stock_code in datas:        	print(stock_code, datas[stock_code])
  • 返回
    • 订阅号,订阅成功返回大于0,失败返回-1
  • 备注
    • 订阅后会首先返回当前最新的全推数据

反订阅行情数据

unsubscribe_quote(seq)
  • 释义反订阅行情数据
  • 参数seq – 订阅时返回的订阅号
  • 备注无

阻塞线程接收行情回调

run()
  • 释义阻塞当前线程来维持运行状态,一般用于订阅数据后维持运行状态持续处理回调
  • 参数seq – 订阅时返回的订阅号
  • 返回无
  • 备注实现方式为持续循环sleep,并在唤醒时检查连接状态,若连接断开则抛出异常结束循环

获取行情数据

get_market_data(field_list=[], stock_list=[], period='1d', start_time='', end_time='', count=-1, dividend_type='none', fill_data=True)

释义

从缓存获取行情数据,是主动获取行情的主要接口

参数

field_list – list 数据字段列表,传空则为全部字段

stock_list – list 合约代码列表

period – string 周期

start_time – string 起始时间

end_time – string 结束时间

count – int 数据个数

默认参数,大于等于0时,若指定了start_time,end_time,此时以end_time为基准向前取count条;若start_time,end_time缺省,默认取本地数据最新的count条数据;若start_time,end_time,count都缺省时,默认取本地全部数据

dividend_type – string 除权方式

fill_data – bool 是否向后填充空缺数据

返回

period为1m 5m 1d等K线周期时

返回dict { field1 : value1, field2 : value2, … }

field1, field2, … :数据字段

value1, value2, … :pd.DataFrame 数据集,index为stock_list,columns为time_list

各字段对应的DataFrame维度相同、索引相同

period为tick分笔周期时

返回dict { stock1 : value1, stock2 : value2, … }

stock1, stock2, … :合约代码

value1, value2, … :np.ndarray 数据集,按数据时间戳time增序排列

备注

获取lv2数据时需要数据终端有lv2数据权限

时间范围为闭区间

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/78172
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 15 日
下一篇 2024 年 7 月 15 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注