Papertrading 模拟交易 API
由small_q创建,最终由small_q 被浏览 13 用户
1 模块概述
本模块提供模拟交易策略管理功能,包括策略列表查询、策略详情获取、绩效数据、交易订单、持仓信息等。支持本地/云端代码无缝切换。
主要功能:
- 获取个人策略和社区分享策略列表
- 获取策略详情对象(支持管理员特权)
- 查询策略绩效、订单、持仓、计划订单等数据
权限说明:
- 个人策略:仅创建者可访问
- 分享策略:所有用户可查看列表
- 管理员特权:特定空间管理员(拥有 community 权限)可访问该空间所有策略详情
2 API 介绍
2.1获取策略列表
方法名:papertrading.list()
功能:获取用户自己创建的模拟交易策略列表
参数:
constraints: Union[Dict[str, Any], None],非必填,查询约束条件,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 1000order_by使用 - 前缀表示降序,如 ["-created_at", "strategy_name"]include_fields用于只返回指定字段,减少数据传输量
返回字段:
id: 策略IDstrategy_name: 策略名称status: 策略状态created_at: 创建时间updated_at: 更新时间space_id: 空间IDaccount_id: 账户ID(dict格式)first_trading_day: 首个交易日benchmark_instrument: 基准代码
注意:此方法只返回用户自己创建的策略,不包含社区分享策略
2.2 获取分享策略列表
方法名:papertrading.list_shared()
功能:获取社区分享的模拟交易策略列表
参数:
space_id: Union[str, None],非必填,空间ID,默认为 Noneconstraints: Union[Dict[str, Any], None],非必填,查询约束条件,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Noneisrelative: bool,非必填,是否相对收益,默认为 Falsebenchmark: str,非必填,基准线代码,默认为 "000300.SH"page: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 20
参数说明:
space_id: 传入特定空间ID可查询该空间的分享策略,默认查询主空间isrelative:False: 返回绝对收益率True: 返回相对于 benchmark 的收益率
benchmark常用代码:000300.SH: 沪深300000905.SH: 中证500000852.SH: 中证1000000001.SH: 上证指数
constraints、order_by、include_fields: 用法同 list() 方法
返回:Dict[str, Any]
items: list,策略列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
id: 策略IDstrategy_id: 策略IDstrategy_name: 策略名称strategy_desc: 策略描述strategy_article: 策略文章labels: 策略标签datasource: 使用的数据源列表creator: 创建者IDcreated_at: 创建时间updated_at: 更新时间first_trading_day: 首个交易日trading_day: 最新交易日cumulative_return: 累计收益率annualized_return: 年化收益率max_drawdown: 最大回撤sharpe: 夏普比率win_percent: 胜率today_return: 今日收益率week_return: 近一周收益率month_return: 近一月收益率three_month_return: 近三月收益率six_month_return: 近六月收益率year_return: 近一年收益率collection_count: 收藏数is_featured: 是否精选rank: 排序值
2.3 获取策略对象
方法名:papertrading.get()
功能:获取指定策略对象,用于访问策略详情数据
参数:
strategy_id: str,必填,策略 ID
返回:Strategy 对象
权限说明:
- 策略创建者可以访问自己的策略
- 特定空间的管理员(拥有 community 权限)可以访问该空间所有策略
注意:
- 如果策略不存在或无权访问,将抛出 ValueError 异常
- 管理员权限通过 SPACE_ADMIN_PRIVILEGE_ENABLED_SPACES 配置控制
2.4 Strategy 类
类名:Strategy
功能:策略对象,封装策略基本信息并提供访问策略详情数据的方法
初始化:不能直接实例化,需通过 papertrading.get(strategy_id) 获取
属性:
strategy_info: dict,策略基本信息字典,包含:
id: 策略IDstrategy_name: 策略名称account_id: 账户ID(dict格式)space_id: 空间IDcreator: 创建者IDcreated_at: 创建时间updated_at: 更新时间first_trading_day: 首个交易日benchmark_instrument: 基准代码
方法:见下
2.4.1 获取策略绩效数据
方法名:Strategy.get_performances()
功能:获取策略的历史绩效数据
参数:
fields: Union[List[str], None],非必填,绩效字段列表,默认为 None
说明:默认返回字段包括: trading_day, today_return, max_drawdown, annualized_return, risk_indicator, win_percent, cumulative_return, benchmark, total_market_value, balance, month_return, week_return, three_month_return, six_month_return, created_at, portfolio_value
返回:list,绩效数据列表(每个元素为一个列表,对应 fields 顺序)
返回字段:
trading_day: 交易日today_return: 当日收益率cumulative_return: 累计收益率annualized_return: 年化收益率max_drawdown: 最大回撤win_percent: 胜率risk_indicator: 风险指标(dict),包含:sharpe: 夏普比率sortino: 索提诺比率calmar: 卡玛比率information_ratio: 信息比率
benchmark: 基准数据(dict或None)total_market_value: 持仓市值balance: 当前现金portfolio_value: 总资产week_return: 近一周收益率month_return: 近一月收益率three_month_return: 近三月收益率six_month_return: 近六月收益率created_at: 创建时间
2.4.2 获取交易订单
方法名:Strategy.get_orders()
功能:获取策略的交易订单记录
参数:
constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 100
返回:dict
items: list,订单列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
id: 订单IDstrategy_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: 成交数量order_status: 委托状态- 0: 未成交
- 1: 部分成交
- 2: 全部成交
- 3: 部分撤单
- 4: 全部撤单
- 5: 已拒绝
status_msg: 状态信息order_type: 委托类型(0=限价单,U=市价单)order_property: 委托属性hedge_flag: 投保标记(1=投机)order_dt: 委托时间filled_dt: 成交时间cancel_dt: 撤单时间order_key: 本地订单标识order_sysid: 交易所报单编号entrust_no: 柜台委托编号algo_order_id: 算法单号commission: 交易费用realized_pnl: 平仓盈亏
2.4.3 获取计划订单
方法名:Strategy.get_planned_orders()
功能:获取策略的计划交易订单(交易信号)
参数:
constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 100
返回:dict
items: list,计划订单列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
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: 已执行3: 已取消
status_msg: 状态描述order_params: 下单条件参数(dict)order_placed_dt: 实际发单时间order_key: 本地订单标识entrust_no: 委托号algo_order_id: 算法单号stop_loss_price: 止损价格stop_profit_price: 止盈价格created_at: 创建时间
字段说明:
original_order_qty: 策略生成的原始委托数量order_qty: 实际执行的委托数量(可能因资金、风控等原因调整)
2.4.4 获取持仓信息
方法名:Strategy.get_positions()
功能:获取策略的持仓数据
参数:
constraints: Union[Dict[str, Any], None],非必填,查询条件字典,默认为 Noneorder_by: Union[List[str], None],非必填,排序字段列表,默认为 Noneinclude_fields: Union[List[str], None],非必填,包含字段列表,默认为 Nonepage: int,非必填,页码,默认为 1size: int,非必填,每页数量,默认为 100
返回:dict
items: list,持仓列表count: int,总数量page: int,当前页码size: int,每页数量total: int,总页数
返回字段:
id: 持仓记录IDaccount_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: 持有天数created_at: 创建时间updated_at: 更新时间
字段说明:
current_qty: 当前总持仓数量available_qty: 可卖数量(股票T+1:current_qty - today_qty;期货T+0:current_qty)today_qty: 今日买入数量(T+1制度下不可卖)today_available_qty: 今日可用数量(期货可用)sum_buy_value/sum_sell_value/commission: 从开仓至今的累计值
\