Skip to main content

为量化项目提供稳定且统一的数据接口

Project description

数据收集

简介

QuantDataCollector的目的是提供统一、稳定的数据接口,用户可以不用考虑数据获取问题,专注策略开发。

QuantDataCollector从各种数据源收集相关数据,并且可以选择缓存在本地,目前的覆盖的数据及数据源包括:

  • baostock: Python库,提供股市、债券、货币、存款等数据。

使用

通过DataCollector类向外提供统一接口,以获取所有股票sz.399995的基本信息为例:

from QuantDataCollector.data_collector import DataCollector
data_collector = DataCollector()
error_code, data = data_collector.get_stock_data(["sz.399990", "sh.600000"], "2024-8-6", frequency='5')
print(data)

结果:

{'sz.399990': [{'date': '2024-08-06', 'time': '20240806093500000', 'code': 'sz.399990', 'open': '2525.4800', 'high': '2540.7400', 'low': '2525.4800', 'close': '2530.7500', 'volume': '36261300', 'amount': '271692864.0000', 'adjustflag': '3'},..., {'date': '2024-08-06', 'time': '20240806150000000', 'code': 'sz.399990', 'open': '2554.5200', 'high': '2556.4000', 'low': '2554.2300', 'close': '2555.8800', 'volume': '7076000', 'amount': '58778624.0000', 'adjustflag': '3'}], 'sh.600000': [{'date': '2024-08-06', 'time': '20240806093500000', 'code': 'sh.600000', 'open': '8.4300000000', 'high': '8.4500000000', 'low': '8.3900000000', 'close': '8.4000000000', 'volume': '1598400', 'amount': '13463248.0000', 'adjustflag': '2'}, ..., {'date': '2024-08-06', 'time': '20240806150000000', 'code': 'sh.600000', 'open': '8.2400000000', 'high': '8.2600000000', 'low': '8.2400000000', 'close': '8.2400000000', 'volume': '1320700', 'amount': '10887264.0000', 'adjustflag': '2'}]}

配置项

data_collector_config.py中有QuantDataCollector的配置项

构造QuantDataCollector时,给定配置项,控制日志详细程度、是否使用cache以及cache的类型。

默认配置为

{
  "cache" : cache_config.NO_CACHE,
  "log" : log_config.WARNING_LOG
}

配置方法是在实例化时传入配置:

from QuantDataCollector.data_collector import DataCollector 
data_collector = DataCollector({"cache" : cache_config.PICKLE_CACHE, "log" : log_config.DEBUG_LOG})

日志查看

通过get_data_collector_info接口查看日志路径,进而查看日志

from QuantDataCollector.data_collector import DataCollector
data_collector = DataCollector()
print(data_collector.get_data_collector_info())

API接口

