BigQuant使用文档

交易引擎API介绍

由qxiao创建,最终由qxiao 被浏览 1229 用户

API接口

策略请求接口

context.order(symbol, volume, limit_price=0, order_type=OrderType.MARKET, offset=Offset.NONE)

  • 适用市场:股票、期货
  • 下单,必须指定标的、下单数量
  • param:
  • symbol: str 下单标的 000001.SZ/600000.SH/510050.SH/rb2110.SHF
  • volume: int 下单数量 大于0为买,小于0为卖
  • limit_price: float 下单价格,默认为0表示市价单
  • order_type: OrderType 委托类型
  • MARKET: 市价指令(默认)
  • LIMIT: 限价指令
  • offset: 开平方向,股票不需要指定
  • Offset.NONE: 自动决定开平方向(上期所会区分平今,内部会自动处理)
  • Offser.OPEN: 开仓
  • Offset.CLOSE: 平仓
  • Offset.CLOSETODAY: 平今
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 买入平安银行100股
    context.order('000001.SZ',100)
    # 卖出平安银行100股
    context.order('000001.SZ',-100)
    

context.order_percent(symbol, percent, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:股票
  • 按比例下单,必须指定标的、资金仓位比例
  • param:
  • symbol: str 下单标的 000001.SZ/600000.SH
  • percent: float 资金仓位比例(内部会使用 context.portfolio.portfolio_value * percent,再用当前close价格得到买卖数量)
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功否则失败

  • 代码示例

    # 买入相当于总资产10%比例的平安银行
    context.order_percent('000001.SZ',0.1)
    

context.order_value(symbol, value, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:股票
  • 按价值下单,必须指定标的、资金
  • param:
  • symbol: str 下单标的 000001.SZ/600000.SH
  • value: float 资金量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 买入10000元的平安银行
    context.order_value('000001.SZ',10000)
    

context.order_target(symbol, target, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:股票
  • 下单,必须指定标的、目标数量, 多用于清空持仓
  • param:
  • symbol: str 下单标的 000001.SZA/600000.SHA
  • target: int 目标数量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 调整平安银行为500股(可能买入或者卖出)
    context.order_target('000001.SZ',500)
    

context.order_target_percent(symbol, target_percent, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:股票
  • 按目标比例下单,必须指定标的、资金仓位比例
  • param:
  • symbol: str 下单标的 000001.SZ/600000.SH
  • target_percent: float 目标资金仓位比例
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功否则失败

  • 代码示例

    # 清仓平安银行
    context.order_target_percent('000001.SZ',0)
    

context.buy_open(symbol, volume, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:期货
  • 期货下单,买开
  • param:
  • symbol: str 下单标的 rb2105.SHF, AP2101.CZC, jd2013.DCE, IF2103.CFX
  • volume: int 下单数量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 市价开多买入3手rb1901.SHF
    context.buy_open('rb1901.SHF', 3)
    

context.sell_close(symbol, volume, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:期货
  • 期货下单,卖平,和buy_open配对使用
  • param:
  • symbol: str 下单标的
  • volume: int 下单数量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 市价平多卖出3手rb1901.SHF
    context.sell_close('rb1901.SHF', 3)
    

context.sell_open(symbol, volume, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:期货
  • 期货下单,卖开
  • param:
  • symbol: str 下单标的
  • volume: int 下单数量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 市价开空买入3手rb1901.SHF
    context.sell_open('rb1901.SHF', 3)
    

context.buy_close(symbol, volume, limit_price=0, order_type=OrderType.MARKET)

  • 适用市场:期货
  • 期货下单,买平,和sell_open配对使用
  • param:
  • symbol: str 下单标的
  • volume: int 下单数量
  • limit_price: float 下单价格
  • order_type: 同上
  • return:int 下单状态码 0:成功,否则失败

  • 代码示例

    # 市价平空买入3手rb1901.SHF
    context.buy_close('rb1901.SHF', 3)
    

context.cancel_order(order_param)

  • 适用市场:股票、期货

  • 取消订单

  • order_param: order_key or OrderData or OrderCancelReq

  • return: int 撤单状态码 0:成功,否则失败

  • 代码示例

    # 取消当前未完成订单
    for order in context.get_open_orders():
        context.cancel_order(order)
    

context.cancel_all()

  • 适用市场:股票、期货

  • 取消当前账户所有未成交订单

  • return:None

  • 代码示例

    # 取消所有未完成订单
    context.cancel_all()
    

context.subscribe(symbol)

  • 适用市场:股票、期货
  • 订阅标的的行情。tick或者tick2回测,需要在盘前处理函数中每日订阅当天需要的行情。
  • param:
  • symbol: str 订阅标的,如 000001.SZ/510050.SH/RB2105.SHF
  • 代码示例

    # 盘前处理函数中订阅rb1901.SHF的tick行情
    context.subscribe('rb1901.SHF')
    

\

数据获取相关接口

context.get_trading_account()

  • 适用市场:股票、期货

  • 获取资金账户信息,具体参考下面的介绍

  • return: TradingAccount(StockTradingAccount/FutureTradingAccount)

  • 代码示例

    # 获取账户对象
    account = context.get_trading_account()
    

context.get_position(symbol, direction=Direction.NONE, create_if_none=True)

  • 适用市场:股票、期货
  • 获取指定标的的持仓
  • param:
  • symbol: str 代码,如600000.SH/000001.SZ/rb2010.SHF/IF2012.CFX/AP2103.CZC
  • direction: Direction,持仓方向,如 Direction.LONG/SHORT,此参数只用于期货
  • create_if_none: bool 仓位不存在时是否创建新的对象
  • return:StockPosition/FuturePosition

  • 代码示例

    # 获取平安银行持仓情况
    pos = context.get_position('000001.SZ')
    

context.get_positions(symbol, direction=Direction.NONE, create_if_none=True)

  • 适用市场:股票、期货
  • 获取多个标的的持仓
  • param:
  • symbol: list[str] 代码列表,如['000001.SZ','000002.SZ']
  • direction: Direction,持仓方向,如 Direction.LONG/SHORT,此参数只用于期货
  • create_if_none: bool 仓位不存在时是否创建新的对象
  • return:StockPosition/FuturePosition

  • 代码示例

    # 获取多个标的持仓
    instruments = ['000001.SZ','000002.SZ']
    pos = context.get_positions(instruments)
    print(pos.get('000001.SZ'))
    print(pos.get('000002.SZ'))
    

context.get_account_positions()

  • 适用市场:股票、期货

  • 获取所有持仓

  • return:Dict[symbol, Position]

  • 代码示例

    # 获取账户所有持仓
    pos_all = context.get_account_positions()
    

context.get_open_orders(symbol)

  • 适用市场:股票、期货
  • 获取当前挂单,即未完全成交订单
  • param:

* symbol: str ,指定了标的时,只获取该标的所有挂单

  • return: List[OrderData]

  • 代码示例

    # 获取当前未成交的单子
    open_orders = context.get_open_orders()
    

context.get_orders(symbol)

  • 适用市场:股票、期货
  • 获取当日所有委托订单
  • param:

* symbol: str

  • return: List[OrderData]

  • 代码示例

    # 获取当日所有委托订单
    orders = context.get_orders()
    

context.get_trades(symbol)

  • 适用市场:股票、期货
  • 获取当日所有成交
  • param:

* symbol: str

  • return: List[TradeData]

  • 代码示例

    # 获取当日所有成交订单
    trades = context.get_trades()
    

context.get_dominant(product_code)

  • 适用市场:期货
  • 获取主力合约,只针对期货
  • param:
  • product_code:str 期货品种代码 or 期货代码,比如 A,RB,SR
  • return: str IF2103.CFX, rb2105.SHF

  • 代码示例

    # 打印当前主力合约
    print(context.get_dominant('RB'))
    

\

其它接口

context.rebalance_period.is_signal_date(date)

  • 适用市场:股票、期货
  • 根据调仓周期的配置判断当天是否应该下单
  • param:
  • date:datetime.date 当天日期
  • return:bool True-应该下单 False-不应该下单

  • 代码示例

    # 不到调仓日直接返回
    if not context.rebalance_period.is_signal_date(data.current_dt.date()):
        return
    

context.get_trading_day()

  • 适用市场:股票、期货

  • 获取当前交易日

  • param:无

  • return:str: YYYYmmdd

  • 代码示例

    # 获取当前交易日
    trading_day = context.get_trading_day()
    

context.get_error_msg(error_id)

  • 适用市场:股票、期货
  • 获取错误信息
  • param:
  • error_id: 错误代码
  • return:str 错误信息

  • 代码示例

    # 买入失败则打印相关信息
    rv = context.order('000001.SZ',500)
    if rv!=0:
        print("下单失败:",context.get_error_msg(rv))
    

context.write_log(content, level="info", stdout=0)

  • 适用市场:股票、期货
  • 记录日志
  • param:
  • content: str 需要记录的内容

  • level: str 日志级别 debug/info/warn/error

  • stdout: 是否打印到标准输出, 小于0不记录日志,等于0不打印日志到前端,等于1时还会打印日志到前端

  • 代码示例

    # 打印信息
    context.write_log("测试信息", level="info", stdout=1)
    

context.calc_buy_volume(symbol, price, value)

  • 适用市场:股票
  • 计算指标标的可买入数量
  • param:
  • symbol: str 证券代码

  • price: float 指定价格

  • value: float 指定金额 return: int 可买入数量

  • 代码示例

    # 计算以10.2的价格买入2000元的平安银行,能买多少股
    num = context.calc_buy_volume('000001.SZ', 10.2, 2000)
    

context.subscribe_bar(symbols, period, my_handle_bar)

订阅自定义周期回调函数。每周期(period)每个标的调用自定义函数 my_handle_bar。如果是period为1m,则可以把处理逻辑写入handle_data中,无需自定义my_handle_bar函数

  • 适用市场:股票、期货

  • symbols: list 标的列表 例如 [rb2105.SHF, HC2105.SHF]

  • period: str 时间周期。支持’1m’, ’ 5m’, ‘10m’, ‘15m’, ‘30m’, ‘60m’, ‘120m’, ‘240m’。

  • myhandle_bar: func 自定义函数 my_handle_bar(context,bar),context表示策略上下文对象,bar表示 BarData对象

  • 代码示例

    # 盘前处理函数 订阅rb1901.SHF的分钟行情
    context.subscribe_bar(['rb1901.SHF'], '1m')
    

\

回测专有接口(模拟/实盘不生效)

context.set_commission(equities_commission=None, futures_commission=None)

  • 适用市场:股票、期货
  • 设置回测费率,一般股票和期货有不同的费率模式
  • param:
  • equities_commission: PerOrder or dict like {"buy_cost": 0.0002, "sell_cost": 0.0012}
  • futures_commission: PerContract or dict like {"RB": (2, 2, 2)}
  • return:None

  • 代码示例

    # 设置股票手续费,买万三,卖出千1.3,最少5元。一般放到初始化函数里
    context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
    

context.get_commission(symbol)

  • 适用市场:期货
  • 获取回测费率
  • param:
  • symbol: str 标的代码
  • return:CommissionRateData

  • 代码示例

    # 打印当前rb1901.SHF手续费设置情况
    print(context.get_commission('rb1901.SHF'))
    

context.set_margin(symbol, margin)

  • 适用市场:期货
  • 设置回测保证金率,同时影响多头和空头
  • param:
  • symbol: str 期货品种代码,比如 RB,A,SR
  • margin: float 保证金率,比如 0.05
  • return:None

  • 代码示例

    # 设置rb1901.SHF的保证金率为10%
    context.set_margin('rb1901.SHF', 0.1)
    

context.get_margin_rate(symbol).long_margin_ratio_by_money

  • 适用市场:期货
  • 获取多头保证金率
  • param:
  • symbol: str 期货品种代码,比如 rb2201.SHF
  • return:float

  • 代码示例

    # 打印rb1901.SHF的多头保证金率
    print(context.get_margin_rate('rb1901.SHF').long_margin_ratio_by_money)
    

context.get_margin_rate(symbol).short_margin_ratio_by_money

  • 适用市场:期货
  • 获取空头保证金率,期货专用(一般多空保证金率一样,取其中一个即可)
  • param:
  • symbol: str 期货品种代码,比如 rb2201.SHF
  • return:float

  • 代码示例

    # 打印rb1901.SHF的空头保证金率
    print(context.get_margin_rate('rb1901.SHF').short_margin_ratio_by_money)
    

context.get_contract(symbol).multiplier

  • 适用市场:期货
  • 获取合约乘数
  • param:
  • symbol: str 期货合约代码,比如 rb2201.SHF
  • return:float

  • 代码示例

    # 打印rb1901.SHF的合约乘数
    print(context.get_contract('rb1901.SHF').multiplier)
    

context.get_contract(symbol).price_tick

  • 适用市场:期货
  • 获取合约最小变动价格
  • param:
  • symbol: str 期货合约代码,比如 RB2201.SHF
  • return:float

  • 代码示例

    # 打印rb1901.SHF的最小变动单位
    print(context.get_contract('rb1901.SHF').price_tick)
    

context.set_slippage_value(slippage_type, slippage_value,volume_limit)

  • 适用市场:股票、期货
  • 设置滑点和成交量比率限制
  • param:
  • slippage_type:

    SlippageType.FIXED 固定价位

    SlippageType.PERCENT 固定比率

  • slippage_value: float 滑点值

  • volume_limit: float 限制最大成交量的比率,1表示不限制

  • return:None

  • 代码示例

    # 设置滑点,买卖各1分钱。同时成交量比率不做限制。
    from bigtrader.constant import SlippageType
    context.set_slippage_value(SlippageType.FIXED, 0.01,1)
    

context.set_stock_t1(value)

  • 适用市场:股票
  • 设置股票是否是T1,默认是1
  • param:
  • value: int 如果设置成 0表示支持T0
  • return:None

  • 代码示例

    # 在初始化函数中设置为t0
    context.set_stock_t1(0)
    

context.set_enable_auto_planed_order(value)

  • 适用市场:股票、期货
  • 设置是否支持收盘时下单,此函数主要用于分钟级跨日的波段交易策略,日频回测不涉及。
  • param:
  • value: bool 如果设置成 True表示在收盘时(例如15:00)的下单在下一个开盘时成交,如果为 False,表示收盘的下单作废。
  • return:None

  • 代码示例

    # 设置支持下个开盘时成交
    context.set_enable_auto_planed_order(True)
    

\

回调函数

如下函数系统自动调用,无需手动调用。在使用BigTrader回测模块时,在相应函数中加入处理逻辑即可。

initialize(context):

策略初始化函数,只触发一次。可以在该函数中初始化一些变量,如读取配置等

  • context: 策略上下文对象

before_trading(context, data):

策略盘前交易函数,每日盘前触发一次。可以在该函数中一些启动前的准备,如订阅行情等

  • context: 策略上下文对象
  • data: BarDatas 对象(参考上述 “常用对象说明 1.8 行情访问“)

handle_tick(context, tick):

Tick快照行情通知函数,每个标的的Tick快照行情有变化时则会触发。

  • context: 策略上下文对象
  • tick: TickData对象

handle_bar(context, bar):

单个Bar行情通知函数,每个标的每个bar时间周期会触发,包括日线和分钟。

  • context: 策略上下文对象
  • bar: BarData对象

handle_data(context, data):

批量Bar行情通知函数(截面的),每个时间周期会触发,包括日线和分钟。

  • context: 策略上下文对象
  • data: BarDatas对象

handle_l2trade(context, l2trade_data):

逐笔成交行情通知函数,每笔逐笔成交都会触发,包括上海和深圳。

  • context: 策略上下文对象
  • l2trade_data: L2TradeData对象

handle_l2order(context, l2order_data):

逐笔委托行情通知函数,每笔逐笔委托都会触发,只深圳有。

  • context: 策略上下文对象
  • l2order_data: L2OrderData对象

handle_order(context, order):

委托回报通知函数,每个订单状态有变化时会触发。

  • context: 策略上下文对象
  • order: OrderData对象

handle_trade(context, trade):

成交回报通知函数,有成交时会触发。

  • context: 策略上下文对象
  • trade: TradeData对象

常见对象

交易账户相关

TradingAccount(StockTradingAccount/FutureTradingAccount)交易账户资金相关,可访问如下属性:

  • trading_day: 交易日 YYYYmmdd

  • portfolio_value: 总资产,主要是资金+持仓市值

  • positions_value: 总持仓市值

  • available: 可用资金,主要是账户资金-冻结资金

  • pre_balance: 昨日账户结算净值

  • balance: 账户资金

  • frozen_cash: 冻结资金

  • realized_pnl: 平仓盈亏

  • total_used_cash: margin + commission + frozen_cash

  • commission: 今日手续费

  • margin: 保证金占用

  • total_margin: 冻结保证金+保证金占用

  • total_frozen_margin: 冻结保证金

  • 代码示例

    # 获取账户信息并打印总资产和可用资金
    account = context.get_trading_account()
    portfolio_value = account.portfolio_value
    balance = account.balance
    print("总资产:",account.portfolio_value)
    print("可用资金:",account.available)
    

持仓数据相关

Position(StockPosition/FuturePosition)合约持仓数据, 可访问以下属性:

  • trading_day: 交易日 YYYYmmdd

  • direction: 持仓方向 Direction.LONG/SHORT

  • last_price: 最新价

  • cost_price: 持仓均价

  • current_qty/amount: 当前数量

  • avail_qty: 可用数量

  • today_qty: 今持仓

  • yd_qty: 昨持仓

  • frozen_qty: 冻结数量

  • margin: 保证金占用

  • market_value: 持仓市值

  • realized_pnl: 平仓盈亏

  • long: 多头持仓,期货专用

  • short: 空头持仓,期货专用

  • last_sale_date: 上一次交易的日期

  • 代码示例

    # 获取平安银行的持仓数据,并打印出持仓数量和当日收盘价
    pos = context.get_position('000001.SZ')
    print("持仓数量:",pos.current_qty)
    print("当日收盘价:",pos.last_price)
    

投资组合对象相关

Portfolio投资组合对象,主要为兼容zipline老框架。

  • positions_value: 持仓市值

  • portfolio_value: 总资产

  • cash: 可用资金(即TradingAccount中的available)

  • actual_cash: 实时资金(即TradingAccount中的balance)

  • positions: Dict 获取持仓字典,可通过标的获取各持仓对象

  • 代码示例

    # 打印账户总资产和可用资金
    print("账户总资产:",context.portfolio.portfolio_value)
    print("账户可用资金:",context.portfolio.cash)
    

委托数据相关

OrderData委托数据, 可访问以下属性:

  • trading_day: 交易日 YYYYmmdd

  • instrument: 合约代码,如 000001/rb2105

  • exchange: 交易所代码,如 SSE/SZSE/SHFE/CFFEX/SHFE/INE/CZCE/DCE

  • symbol: 内部合约标识,如 000001.SZ, rb2105.SHF

  • order_id: 本地委托编号(主要为本地生成)

  • order_sysid: 柜台/交易所报单编号(服务端生成)

  • bt_order_sysid: 本地唯一标识的柜台/交易所报单编号

  • direction: 买卖方向 Direction.LONG/SHORT

  • offset: 开平标志 Offset.OPEN/CLOSE/CLOSETODAY

  • order_qty: 委托数量

  • order_price: 委托限价

  • filled_qty: 成交数量

  • order_type: 委托类型 OrderType.LIMIT/MARKET

  • order_status: 委托状态 OrderStatus.NOTTRADED/ALLTRADED/CANCELLED

  • order_key: 本地订单唯一标识

  • order_time: 委托时间

  • insert_date: 委托日期

  • status_msg: 委托状态描述

  • 代码示例

    # 委托回报处理函数中,打印委托单号,委托数量,成交数量
    def bigquant_run(context, order):
        print(order.order_id)
        print(order.order_qty)
        print(order.filled_qty)
    

成交数据相关

TradeData成交数据, 可访问以下属性:

  • trading_day: 交易日 YYYYmmdd

  • instrument: 合约代码,如 000001/rb2105

  • exchange: 交易所代码,如 SSE/SZSE/SHFE/CFFEX/SHFE/INE/CZCE/DCE

  • symbol: 内部合约标识,如 000001.SZA, rb2105.SHF

  • order_id: 本地委托编号(主要为本地生成)

  • order_sysid: 柜台/交易所报单编号(服务端生成)

  • bt_order_sysid: 本地唯一标识的柜台/交易所报单编号

  • trade_id: 成交编号

  • bt_trade_id: 本地唯一标识的成交编号

  • direction: 买卖方向 Direction.LONG/SHORT

  • offset: 开平标志 Offset.OPEN/CLOSE/CLOSETODAY

  • filled_price: 成交价格

  • filled_qty: 成交数量

  • filled_money: 成交金额

  • trade_time: 成交时间

  • trade_date: 成交日期

  • order_key: 本地订单唯一标识

  • 代码示例

    # 成交回报处理函数中,打印成交单号,成交价格,成交数量
    def bigquant_run(context, trade):
        print(trade.trade_id)
        print(trade.filled_price)
        print(trade.filled_qty)
    

行情快照数据

TickData行情快照数据, 可访问以下属性:

  • trading_day: 交易日 YYYYmmdd
  • instrument: 合约代码,如 000001/rb2105
  • exchange: 交易所代码,如 SSE/SZSE/SHFE/CFFEX/SHFE/INE/CZCE/DCE
  • symbol: 内部合约标识,如 000001.SZ, rb2105.SHF
  • last_price: 最新成交价
  • volume: 当日累计成交量
  • amount: 当日累计成交金额
  • open_price: 当日开盘价
  • high_price: 当日最高价
  • low_price: 当日最低价
  • open_interest: 最新持仓量
  • bid_priceX: 买盘价格
  • bid_volumeX: 买盘数量
  • ask_priceX: 卖盘价格
  • ask_volumeX: 卖盘数量
  • pre_close: 昨收盘(股票里为调整后的价格)
  • upper_limit: 涨停价
  • lower_limit: 跌停价
  • datetime: datetime 当前日期时间
  • time: 当前更新时间 HH:MM:SS.fff
  • time_int: 当前整数时间 93520500,毫秒精度

行情数据

BarData行情数据, 用在handle_bar回调函数中,可访问以下属性:

  • datetime: datetime 当前日期时间
  • symbol: 内部合约标识,如 000001.SZ, rb2105.SHF
  • amount: 当根bar成交金额
  • close: 当根bar收盘价
  • high: 当根bar最高价
  • low: 当根bar最低价
  • open: 当根bar开盘价
  • open_interest: 最新持仓量
  • trading_day: 交易日期

行情访问

BarDatas K线行情集合对象,用在handle_data回调函数中。注意不是单个bar的 OHLCV 数据,可访问以下属性/方法:

  • current_dt: datetime 当前日期时间

  • trading_day_dt: datetime 交易日

  • current_dominant(code): 获取主力合约代码

  • get_daily_value(symbol, field): 获取最新日线数据

  • current(symbol, field): 获取此刻标的指定字段值。对股票而言字段为cn_stock_bar1d表中的字段

  • history(symbol, fields, count, frequency): 获取此刻以前的历史数据

    • symbol: 标的代码
    • fields: 单个或多个字段,如 ‘close’ 或 [‘volume’, ‘open_interest‘]。对股票而言字段为cn_stock_bar1d表中的字段
    • count: 要获取的bar的数量
    • frequency: 频率,如 ‘1d’, ‘1m’
  • 代码示例

    # 当前时间
    print(data.current_dt)
    # 平安银行当天收盘价
    print(data.current('000001.SZ','close'))
    # 平安银行当天开盘价、收盘价和成交量
    print(data.current('000001.SZ',['open','close','volume']))
    # 平安银行过去5天的开盘价和收盘价
    print(data.history('000001.SZ', ['open','close'], 5, '1d'))
    

context 策略对象属性

  • instruments:List 运行前时指定的代码列表

  • account_id: str 账户号

  • portfolio: Portfolio 账户资产组合对象,包含有当前资金和持仓

  • options: Dict 从回测模块的 ’其他输入数据’ 端口传入的数据

  • 代码示例

    print("账户总资产:",context.portfolio.portfolio_value)
    print("回测标的:",context.instruments)
    

\

常量定义说明(通过 bigtrader.constant 可 import)

Direction:买卖方向/持仓方向

  • LONG: ‘1’ 买(多)
  • SHORT: ‘1’ 卖(空)

Offset:开平标志

  • OPEN: ‘0’ 开仓
  • CLOSE: ‘1’ 平仓
  • CLOSETODAY: ‘2’ 平今

OrderType:委托类型

  • LIMIT: 限价
  • MARKET: 市价

OrderStatus:委托状态

  • NOTTRADED: 0 未成交
  • PARTTRADED: 1 部分成交
  • ALLTRADED: 2 全部成交
  • PARTCANCELLED: 3 部分撤单
  • CANCELLED: 4 全部撤单
  • REJECTED: 5 拒单
  • UNKNOWN: 6未知

Frequency:频率

  • DAILY: 日级别
  • MINUTE: 分钟级别
  • TICK: Tick级别
  • TICK2: Tick2级别

AdjustType:复权类型

  • NONE: 不复权
  • PRE: 前复权
  • POST: 后复权

Product:产品类别

  • NONE: 未知
  • EQUITY: 股票
  • FUND: 基金
  • FUTURE: 期货
  • OPTION: 期权
  • INDEX: 指数

使用例子:

# 以市价买入平安银行300股
from bigtrader.constant import OrderType
context.order('000001.SZ',300,order_type=OrderType.MARKET)

\

标签

API交易
评论
  • 请问想从行情中读取,标的池的全部上一分钟行情,保存在dataframe中,该怎么做?
  • subscribe函数订阅完了,该如何使用?
{link}