BigQuant终端本地SDK使用文档
由qxiao创建,最终由bqadm 被浏览 156 用户
本文件提供 BigQuant Python API 的使用说明,包括用户管理、策略运行、策略查询等功能。
安装包
首先需要手动下载并安装如下的 wheel 包
👉:https://bigquant.com/cdnuploads/wheel/bigquant-0.1.0.post102+g48d7956-py3-none-any.whl
或直接使用如下代码进行安装:
pip3 install https://bigquant.com/cdnuploads/wheel/bigquant-0.1.0.post102+g48d7956-py3-none-any.whl
前置代码(Python)
from bigquant.api import strategy, user, run
1 user 模块:用户管理
1.1 用户登录
函数:user.login(username=None, password=None, keypair=None, current_space=default)
\n功能:用户名/密码或 AK/SK 登录。\n参数:
username
: str,与 keypair 二选一,需与 password 一起使用password
: str,与 keypair 二选一,需与 username 一起使用keypair
: str,与 username+password 二选一,格式 <公钥>.<私钥>current_space
: str,非必填,工作空间 ID\n返回值:dict(包含用户信息,如用户ID、token 等)\n示例:
login_info = user.login(username='abc123', password='123456')
print(login_info)
login_info = user.login(
keypair='abcdabcdabcd.abcdefg...',
current_space='00000000-0000-0000-0000-000000000000'
)
print(login_info)
1.2 用户登出
函数:user.logout()
\n功能:清除本地会话和登录凭证\n参数:无\n示例:
user.logout()
1.3 查询当前用户信息
函数:user.whoami()
\n功能:获取当前用户信息\n返回值:dict(包含用户名、用户ID、工作空间等)\n示例:
current_user_info = user.whoami()
print(current_user_info)
2 run 模块:策略运行
2.1 远程运行脚本\n函数:run.execute(file_path, current_space=default)
\n功能:将本地脚本提交到平台远程执行\n参数:
file_path
: str,必填,.py 或 .ipynb 文件路径current_space
: str,非必填,工作空间 ID\n返回值:dict(包含运行任务信息,如 run_id)\n示例:
run_result = run.execute('tests/test.py')
print(run_result)
run_result_with_kernel = run.execute(file_path, strategy_id)
print(run_result_with_kernel)
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
file_path = input('请输入要运行的.py文件或.ipynb文件的相对路径:')
# 运行一个Python脚本
res = run.execute(file_path)
print(res)
# 指定工作空间运行
res = run.execute(file_path, '00000000-0000-0000-0000-000000000000')
print(res)
3 strategy 模块:策略查询
3.1 获取策略列表\n函数:strategy.get_strategy(page=1, size=10)
\n功能:分页获取策略列表\n参数:
page
: int,非必填,页码size
: int,非必填,页容量\n返回值:dict(data 为策略列表,含分页信息)\n示例:
my_strategies = strategy.get_strategy()
print(my_strategies)
my_strategies_page2 = strategy.get_strategy(page=2, size=3)
print(my_strategies_page2)
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
strategy_id = input('请输入策略id:')
# 获取策略列表(默认首页)
res = strategy.get_strategy()
print(res)
# 获取第二页,每页3条
res = strategy.get_strategy(page=2, size=3)
print(res)
3.2 获取持仓详情\n函数:strategy.get_position(strategy_id=None, account_id=None, page=1, size=10, df=False)
\n功能:根据策略 ID 或账户 ID 获取持仓详情\n参数:
strategy_id
: str,与 account_id 二选一account_id
: str,与 strategy_id 二选一page
: int,非必填size
: int,非必填df
: bool,非必填,是否返回 DataFrame\n返回值:df
=False:dictdf
=True:pandas.DataFrame\n示例:
positions_json = strategy.get_position(strategy_id='abcd1234', page=2, size=5)
print(positions_json)
positions_df = strategy.get_position(strategy_id='abcd1234', df=True)
print(positions_df)
返回字段:
account_type
: 账户类型account_id
: 账户IDtrading_day
: 交易日exchange
: 交易所instrument
: 代码name
: 代码名称posi_direction
: 持仓方向(1=多头, 2=空头)current_qty
: 持仓数量available_qty
: 可用数量today_qty
: 今日持仓数量today_available_qty
: 今日可用数量cost_price
: 持仓成本价格last_price
: 持仓最新价market_value
: 持仓市值margin
: 保证金占用position_pnl
: 盈亏金额hedge_flag
: 投保标记(1=投机)sum_buy_value
: 累计买入金额sum_sell_value
: 累计卖出金额commission
: 累计交易费用dividend_qty
: 当日分红数量dividend_cash
: 当日分红金额open_date
: 开仓日期open_price
: 开仓价格settlement_price
: 结算价profit_ratio
: 盈亏比率initial_qty
: 日初持仓数量hold_days
: 持有天数
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
strategy_id = input('请输入策略id:')
# 使用策略ID返回JSON格式
res = strategy.get_position(strategy_id=strategy_id)
print(res)
# 返回DataFrame格式
positions_df = strategy.get_position(strategy_id=strategy_id, df=True)
print(positions_df)
3.3 获取交易详情\n函数:strategy.get_order(strategy_id=None, account_id=None, daily_id=None, trading_day=None, page=1, size=10, df=False)
\n功能:获取交易记录,可按策略ID、账户ID或实时策略ID查询
参数:
strategy_id
: str,与 account_id、daily_id 三者择一account_id
: str,与 strategy_id、daily_id 三者择一daily_id
: str,实时策略ID,与其他两者择一trading_day
: str,非必填,格式支持 yyyyMMdd 或 yyyy-MM-dd(实时策略)page
: int,非必填size
: int,非必填df
: bool,非必填,是否返回 DataFrame
返回值:dict 或 DataFrame
示例:
orders_json = strategy.get_order(strategy_id=strategy_id)
print("策略ID查询结果(JSON格式):")
print(orders_json)
orders_page = strategy.get_order(strategy_id=strategy_id, page=1, size=5)
print("\n策略ID分页查询结果:")
print(orders_page)
orders_df = strategy.get_order(strategy_id=strategy_id, df=True)
print("\n策略ID查询结果(DataFrame格式):")
print(orders_df)
rt_orders_today = strategy.get_order(daily_id=daily_id)
print("\n实时策略今日交易查询结果:")
print(rt_orders_today)
rt_orders_on_day = strategy.get_order(daily_id=daily_id, trading_day='20250814')
print("\n实时策略指定日期交易查询结果:")
print(rt_orders_on_day)
realtime_orders_df = strategy.get_order(daily_id=daily_id, df=True)
print("\n实时策略查询结果(DataFrame格式):")
print(realtime_orders_df)
\n返回字段:
strategy_id
: 策略IDaccount_type
: 账户类型account_id
: 账户IDtrading_day
: 交易日exchange
: 交易所instrument
: 代码name
: 代码名称direction
: 买卖方向(1=买入, 2=卖出)offset_flag
: 开平标志(0=开仓, 1=平仓, 2=平今)order_qty
: 委托数量order_price
: 委托价格average_price
: 成交均价filled_qty
: 成交数量filled_dt
: 最新成交时间cancel_dt
: 撤单时间order_status
: 委托状态(0=未成交, 1=部分成交, 2=全部成交, ...)status_msg
: 状态信息order_type
: 委托类型(0=限价, U=市价)order_property
: 委托属性hedge_flag
: 投保标记(1=投机)order_dt
: 委托时间order_key
: 本地订单标识order_sysid
: 交易所报单编号entrust_no
: 柜台委托编号algo_order_id
: 算法单号commission
: 交易费用realized_pnl
: 平仓盈亏
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
strategy_id = input('请输入普通策略id:')
daily_id = input('请输入实时策略id:')
res = strategy.get_order(strategy_id=strategy_id)
print(res)
orders_df = strategy.get_order(strategy_id=strategy_id, df=True)
print(orders_df)
res_today = strategy.get_order(daily_id=daily_id)
print("实时策略今日交易查询结果:")
print(res_today)
res_specific = strategy.get_order(daily_id=daily_id, trading_day='20250814')
print("\n实时策略指定日期交易查询结果:")
print(res_specific)
realtime_orders_df = strategy.get_order(daily_id=daily_id, df=True)
print("\n实时策略查询结果(DataFrame格式):")
print(realtime_orders_df)
3.4 获取计划交易详情\n函数:strategy.get_planned_order(strategy_id=None, account_id=None, trading_day=Today, page=1, size=10, df=False)
\n功能:根据策略或账户ID获取指定交易日的计划交易
参数:
strategy_id
: str,与 account_id 二选一account_id
: str,与 strategy_id 二选一trading_day
: str,非必填,格式 yyyy-MM-dd,默认今天page
: int,非必填size
: int,非必填df
: bool,非必填,是否返回 DataFrame
返回值:
- df=False:dict(包含计划交易列表及分页信息)
- df=True:DataFrame
示例:
planned_orders_today = strategy.get_planned_order(strategy_id='abcd1234')
print("今日计划交易查询结果:")
print(planned_orders_today)
planned_orders_specific_day = strategy.get_planned_order(strategy_id='abcd1234', trading_day='2025-07-11', page=2, size=4)
print("\n指定日期计划交易查询结果:")
print(planned_orders_specific_day)
planned_orders_df = strategy.get_planned_order(strategy_id='abcd1234', df=True)
print("\n计划交易查询结果(DataFrame格式):")
print(planned_orders_df)
\n返回字段:
planned_order_id
: 计划订单IDstrategy_id
: 策略IDaccount_type
: 账户类型account_id
: 账户IDtrading_day
: 交易日order_dt
: 待下单时间exchange
: 交易所instrument
: 代码name
: 代码名称direction
: 买卖方向(1=买入, 2=卖出)offset_flag
: 开平标志(0=开仓, 1=平仓, 2=平今)original_order_qty
: 原始委托数量order_qty
: 委托数量order_price
: 委托价格order_type
: 委托类型(0=限价, U=市价)order_status
: 委托状态(0=未成交, 1=部分成交, 2=全部成交, ...)status_msg
: 状态描述order_params
: 下单条件参数order_placed_dt
: 实际发单时间order_key
: 本地订单标识entrust_no
: 委托号algo_order_id
: 算法单号stop_loss_price
: 止损价格stop_profit_price
: 止盈价格created_at
: 创建时间
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
strategy_id = input('请输入策略id:')
res_today = strategy.get_planned_order(strategy_id=strategy_id)
res_specific = strategy.get_planned_order(strategy_id=strategy_id, trading_day='2025-07-11', page=1, size=4)
planned_orders_df = strategy.get_planned_order(strategy_id=strategy_id, df=True)
print(res_today, res_specific, planned_orders_df)
3.5 获取策略绩效数据\n函数:strategy.get_performance(strategy_id)
\n功能:获取策略绩效指标
参数:
strategy_id
: str,必填
返回值:dict
示例:
perf = strategy.get_performance(strategy_id='abcd1234')
print(perf)
返回字段:
strategy_id
: 策略IDaccount_type
: 账户类型account_id
: 账户IDtrading_day
: 交易日trading_day_index
: 累计交易日performance_type
: 绩效类型today_return
: 当日收益率cumulative_return
: 累计收益率annualized_return
: 年化收益率max_drawdown
: 最大回撤total_market_value
: 持仓市值total_margin
: 保证金占用balance
: 当前现金portfolio_value
: 总资产max_portfolio_value
: 最大资产benchmark
: 基准数据risk_indicator
: 风险指标today_sum_buy_value
: 今日总买入金额today_sum_sell_value
: 今日总卖出金额today_commission
: 今日交易费用total_buy_value
: 累计买入金额total_sell_value
: 累计卖出金额total_commission
: 累计交易费用grade
: 策略分数ten_day_return
: 近十日收益率week_return
: 近一周收益率month_return
: 近一月收益率three_month_return
: 近三月收益率six_month_return
: 近六月收益率year_return
: 近一年收益率total_close_count
: 累计平仓次数total_profit_count
: 累计盈利次数total_profit_value
: 累计盈利金额total_loss_value
: 累计亏损金额pnl_ratio
: 盈亏比率win_percent
: 胜率premium
: 权利金收支today_realized_pnl
: 当日平仓盈亏
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
strategy_id = input('请输入策略id:')
res = strategy.get_performance(strategy_id=strategy_id)
print(res)
3.6 获取实时成交详情(实时策略)
函数:strategy.get_success(daily_id, trading_day=None, df=False)
\n功能:根据实时策略ID查询成交明细,可指定交易日
参数:
daily_id
: str,必填trading_day
: str,非必填,格式支持 yyyyMMdd 或 yyyy-MM-dddf
: bool,非必填,是否返回 DataFrame
返回值:dict 或 DataFrame
示例:
rt_trades_today = strategy.get_success(daily_id=daily_id)
print("实时策略今日成交查询结果:")
print(rt_trades_today)
rt_trades_on_day = strategy.get_success(daily_id=daily_id, trading_day='2025-08-14')
print("\n实时策略指定日期成交查询结果:")
print(rt_trades_on_day)
rt_trades_df = strategy.get_success(daily_id=daily_id, df=True)
print("\n实时策略成交查询结果(DataFrame格式):")
print(rt_trades_df)
返回字段:
strategy_id
:策略IDaccount_type
:账户类型account_id
:账户IDtrading_day
:交易日exchange
:交易所instrument
:代码name
:代码名称direction
:买卖方向(1表示买入,2表示卖出)offset_flag
:开平标志(0表示开仓,1表示平仓,2表示平今)filled_qty
:成交数量filled_price
:成交价格filled_money
:成交金额trade_type
:成交类型hedge_flag
:投保标记trade_dt
:成交时间trade_id
:成交编号order_key
:本地订单标识order_sysid
:交易所报单编号entrust_no
:柜台委托编号algo_order_id
:算法单(母单)号commission
:交易费用realized_pnl
:平仓盈亏
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
daily_id = input('请输入实时策略id:')
res_today = strategy.get_success(daily_id=daily_id)
res_specific = strategy.get_success(daily_id=daily_id, trading_day='2025-08-14')
res_df = strategy.get_success(daily_id=daily_id, df=True)
print(res_today, res_specific, res_df)
3.7 查看实时策略运行日志(实时策略)
函数:strategy.get_log(daily_id, df=False)\n功能:根据实时策略ID查询成交明细,可指定交易日
参数:
daily_id
: str,必填df
: bool,非必填,是否返回 DataFrame
返回值:dict
示例
# 使用实时策略ID查询日志流,用Ctrl+C退出后,返回DataFrame格式的历史日志
res = strategy.get_log(daily_id=daily_id)
print(res)
# 使用实时策略ID查询日志流,用Ctrl+C退出后,返回DataFrame格式的历史日志
logs_df = strategy.get_log(daily_id=daily_id, df=True)
print(logs_df)
运行示例(可直接复制运行):
from bigquant.api import user, strategy, run
# 登录(任选其一)
# 方式一:使用 AK/SK
keypair = input('请输入你的公钥.私钥:')
user.login(keypair=keypair)
# 方式二:使用用户名密码
# username = input("请输入用户名: ")
# password = input("请输入密码: ")
# user.login(username=username, password=password)
daily_id = input('请输入实时策略id:')
# 查看实时策略的日志(流式输出,按Ctrl+C结束)
res = strategy.get_log(daily_id=daily_id)
print(res)
# 查看实时策略的日志(流式输出,按Ctrl+C结束),并在结束后自动按dataFrame格式打印历史日志
# logs_df = strategy.get_log(daily_id=daily_id, df=True)
# print(logs_df)
\