Skip to content

Latest commit

 

History

History
146 lines (105 loc) · 8.28 KB

File metadata and controls

146 lines (105 loc) · 8.28 KB

常见问题

本文档收集了使用 Ptrade API 过程中的常见问题和解决方案,旨在帮助您快速解决疑问。

平台与环境

Q: Ptrade 是如何部署的?客户端和策略运行在哪里?

A: PTrade 客户端在本地运行,但量化模块(包括策略执行、回测等)采用云端部署。客户端通过 HTTP/HTTPS 协议与云服务器连接。

Q: 策略的安全性如何保障?

A: 客户策略部署在券商服务器,策略文件会进行加密存储。系统利用 Docker 容器技术隔离多账户的运行空间,有效分配各用户的运行环境,保证策略运行环境与资源使用的独立性。

Q: Mac 电脑是否支持?

A: 目前仅支持 Windows 操作系统,暂不支持 Mac。

Q: 使用 Ptrade 需要付费吗?

A: 云纪网络提供的仿真环境目前免费使用,包括所有数据、回测及模拟交易资源。若在券商部署的环境中使用,具体收费策略以券商发布的使用条件为准。

Q: 平台支持什么编程语言和版本?

A: PTrade 量化平台目前仅支持 Python 语言,Python 版本为 3.5.2。

Q: 支持哪些第三方库?如何查看?

A: 在研究环境中输入 !pip list 即可查询到目前 PTrade 所支持的所有三方库及其版本。用户暂不支持自主更新三方库。

Q: 是否可以调用自有包或连接自己的数据库?

A:

  • 自有包: 策略中不支持 import 自有包,也不支持跨策略调用函数。一个策略的逻辑需在单个文件中实现。
  • 数据库: 出于合规要求,不支持直接连接本地数据库。但可以在研究环境上传数据库文件(如 .db),通过 sqlite 等库进行读写操作。

数据相关

Q: 平台提供哪些数据?

A: 在研究、回测、交易模块中,均可调用2005年以来的历史财务数据及A股、可转债、指数等品种的历史行情数据(分钟、日线、周线)。交易场景还额外支持 tick 级别的行情快照数据。

Q: 如何获取历史和实时行情?

A:

  • 历史行情: 使用 get_history() 函数。
  • 实时行情: 在 handle_data 中通过 data 参数获取,或使用 get_snapshot() 获取更详细的快照。

Q: 行情数据是否复权?

A: get_history 支持不复权、前复权、后复权、动态前复权四种模式。但请注意,回测引擎撮合的价格为不复权价格,进行策略逻辑判断时可能需要手动处理复权。

Q: 是否提供 Level-2 数据?

A: 云纪网络提供的仿真环境不提供 Level-2 数据。券商环境是否提供,由所在券商决定。

Q: 如何在策略中进行文件读写?

A: 研究环境的根目录为 /home/fly/notebook/,您可以通过 get_research_path() 接口获取此路径。在回测和交易中,均可读写此路径下的文件,从而实现数据持久化。

Q: 策略可以访问本地文件吗?

A: 不可以。由于平台为云端部署,策略无法直接与您的本地文件系统进行交互。

Q: 文件上传下载有什么限制?

A:

  • 手动上传/下载: 单个文件大小限制为 50M。
  • 定时上传: 支持从本地自动上传文件至研究环境,但有上传次数限制(由券商配置),且单个文件大小同样限制为 50M。此功能不适用于高频数据传输场景。
  • 文件夹: 暂不支持文件夹上传,文件需要逐个上传。

回测相关

Q: 回测和研究有什么区别?

A:

  • 研究环境: 侧重于数据分析、算法建模、代码调试等,类似一个远程的 Jupyter Notebook,无法调用交易相关函数。
  • 回测环境: 用于验证完整的交易策略,包含信号生成、下单、风控等环节,更贴近真实交易。

Q: 回测的性能如何?怎样提高速度?

A:

  • 速度影响: get_fundamentals 等部分接口为在线调用,受网络影响较大,应尽量减少调用频次。
  • 优化建议: 在分钟级别策略中,若需使用日线数据,建议在 before_trading_start 中计算一次并存入全局变量 g,避免在 handle_data 中重复获取。

