老虎量化API文档

Context 对象

context 对象有两个作用:

  1. 存储策略运行中的状态信息

    1. context.portfolio 中存储了Portfolio 对象 , 里面是整个投资组合的信息
    2. context.portfolio.positions 中存储了目前持仓的信息, 详见Position 对象
    3. context.leverage 中存储了实时的杠杆
    4. context.max_leverage 中存储了当前的最大杠杆限制
  2. 存储用户希望再函数间传递的变量。在函数间传递的变量都必须通过 context 存储,而不要使用全局变量

context.get_datetime 获取当前策略运行的逻辑时间

context.get_datetime(timezone=None)

参数

  • timezone: 时区信息。可以使用字符串,例如 'US/Eastern' 表示美东时间, 'Asia/Chongqing' 表示北京时间。 默认为空时, 使用当前市场时区。

返回

  • 一个 datetime 对象, 表示当前策略运行的逻辑时间。
context.leverage_validate()

参数

返回

  • True 或 False,判断当前市场杠杆是否超过最大杠杆以便平仓。

Order 对象

订单对象有如下属性:

  • id: 订单id

  • status: 返回值是int,表示订单状态,取值和对应的含义如下:

    • 5: open
    • 6: filled
    • 4: cancelled
    • 8: rejected
    • 9: partial filled
  • created: 一个包含UTC时区的 Timestamp 对象,表示订单的创建时间

  • dt: 一个包含UTC时区的 Timestamp 对象,表示订单的更新时间

  • reason: 字符串,订单被取消的原因或被拒绝的原因

  • limit: limit price

  • amount: 订单股数

  • filled: 已成交股数

  • symbol: 标的symbol

  • filled_price: 成交价格

  • commission: 交易的佣金费用

  • realized_pnl: 已实现盈亏


Symbol 对象

symbol 对象有如下属性:

  • symbol: 字符串,证券编码
  • sid: int,symbol对应的id

Portfolio 对象

Portfolio 对象存储在 context.portfolio中, 有如下属性:

  • capital_used: 截至目前买买证券所消耗的资金数量
  • cash:目前可用的资金量
  • pnl: 盈亏,包含实现与未实现的盈亏
  • positions: 是一个dict,key 是 symbol 对象, value 是position 对象。使用的示例请参考 Position 对象部分。
  • portfolio_value: 持仓市值,含现金部分
  • position_value: 所有持仓的市值
  • returns: 截至目前整个投资组合的累计收益。
  • starting_cash: 初始资金
  • start_date: datetime 对象, 表示回测的开始时间
  • currency:主币种

Position 对象

Position 对象中包含目前持仓的仓位信息。可以通过 context.portfolio.positions 获取。

注意: context.portfolio.positions 是一个dict, key是当前持仓的symbol字符串, value 是position 对象

position 对象有如下属性:

  • asset: 持仓对应的 symbol 对象
  • amount: 持仓股数
  • cost_basis: 平均持仓成本,使用成交股数加权计算
  • last_sale_price: 最后的成交价,在日级回测中就是昨日的收盘价

示例

# 获取持仓中AAPL的股数
positions = context.portfolio.positions
amount = positions.get('AAPL').amount