为量化项目提供稳定且统一的数据接口
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19bb1625c24acbbb898a6f4503ab1418b2b9506e2fd68707c640afe0a34e1bbd
|
|
| MD5 |
9792017822efb077f751e7903c3e4f4b
|
|
| BLAKE2b-256 |
4f36e8e1f3007a1496b958e590e3e4080285cce8c56069a75479121d9452e5b9
|
File details
Details for the file QuantDataCollector-0.1.1-py3-none-any.whl.
File metadata
- Download URL: QuantDataCollector-0.1.1-py3-none-any.whl
- Upload date:
- Size: 41.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49e8b45bd36ca67bafe81662fc4fcab437c4f4ca7e87716ffcc8d0bc99701f63
|
|
| MD5 |
987d6788e07d20a322be5ba5835c15b1
|
|
| BLAKE2b-256 |
08536764eb2a7c783a02cce75ebe3675c90a0c79b4e8bd65b48d721baa475b26
|