Skip to content

使用手册

1. 配置文件

对普通用户而言,Omega会从~/zillionare/omega/config下加载配置。

Note

如果您是Omega的开发者,应该将环境变量__cfg4py_server_role__设置为DEV,这样Omega会 从源代码所在文件夹下面的omega/config下读取配置。

如果您是Omega的测试者,建议您将环境变量__cfg4py_server_role__设置为TEST,这样Omega 会从~/.zillionare/omega/config下加载配置。

上述设置并非必须,如果您不懂得这种设置的意义,您完全可以使用默认的位置,即~/zillionare/omega/config

配置文件使用YAML文件格式,并支持环境变量。比如,如果您通过环境变量POSTGRES_USER来设置了数据库 账号,则可以在配置文件中这样使用它:

1
2
postgres:
    dsn: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost/zillionare

上述环境变量的扩展是通过cfg4py来支持的。

2. 数据同步

数据同步是Omega最核心的工作之一。Omega专门配置了一个Jobs进程来管理数据同步及其它工作。Jobs通过 读取配置文件来确定应该如何进行同步,并向Omega Fetcher进程发出数据同步请求。

对于日历、证券列表等少量数据的同步,这些请求通常只会发给一个Omega Fetcher进程,而对K线这样的大 批量数据,这些请求则会发给所有在线的Omega Fetcher进程,因此,使用Omega可以得到极为优秀的数据同 步性能。

2.1. 数据同步发生的时间

对日历和证券列表等数据,Omega每天进行一次,具体同步时间默认为午夜2点,您可以在配置文件中进行修改:

1
2
3
4
omega:  # omega服务自身相关的配置
    sync: # 同步相关的配置都在sync节下
        security_list: 02:00
        calendar: 02:00
建议在每个交易日盘前进行同步。如无特别需求,请保持默认值就好。

K线数据会在每个Frame结束时间进行同步。比如,对60分钟k线,会分别在10:30, 11:30, 14:00和15:00 各进行一次同步;对日线数据,会在15:00时进行同步,这样确保您始终可以得到最新的数据。

您的上游数据服务提供者可能没来得及在每个Frame结束时,就刚好把所有的数据准备好。因此,您可以通过 设置delay来稍稍延迟同步时间。如果您没有设置delay,而上游数据服务提供者又不能在Frame刚好结束时 提供数据的话,数据同步仍然会触发,只不过您只能得到上一帧的数据。您可以根据您应用的实时性要求和上 游数据提供者的服务能力来设置这个延时,系统默认是5秒钟。

关于delay的设置,我们在下一节中介绍。

2.2. 如何同步K线数据

Omega控制K线数据同步的配置格式如下(注意其中包括了上一节已经提到的delay参数):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
omega:
  sync: # 同步相关的配置都在sync节下
    bars: # K线数据同步配置都在bars节下
      - frame: '1d' # k线帧类型
        start: '2005-1-1' # 可以不指定,系统会从当前日期倒推到1000个数据记录前的时间
        stop: 2020-12-30 # 可以不指定,以便同步到最新的日期
        include: 000001.XSHG 399001.XSHE
        exclude: 000001.XSHE 600001.XSHG
        delay: 5
        cat:    # 证券分类,如股票(stock), 指数(index)等
            - stock
      - frame: '1m'
        start: '2005-1-1'
        cat:
            - stock

上述配置格式提供了要同步的证券标的、K线的帧类型(比如,是30分钟线还是日线),起始时间和延迟等关键 信息。其中证券标的又是由catexcludeinclude共同决定的。

上述配置中,每种K线都有自己的设置,它们构成了一个数组。

frame键表明k线的帧类型。Omega支持的帧类型如下(注意区分大小写):

K线类型 标识 说明
年线 1Y 每年一条记录,当年停牌的除外,下同
季线 1Q 每年产生4条记录
月线 1M 每月产生1条记录
周线 1W 每周产生1条记录
日线 1d 每天产生1条记录,全年约250条记录
60分钟线 60m 每天产生4条记录
30分钟线 30m 每天产生8条记录
15分钟线 15m 每天产生16条记录
5分钟线 5m 每天产生48条记录
1分钟线 1m 每天产生240条记录

start指定该种k线获取数据的起点时间。如果不指定,则系统会从当前日期倒推1000个数据记录。您无 须指定精确的时间,比如对30分钟线指定精确到2020年1月3日10:00开始,或者担心2020年1月4日是否刚好是 周线的结束日。对于同步数据来说,多取一个帧的数据并不会增加什么负担,所以系统会取到一个最合适的起 始时间,刚好保证您要求的数据都能被同步。

stop指定该种k线获取数据的终点。通常您无须进行设置,系统应该自动为您同步到最新时间。但 如果您设置了,则系统将不会为您获取在stop之后的任何数据。实际效果是,在首次同步完成后,禁 止了今后的数据同步。

待同步证券的标的由catincludeexclude共同决定。系统先根据cat选出一些标的, 然后排除在exclude中的标的,再加入include中的标的。

如果cat为空,则根据上述规则,将只有include中的标的被加入。如果一支标的在excludeinclude中同时存在,则include拥有更高的优选级。

根据上述规则,如果您有以下同步需求:同步除了银行股以外的所有股票的日线数据,并且包括上证指数和深 成指,则可以使用以下的配置:

1
2
3
4
5
6
7
8
omega:
  sync:
    bars:
      - frame: 1d   # 要求同步日线数据
        include: 000001.XSHG 399001.XSHE # 使用空格分隔
        exclude: 600001.XSHG 000001.XSHE ...
        cat:
            - stock # 仅包含股票

3. 管理omega

  1. 要启动Omega的行情服务,请在命令行下输入:
1
    omega start
  1. 行情同步等任务是由jobs进程管理的,所以您还需要启动jobs进程
1
    omega start jobs
  1. 要查看当前有哪些fetcher和jobs进程在运行,使用下面的命令:
1
    omega status
  1. 此外,Omega还提供了stop和restart命令:
1
2
3
4
    omega stop jobs
    omega stop
    omega restart jobs
    omega restart

4. 使用行情数据

虽然Omega提供了HTTP接口,但因为性能优化的原因,其通过HTTP接口提供的数据,都是二进制的。

使用行情数据的正确方式是通过Omicron SDK来访问数据。请跳转至 Omicron帮助文档 继续阅读。