下面是自动生成的接口介绍

 
 |  get_all_share_code(self, day=None)
 |      获取所有股票代码
 |      
 |      获取交易日day时,股市上所有股票代码,不包括指数和其他。
 |      
 |      Args:
 |        day: String,交易日,如果不是交易日,会导致失败。可省略,默认为离今天最近的交易日。
 |      
 |      Returns:
 |        Number: 错误码,0表示成功,否则表示失败,1表示非交易日
 |        list: 内容为表示股票代码的字符串
 |      
 |      Raises:
 |        DataCollectorError:
 |  
 |  get_all_stock_code(self, day=None)
 |      获取所有证券代码(包括股票、指数和其他)
 |      
 |      获取交易日day时,股市上所有证券代码,包括股票、指数和其他。
 |      
 |      Args:
 |        day: String,交易日,如果不是交易日,会导致失败。可省略,默认为离今天最近的交易日。
 |      
 |      Returns:
 |        Number: 错误码,0表示成功,否则表示失败,1表示非交易日
 |        list: 内容为表示证券代码的字符串
 |      
 |      Raises:
 |        DataCollectorError:
 |  
 |  get_data_collector_info(self)
 |      获取关于数据收集器的一些信息,包括日志位置、数据来源等
 |  
 |  get_recent_trade_day(self, day=None)
 |      获取day之前最接近day的交易日
 |      
 |      获取当前日期之前,最近的交易日期
 |      
 |      Args:
 |        day: String,日期,格式为:"2022-1-20"。如果省略,则day为运行时日期
 |      
 |      Returns:
 |        String: 离day最近的交易日
 |      Raises:
 |  
 |  get_stock_basic_data(self, stock_code)
 |      获取某证券的基本信息
 |      
 |      通过stock_code指定某证券,获取该股票的基本信息。主要包括:名称、上市日期、退市日期、证券类型、上市状态
 |      
 |      Args:
 |        stock_code: String,证券代码,比如"sh.600000"
 |      
 |      Returns:
 |        Number: 错误码,0表示获取成功
 |        dict: 字典
 |      
 |      Raises:
 |        DataCollectorError
 |  
 |  get_stock_data(self, stock_code_list, day=None, frequency='d')
 |      获取一组股票在某个交易日的数据
 |      
 |      获取股票代码在stock_code_list中的股票,在交易日day的数据,主要OHLC、成交量、成交额、换手率、市盈、市净、市销等
 |      
 |      Args:
 |        stock_code_list: list<String>,一组证券代码,比如["sh.600000"]
 |        day: 以字符串形式表示的日期,比如'2008-1-1'。默认为最新交易日
 |        frequency: String,数据类型:
 |            * 'm' = 月K
 |            * 'w' = 周K
 |            * 'd' = 日K
 |            * '5' = 5分钟K
 |            * '15' = 15分钟K
 |            * '30' = 30分钟K
 |            * '60' = 60分钟K
 |        
 |      Returns:
 |        Number: 错误码,0表示获取成功
 |        dict: key为股票代码,value为list,list中的每一项是一个dict,其中包含的key/value根据frequency有所不同:
 |                * 周/月k: ["date", "code", "open", "high", "low", "close", "volume", "amount", "adjustflag", "turn", "pctChg"],
 |                * 日k: ["date", "code", "open", "high", "low", "close", "preclose", "volume", "amount", "adjustflag", "turn", "tradestatus", "pctChg", "peTTM", "psTTM", "pcfNcfTTM", "pbMRQ","isST"]
 |                * 分钟k: ["date", "time", "code", "open", "high", "low", "close", "volume", "amount", "adjustflag"]
 |              其中date -> 日期,code -> 证券码, open -> 开盘价
 |                - date -> 表示数据对应日期,格式为YYYY-MM-DD
 |                - time -> 表示数据对应的具体时间,格式为YYYYMMDDHHMMSSsss
 |                - code -> 表示数据对应证券代码
 |                - open -> 表示开盘价
 |                - close -> 表示收盘价
 |                - preclose -> 表示前收盘价
 |                - high -> 表示最高价
 |                - low -> 表示最低价
 |                - volumn -> 表示成交量(累计 单位:股)
 |                - amount -> 表示成交额(单位:人民币元)
 |                - adjustflag -> 表示复权状态(1:后复权, 2:前复权,3:不复权
 |                - turn -> 表示换手率
 |                - tradestatus -> 表示交易状态(1:正常交易 0:停牌)
 |                - pctChg -> 表示涨跌幅(百分比):日涨跌幅=[(指定交易日的收盘价-指定交易日前收盘价)/指定交易日前收盘价]*100%
 |                - peTTM -> 表示滚动市盈率:(指定交易日的股票收盘价/指定交易日的每股盈余TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/归属母公司股东净利润TTM
 |                - pbMRQ -> 表示市净率:(指定交易日的股票收盘价/指定交易日的每股净资产)=总市值/(最近披露的归属母公司股东的权益-其他权益工具)
 |                - psTTM -> 表示市销率:(指定交易日的股票收盘价/指定交易日的每股销售额)=(指定交易日的股票收盘价*截至当日公司总股本)/营业总收入TTM
 |                - pcfNcfTTM -> 表示市现率:(指定交易日的股票收盘价/指定交易日的每股现金流TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/现金以及现金等价物净增加额TTM
 |                - isST -> 表示是否ST股
 |      
 |      Raises:
 |        DataCollectorError:
 |      
 |      --------------------------------------------------------
 |      Override Notes:
 |        不限实现方式,为了性能,最好存储在数据库或者本地缓存
 |  
 |  get_stock_data_period(self, stock_code_list, start=None, end=None, frequency='d')
 |      获取一组股票在某个交易日的数据
 |      功能、参数、返回值与Raise都与get_stock_data相同
 |  
 |  get_stock_type(self, stock_code)
 |      获取证券类型
 |      
 |      获取code对应证券的类型
 |      
 |      Args:
 |        stock_code: String,证券代码,比如"sh.600000"
 |      
 |      Returns:
 |        Number: 错误码,0表示成功,否则表示失败
 |        String:
 |          '1'表示股票
 |          '2'表示指数
 |          '3'表示其他
 |      
 |      Raises:
 |        DataCollectorError:
 |  
 |  is_trade_day(self, day)
 |      判断day是否为交易日
 |      
 |      Args:
 |        day: String,需要查询的日期,格式为:"2021-3-23"
 |      
 |      Returns:
 |        bool: 是否为交易日
 |      
 |      Raise:
 |        DataCollectorError

架构

为了提供统一的接口,QuantDataCollector包采用了工厂方法

对于不同的数据源,实现时都要继承abstract_data_collector.py中的AbstractDataCollector类,最终由data_collector.py提供统一接口。

详见:架构

数据源及其特点

baostock

已经包装好的股票数据拉取Python库,数据覆盖

  • 股票
  • 公司业绩
  • 货币
  • 存款利率

优点:

  • 使用简单

缺点:

  • 服务由他人提供,已有收费趋势,可用性不高

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

QuantDataCollector-0.1.1.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

QuantDataCollector-0.1.1-py3-none-any.whl (41.3 kB view details)

Uploaded Python 3

File details

Details for the file QuantDataCollector-0.1.1.tar.gz.

File metadata

  • Download URL: QuantDataCollector-0.1.1.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for QuantDataCollector-0.1.1.tar.gz
Algorithm Hash digest
SHA256 19bb1625c24acbbb898a6f4503ab1418b2b9506e2fd68707c640afe0a34e1bbd
MD5 9792017822efb077f751e7903c3e4f4b
BLAKE2b-256 4f36e8e1f3007a1496b958e590e3e4080285cce8c56069a75479121d9452e5b9

See more details on using hashes here.

File details

Details for the file QuantDataCollector-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for QuantDataCollector-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 49e8b45bd36ca67bafe81662fc4fcab437c4f4ca7e87716ffcc8d0bc99701f63
MD5 987d6788e07d20a322be5ba5835c15b1
BLAKE2b-256 08536764eb2a7c783a02cce75ebe3675c90a0c79b4e8bd65b48d721baa475b26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page