Q: 回测撮合机制是怎样的?

A: 回测提供两种撮合模式,通过 set_limit_mode() 接口控制:

  1. 按成交量比例撮合: 较为真实地反映流动性对策略的影响。
  2. 无限制撮合: 不受成交量限制,适合低频或基本面策略。

Q: 回测支持哪些功能?

A:

  • 周期: 支持分钟和日线周期。
  • 调试: 支持分步调试,可进行调用堆栈查询、变量监视等。
  • 性能分析: 可分析代码中各语句的触发次数和耗时,帮助优化性能。
  • 并发数: 默认支持同时进行 5 个回测。
  • 离线: 不支持离线回测,回测期间客户端必须保持开启。

Q: 如何获取历史回测的代码?

A: 在回测记录列表中,找到目标记录,点击“操作”栏中的“详情”按钮即可查看当时的回测代码。

Q: 如何安全地分享或迁移策略?

A: 平台支持策略的加密上传和下载。下载的策略为加密后的 .zip 文件,可上传至其他账户进行模拟交易。上传后的策略名称不可修改,且只能用于交易,不能再次回测。


交易相关

Q: 模拟交易和实盘交易有什么区别?

A: 两者在数据获取机制上一致,主要区别在于成交撮合机制。模拟交易使用模拟撮合,实盘交易则连接真实柜台。

Q: 交易过程客户端可以离线吗?

A: 可以。交易在云端服务器上运行,客户端关闭或掉线不影响策略的正常执行。

Q: 账户资金和持仓是隔离的吗?

A: 不是。所有运行的模拟或实盘交易都共享同一个账户,资金和持仓无法隔离,暂不支持子账户系统。

Q: 策略中的 initialize, before_trading_start, handle_data 等模块的运行顺序是怎样的?

A:

  • 启动时: initialize 首先执行。
  • 盘前: before_trading_start 在开盘前执行。
  • 盘中: handle_data, tick_data, run_interval 是独立的线程,理论上没有固定的先后顺序。如果逻辑上有依赖,建议在策略中设置状态变量来控制执行顺序。

Q: 如何保证交易的稳定性?

A:

  1. 行情数据异常: 对获取的实时行情和历史K线进行健壮性检查(如空值判断、长度校验)。
  2. 财务数据获取失败: get_fundamentals 等接口为在线调用,建议加入重试机制。
  3. 服务器环境异常: 对于需要保持状态的策略,建议进行持久化处理,以便在策略重启后能恢复运行状态。

Q: 账户数据(资金、持仓、订单)的更新频率是多少?

A: 理论上是 6 秒同步一次。在编写策略时,需要考虑此延迟,避免因数据未及时更新导致重复下单或逻辑判断错误。

Q: tick_datarun_interval 有什么区别?

A: 两者都可实现 tick 级别的逻辑。tick_data 固定为 3 秒触发一次,而 run_interval 的最小间隔也是 3 秒,但可以自定义设置更长的间隔。两者数据源均为行情快照,可根据需求任选其一。

Q: 委托下单有哪些注意事项?

A:

  • 价格: 限价单若不传入 limit_price,会默认以最新价报单。若此时行情获取失败,将导致下单失败。
  • 数量: 委托数量必须为整数,否则下单失败。
  • 集合竞价: 已支持,可参考相关示例。
  • 隔夜单: 交易日 15:00 后下的订单将作为隔夜单,在次日 9:15 报送至柜台。
  • 性能: 批量委托性能较高,实测 300 笔委托耗时约 2 秒。

Q: 如何监控和管理订单?

A:

  • 查询: get_orders() 可获取当前策略的所有订单信息;get_all_orders() 可获取账户当日全部订单(包括手动下单)。
  • 撤单: cancel_order() 可撤销指定订单;结合 get_all_orders()cancel_order_ex() 可以撤销手动委托单。
  • 成交回报: on_trade_response 接口可用于接收成交回报的主动推送。

技术支持

如果以上问题无法解决您的问题,请:

  1. 查看API参考文档获取详细说明
  2. 检查策略示例寻找类似用法
  3. 联系您的券商或平台技术支持团队