pybroker.data 模块

包含用于获取外部数据的 DataSource

class Alpaca(api_key: str, api_secret: str)[源代码]

基类:DataSource

Alpaca 获取股票数据。

query(symbols: str | Iterable[str], start_date: str | datetime, end_date: str | datetime, timeframe: str | None = '1d', adjust: Any | None = None) DataFrame[源代码]

查询数据。如果通过调用 pybroker.cache.enable_data_source_cache() 启用了缓存,则返回缓存的数据。

参数:
  • symbols -- 待查询数据的品种代码。

  • start_date -- 待查询数据的起始日期(含)。

  • end_date -- 待查询数据的结束日期(含)。

  • timeframe -- 指定要查询的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • adjust -- 要应用的复权调整类型。

返回:

包含查询结果的 pandas.DataFrame

class AlpacaCrypto(api_key: str, api_secret: str)[源代码]

基类:DataSource

Alpaca 获取加密货币数据。

参数:
  • api_key -- Alpaca 的 API key。

  • api_secret -- Alpaca 的 API secret。

COLUMNS: Final = ('symbol', 'date', 'open', 'high', 'low', 'close', 'volume', 'vwap', 'trade_count')
TRADE_COUNT: Final = 'trade_count'
query(symbols: str | Iterable[str], start_date: str | datetime, end_date: str | datetime, timeframe: str | None = '1d', _adjust: str | None = None) DataFrame[源代码]

查询数据。如果通过调用 pybroker.cache.enable_data_source_cache() 启用了缓存,则返回缓存的数据。

参数:
  • symbols -- 待查询数据的品种代码。

  • start_date -- 待查询数据的起始日期(含)。

  • end_date -- 待查询数据的结束日期(含)。

  • timeframe -- 指定要查询的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • adjust -- 要应用的复权调整类型。

返回:

包含查询结果的 pandas.DataFrame

class DataSource[源代码]

基类:ABC, DataSourceCacheMixin

用于从外部数据源查询数据的基类。继承此类并重写 _fetch_data(),即可实现一个可与 pybroker.strategy.Strategy 搭配使用的自定义 DataSource

abstractmethod _fetch_data(symbols: frozenset[str], start_date: datetime, end_date: datetime, timeframe: str | None, adjust: Any | None) DataFrame[源代码]

重写此方法以从自定义数据源返回数据。返回的 pandas.DataFrame 必须包含以下列:symboldateopenhighlowclose

参数:
  • symbols -- 待查询数据的股票代码。

  • start_date -- 待查询数据的起始日期(含)。

  • end_date -- 待查询数据的结束日期(含)。

  • timeframe -- 指定要查询的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • adjust -- 要应用的复权调整类型。

返回:

包含查询结果的 pandas.DataFrame

query(symbols: str | Iterable[str], start_date: str | datetime, end_date: str | datetime, timeframe: str | None = '', adjust: Any | None = None) DataFrame[源代码]

查询数据。如果通过调用 pybroker.cache.enable_data_source_cache() 启用了缓存,则返回缓存的数据。

参数:
  • symbols -- 待查询数据的品种代码。

  • start_date -- 待查询数据的起始日期(含)。

  • end_date -- 待查询数据的结束日期(含)。

  • timeframe -- 指定要查询的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • adjust -- 要应用的复权调整类型。

返回:

包含查询结果的 pandas.DataFrame

class DataSourceCacheMixin[源代码]

基类:object

实现获取和存储已缓存 DataSource 数据的 Mixin。

get_cached(symbols: Iterable[str], timeframe: str, start_date: str | datetime | Timestamp | datetime64, end_date: str | datetime | Timestamp | datetime64, adjust: Any | None) tuple[DataFrame, Iterable[str]][源代码]

当通过 pybroker.cache.enable_data_source_cache() 启用缓存时,从磁盘获取已缓存的数据。

参数:
  • symbols -- 用于获取已缓存数据的品种代码 Iterable

  • timeframe -- 指定已缓存数据的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • start_date -- 已缓存数据的起始日期(含)。

  • end_date -- 已缓存数据的结束日期(含)。

  • adjust -- 要应用的复权调整类型。

返回:

tuple[pandas.DataFrame, Iterable[str]],包含一个存有已缓存数据的 pandas.DataFrame,以及一个记录未找到缓存数据的品种代码的 Iterable[str]

set_cached(timeframe: str, start_date: str | datetime | Timestamp | datetime64, end_date: str | datetime | Timestamp | datetime64, adjust: Any | None, data: DataFrame)[源代码]

当通过 pybroker.cache.enable_data_source_cache() 启用缓存时,将数据存储到磁盘缓存。

参数:
  • timeframe -- 指定待缓存数据的时间框架分辨率的格式化字符串。该时间框架字符串支持以下单位: - "s"/"sec":秒 - "m"/"min":分钟 - "h"/"hour":小时 - "d"/"day":天 - "w"/"week":周 时间框架字符串示例:1h 30m

  • start_date -- 待缓存数据的起始日期(含)。

  • end_date -- 待缓存数据的结束日期(含)。

  • adjust -- 要应用的复权调整类型。

  • data -- 包含待缓存数据的 pandas.DataFrame

class YFinance(auto_adjust: bool = False)[源代码]

基类:DataSource

Yahoo Finance获取数据。

参数:

auto_adjust -- 是否自动复权收盘价。如果为 True,则 close 列会存储复权后的收盘价。默认为 False

ADJ_CLOSE

复权收盘价所在列的列名。

类型:

Final

query(symbols: str | Iterable[str], start_date: str | datetime, end_date: str | datetime, _timeframe: str | None = '', _adjust: Any | None = None) DataFrame[源代码]

Yahoo Finance查询数据。数据的时间框架仅限于按天。

参数:
  • symbols -- 待查询数据的股票代码。

  • start_date -- 待查询数据的起始日期(含)。

  • end_date -- 待查询数据的结束日期(含)。

返回:

包含查询结果的 pandas.DataFrame