平台入门与运行机制
第一次接触 PTrade,先弄清「它是什么、怎么跑、一个交易日里引擎在什么时间点做什么」。本章帮你建立全局认知,后面写策略才不会在时机上踩坑。
PTrade 是什么
PTrade 是券商提供的量化交易平台,策略用 Python 编写,引擎按事件驱动自动执行:你只需实现几个约定名称的函数(如 initialize、handle_data),引擎会在对应的时间点回调它们。相比手动盯盘下单,PTrade 把「信号计算 → 下单 → 持仓管理」全自动化了。
它最擅长的是 A 股场景:普通股票、ETF、可转债、国债逆回购、融资融券、IPO 打新都有现成 API;同时也支持中金所股指和国债期货的投机回测与交易。
三大模块
PTrade 客户端把工作流分成三个独立模块,策略一般按顺序流转:
| 模块 | 作用 | 关键能力 |
|---|---|---|
| 研究 | 在线 Jupyter,探索数据、验证想法 | 自由调用 get_history / get_fundamentals,无下单风险 |
| 回测 | 用历史数据驱动策略,评估表现 | 收益曲线、评价指标、逐笔日志;可设佣金/滑点/底仓 |
| 交易 | 接入实盘账户自动运行 | 日/分钟/tick 三档频率,直接报单到柜台 |
一份策略代码同时兼容回测和交易。用
is_trade()判断当前场景:回测返回False,交易返回True,据此可以关闭回测专属的设置函数或切换数据源。
运行频率
频率决定 handle_data 被回调的节奏,新建回测或交易时选定:
| 频率 | 触发周期 | 可用场景 | 典型用途 |
|---|---|---|---|
| 日线(daily) | 每个交易日一次 | 回测 + 交易 | 低频选股、月度调仓 |
| 分钟(minute) | 每根分钟 K 线结束 | 回测 + 交易 | 趋势跟踪、日内择时 |
| tick | 每 3 秒一次 | 仅交易 | 抢涨停、做 T、套利 |
- 日线回测在每日 15:00 触发;日线交易默认尾盘 14:50。
- 分钟级别在每根分钟 K 线收盘后触发,回测覆盖 9:31
11:30、13:0115:00。 - tick 级别通过
tick_data或run_interval实现,运行区间 9:30~14:59,最小 3 秒。
一个交易日的时间线
PTrade 引擎在每个交易日按固定节奏执行事件函数,理解这条时间线是写对策略的基础:
| 时间 | 事件 | 做什么 |
|---|---|---|
| 盘前(回测 8:30 / 交易 9:10) | before_trading_start | 初始化日内变量、获取昨日数据、更新股票池 |
| 9:30~15:00 | handle_data / run_daily / run_interval / tick_data | 盘中信号计算与下单 |
| 15:30 | after_trading_end | 盘后日志、对账、保存数据 |
before_trading_start在交易场景中若 9:10 前启动会因行情未更新取到脏数据,所以实时行情查询尽量放在 9:10 之后或handle_data中。after_trading_end执行时机由券商配置决定,一般 15:30,此时已收盘、适合做统计和落盘。- 非交易日
handle_data不会触发。
业务类型与品种
PTrade 按业务类型区分策略,不同类型可用的 API 不同:
- 股票(stock):普通买卖(单位:股)、可转债(单位:张,T+0)、ETF/LOF、国债逆回购、盘后固定价委托。
- 融资融券(rzrq):担保品买卖、融资买入、融券卖出、卖券还款、买券还券等。
- 期货(future):投机类型开平仓(单位:手,T+0)。
用 get_business_type() 可在代码里拿到当前业务类型(返回 'stock' / 'rzrq' / 'future'),据此分支调用不同 API。
品种代码与价格精度
| 市场 | 代码尾缀 | 示例 |
|---|---|---|
| 上海 | .SS(全称 XSHG) | 600570.SS |
| 深圳 | .SZ(全称 XSHE) | 000001.SZ |
| 指数 | .XBHS | 000300.SS |
| 中金所期货 | .CCFX | IF2312.CCFX |
下单时注意价格精度,否则委托会被柜台拒绝:股票 0.01、可转债/ETF/LOF 0.001、国债逆回购 0.005、股指期货 0.2、国债期货 0.005。
小结
PTrade 用 Python 写策略、事件驱动执行;研究→回测→交易三模块逐级落地;日/分钟/tick 三档频率对应不同节奏;一个交易日按盘前→盘中→盘后的事件链推进。理解了这些,下一步就是把策略的「骨架」搭起来:策略结构与事件。