交易引擎API介绍(旧)

此文档已经过期。最新文档见:BigTrader API 参考


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)
    
    # 获取持仓市值
    print("持仓市值: ", pos.get_market_value())

投资组合对象相关

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)