本文档收集了使用 Ptrade API 过程中的常见问题和解决方案,旨在帮助您快速解决疑问。
A: PTrade 客户端在本地运行,但量化模块(包括策略执行、回测等)采用云端部署。客户端通过 HTTP/HTTPS 协议与云服务器连接。
A: 客户策略部署在券商服务器,策略文件会进行加密存储。系统利用 Docker 容器技术隔离多账户的运行空间,有效分配各用户的运行环境,保证策略运行环境与资源使用的独立性。
A: 目前仅支持 Windows 操作系统,暂不支持 Mac。
A: 云纪网络提供的仿真环境目前免费使用,包括所有数据、回测及模拟交易资源。若在券商部署的环境中使用,具体收费策略以券商发布的使用条件为准。
A: PTrade 量化平台目前仅支持 Python 语言,Python 版本为 3.5.2。
A: 在研究环境中输入 !pip list 即可查询到目前 PTrade 所支持的所有三方库及其版本。用户暂不支持自主更新三方库。
A:
- 自有包: 策略中不支持
import自有包,也不支持跨策略调用函数。一个策略的逻辑需在单个文件中实现。 - 数据库: 出于合规要求,不支持直接连接本地数据库。但可以在研究环境上传数据库文件(如
.db),通过sqlite等库进行读写操作。
A: 在研究、回测、交易模块中,均可调用2005年以来的历史财务数据及A股、可转债、指数等品种的历史行情数据(分钟、日线、周线)。交易场景还额外支持 tick 级别的行情快照数据。
A:
- 历史行情: 使用
get_history()函数。 - 实时行情: 在
handle_data中通过data参数获取,或使用get_snapshot()获取更详细的快照。
A: get_history 支持不复权、前复权、后复权、动态前复权四种模式。但请注意,回测引擎撮合的价格为不复权价格,进行策略逻辑判断时可能需要手动处理复权。
A: 云纪网络提供的仿真环境不提供 Level-2 数据。券商环境是否提供,由所在券商决定。
A: 研究环境的根目录为 /home/fly/notebook/,您可以通过 get_research_path() 接口获取此路径。在回测和交易中,均可读写此路径下的文件,从而实现数据持久化。
A: 不可以。由于平台为云端部署,策略无法直接与您的本地文件系统进行交互。
A:
- 手动上传/下载: 单个文件大小限制为 50M。
- 定时上传: 支持从本地自动上传文件至研究环境,但有上传次数限制(由券商配置),且单个文件大小同样限制为 50M。此功能不适用于高频数据传输场景。
- 文件夹: 暂不支持文件夹上传,文件需要逐个上传。
A:
- 研究环境: 侧重于数据分析、算法建模、代码调试等,类似一个远程的 Jupyter Notebook,无法调用交易相关函数。
- 回测环境: 用于验证完整的交易策略,包含信号生成、下单、风控等环节,更贴近真实交易。
A:
- 速度影响:
get_fundamentals等部分接口为在线调用,受网络影响较大,应尽量减少调用频次。 - 优化建议: 在分钟级别策略中,若需使用日线数据,建议在
before_trading_start中计算一次并存入全局变量g,避免在handle_data中重复获取。
A: 回测提供两种撮合模式,通过 set_limit_mode() 接口控制:
- 按成交量比例撮合: 较为真实地反映流动性对策略的影响。
- 无限制撮合: 不受成交量限制,适合低频或基本面策略。
A:
- 周期: 支持分钟和日线周期。
- 调试: 支持分步调试,可进行调用堆栈查询、变量监视等。
- 性能分析: 可分析代码中各语句的触发次数和耗时,帮助优化性能。
- 并发数: 默认支持同时进行 5 个回测。
- 离线: 不支持离线回测,回测期间客户端必须保持开启。
A: 在回测记录列表中,找到目标记录,点击“操作”栏中的“详情”按钮即可查看当时的回测代码。
A: 平台支持策略的加密上传和下载。下载的策略为加密后的 .zip 文件,可上传至其他账户进行模拟交易。上传后的策略名称不可修改,且只能用于交易,不能再次回测。
A: 两者在数据获取机制上一致,主要区别在于成交撮合机制。模拟交易使用模拟撮合,实盘交易则连接真实柜台。
A: 可以。交易在云端服务器上运行,客户端关闭或掉线不影响策略的正常执行。
A: 不是。所有运行的模拟或实盘交易都共享同一个账户,资金和持仓无法隔离,暂不支持子账户系统。
A:
- 启动时:
initialize首先执行。 - 盘前:
before_trading_start在开盘前执行。 - 盘中:
handle_data,tick_data,run_interval是独立的线程,理论上没有固定的先后顺序。如果逻辑上有依赖,建议在策略中设置状态变量来控制执行顺序。
A:
- 行情数据异常: 对获取的实时行情和历史K线进行健壮性检查(如空值判断、长度校验)。
- 财务数据获取失败:
get_fundamentals等接口为在线调用,建议加入重试机制。 - 服务器环境异常: 对于需要保持状态的策略,建议进行持久化处理,以便在策略重启后能恢复运行状态。
A: 理论上是 6 秒同步一次。在编写策略时,需要考虑此延迟,避免因数据未及时更新导致重复下单或逻辑判断错误。
A: 两者都可实现 tick 级别的逻辑。tick_data 固定为 3 秒触发一次,而 run_interval 的最小间隔也是 3 秒,但可以自定义设置更长的间隔。两者数据源均为行情快照,可根据需求任选其一。
A:
- 价格: 限价单若不传入
limit_price,会默认以最新价报单。若此时行情获取失败,将导致下单失败。 - 数量: 委托数量必须为整数,否则下单失败。
- 集合竞价: 已支持,可参考相关示例。
- 隔夜单: 交易日 15:00 后下的订单将作为隔夜单,在次日 9:15 报送至柜台。
- 性能: 批量委托性能较高,实测 300 笔委托耗时约 2 秒。
A:
- 查询:
get_orders()可获取当前策略的所有订单信息;get_all_orders()可获取账户当日全部订单(包括手动下单)。 - 撤单:
cancel_order()可撤销指定订单;结合get_all_orders()和cancel_order_ex()可以撤销手动委托单。 - 成交回报:
on_trade_response接口可用于接收成交回报的主动推送。
如果以上问题无法解决您的问题,请: