Context 对象
context 对象有两个作用:
-
存储策略运行中的状态信息
- context.portfolio 中存储了Portfolio 对象 , 里面是整个投资组合的信息
- context.portfolio.positions 中存储了目前持仓的信息, 详见Position 对象
- context.leverage 中存储了实时的杠杆
- context.max_leverage 中存储了当前的最大杠杆限制
-
存储用户希望再函数间传递的变量。在函数间传递的变量都必须通过 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: 最后的成交价,在日级回测中就是昨日的收盘价
示例
positions = context.portfolio.positions
amount = positions.get('AAPL').amount