Skip to main content

core types definition shared by zillionare.

Project description

Release Status CI status

1. Usage

To use zillionare core types in a project

    from coretypes import Frame, FrameType

2. Features

本模块提供了在 Zillionare 中的核心类型定义。主要有:

  1. 基础数据结构类的定义,比如时间帧类型 FrameType (对应于其它框架中可能使用的字符串 '1m', '1d'之类的定义), 时间日期类型 Frame, 证券类型定义 FrameType 等。在几乎所有需要使用行情数据的地方,您都应该使用这些类型定义。
  2. 交易错误类型,比如 NocashError (现金不足以完成交易错误)等等。
  3. QuotesFetcher 接口定义。如果您要将其它数据源接入到 zillionare 中,就需要实现这个接口,按照定义返回相应的数据。一旦实现了此接口,就可以在 zillionare-omega 配置文件中配置接口,以例 omega 可以自动启用这个 adaptor 来获取数据。

2.1. 基础数据结构定义

基础数据结构定义中,共有两种类型。一种是用以静态类型检查使用的,通常 IDE,mypy 这样一些工具会利用它,以检测编码错误,或者提供自动完成。比如, BarsArray 就是这样一个类型,我们可以用它来声明一个行情函数的返回值类型。它的特点时,以目前的 Python 版本(截止到 Python3.8) 来看,类型信息无法在运行时访问到。

另一类则是运行时类型,比如 FrameType 等。

2.1.1. FrameType

行情数据都是按帧进行封装的,比如,每 1 分钟为一个单位,封装了高开低收、成交量等信息。这样的单位常常还有 5 分钟,15 分钟,日线等等。 FrameType 列举了在 Zillionare 中常用的帧类型。在其它软件中,您可能看到unit或者peroid、周期等说法。当然,可能 FrameType 是最精准的一个词。

Zillionare 提供了以下对应帧类型:

周期 字符串 类型 数值
年线 1Y FrameType.YEAR 10
季线 1Q FrameType.QUARTER 9
月线 1M FrameType.MONTH 8
周线 1W FrameType.WEEK 7
日线 1D FrameType.DAY 6
60 分钟线 60m FrameType.MIN60 5
30 分钟线 30m FrameType.MIN30 4
15 分钟线 15m FrameType.MIN15 3
5 分钟线 5m FrameType.MIN5 2
分钟线 1m FrameType.MIN1 1

FrameType还提供了 <, <=, >=, >等比较运算。

2.1.2. SecurityType

常见的证券交易品种定义。

类型 说明
SecurityType.STOCK stock 股票类型
SecurityType.INDEX index 指数类型
SecurityType.ETF etf ETF基金
SecurityType.FUND fund 基金
SecurityType.LOF lof,LOF基金
SecurityType.FJA fja 分级A基金
SecurityType.FJB fjb 分级B基金
SecurityType.BOND bond 债券基金
SecurityType.STOCK_B stock_b B股
SecurityType.UNKNOWN unknown 未知品种

它的一个用法是,在我们查询证券列表中,有哪些股票类型的代码时:

secs = await Security.select().types(SecurityType.STOCK).eval()
print(secs)

2.1.3. MarketType

市场类型。Zillionare支持的类型为上交所XSHGXSHE

类型 说明
MarketType.XSHG XSHG 上交所
MarketType.XSHE XSHE 深交所

2.1.4. bars_dtype

在zillionare中,我们一般使用 Numpy Structured Array来存储行情数据,以使用numpy的许多性能算法进行运算。同时,它也比pandas.DataFrame更省内存,在小数据集(<50万条)时,多数运算(但不是每一种运算)会有更高的性能。

要使用 Numpy Structured Array来表示行情数据,就需要定义定段列表。 bars_dtype就是这样的列表,它包括了字段(frame, open, high, low, close, volume, amount, factor)。

bars_dtype = np.dtype(
    [
        ("frame", "datetime64[s]"),
        ("open", "f4"),
        ("high", "f4"),
        ("low", "f4"),
        ("close", "f4"),
        ("volume", "f8"),
        ("amount", "f8"),
        ("factor", "f4"),
    ]
)

2.1.5. bars_dtype_with_code

bars_dtype基础上增加了code字段,以用于同时存取多个证券的行情的情况。

bars_dtype_with_code = np.dtype(
    [
        ("code", "O"),
        ("frame", "datetime64[s]"),
        ("open", "f4"),
        ("high", "f4"),
        ("low", "f4"),
        ("close", "f4"),
        ("volume", "f8"),
        ("amount", "f8"),
        ("factor", "f4"),
    ]
)

2.1.6. bars_cols、bars_with_limit_dtype, bars_with_limit_cols

即定义在bars_dtype中的字段列表。有时候我们需要在numpy与pandas dataframe之间进行转换时,往往需要这个变量的值。

bars_with_limit_dtype提供了带涨跌停报价的行情数据类型。

bars_with_limit_cols提供了定义在bars_with_limit_dtype中的字段名列表。

2.1.7. BarsArray

可用此静态类型作为行情数据(常用变量名 bars)的type hint,对应于bars_dtype

2.1.8. BarsWithLimitArray

BarsArray,但带涨跌停报价,对应于bars_with_limit_array

2.1.9. BarsPanel

对应于bars_dtype_with_code的type hint类型。

2.1.10. xrxd_info_dtype

除权除息信息类型

2.1.11. security_info_dtype

定义了证券列表的字段

2.2. Trade Errors

在coretypes.errors.trade中,定义了交易中常常可能出现的异常类型。在TradeClient, TraderServer和Backtesting Server间常常都需要使用它。

我们把Trade Errors分为客户端错误 coretypes.errors.trade.client.*, coretypes.errors.trade.server.*, coretypes.errors.trade.entrust.*三种类型,分别表明客户端编码、传参错误;服务器内部错误和交易类型错误。

!!! Tips 对开发者而言,如果需要将此类异常传入到客户端,需要通过 TraderError.as_json将其串行化后再通过网络发送,在客户端则可以通过TraderError.from_json将其恢复。

为方便查错,服务器在生成TradeError时,可以传入`with_stack=True`,这样生成的TraderError(及子类)中,将包含调用栈信息(在`stack`属性中),以方便查错。
def foo():
    try:
        raise TraderError("mock error", with_stack=True)
    except TradeError as e:
        print(e.stack)

2.3. QuotesFetcher

Zillionare目前只适配了聚宽的数据源,但我们通过 QuotesFetcher 让您可以自行适配其它数据源。

你需要实现定义在 QuotesFetcher中的接口,然后在omega的配置文件中,加载您的实现。

具体实现可以参考 omega-jqadaptor

配置可以参见omega-config

# defaults.yaml

quotes_fetchers:
  - impl: jqadaptor    # there must be a create_instance method in this module
    account: ${JQ_ACCOUNT}
    password: ${JQ_PASSWORD}

3. Credits

本项目使用ppw创建,并遵循ppw定义的代码风格和质量规范。

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

zillionare_core_types-0.6.3.tar.gz (17.4 kB view hashes)

Uploaded Source

Built Distribution

zillionare_core_types-0.6.3-py3-none-any.whl (15.5 kB view hashes)

Uploaded Python 3

Supported by

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