天勤量化交易与数据技能
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_bc4afc83/tqsdk-python。
技能介绍
解决什么具体问题
TqSdk 的 API 表面看着简洁,真正写策略时却处处是坑:wait_update() 的行为说不清,get_quote() 拿到的对象是快照还是实时引用分不清,期货和股票账号的对象名混用,合约代码写到过期交割月,TargetPosTask 配置不当导致订单不发,TqScenario 的保证金试算来源不明。这些不是文档没有写,而是散落在多个页面里,开发者需要反复翻 FAQ 和示例才能拼出正确写法。
技能如何工作
这个技能把 TqSdk 的常见问题拆成 10 个 reference 文件,按需求路由而非一次性全部加载:
- 更新循环与实时性:
references/wait-update-and-update-loop.md覆盖wait_update()、is_changing()、deadline、Jupyter 注意事项和回测进度问题,明确get_*返回的是实时引用而非快照。 - 行情与合约发现:
references/market-data.md处理get_quote、K 线、Tick、合约查询和DataDownloader,优先推荐主力合约符号如KQ.m@SHFE.rb。 - 账户类型矩阵:
references/account-type-matrix.md区分TqAccount、TqKq、TqSim等类,期货用Account/Position/Order/Trade,股票用SecurityAccount/SecurityPosition/SecurityOrder/SecurityTrade。 - 交易执行与高级工具:
references/order-functions-and-position-tools.md讲TargetPosTask、TargetPosScheduler、Twap和交易所最小开仓量的处理。 - 保证金与风控:
references/scenario-and-margin.md指导用TqScenario做同步试算,说明account=None用 Quote 保证金率,TqAccount查询账户专属费率。 - 字段含义速查:
references/object-fields.md覆盖 Quote、K 线、Account 等对象字段。 - 错误与 FAQ:
references/error-faq.md解释常见异常和迷惑行为。 - 示例映射:
references/example-map.md指向仓库内可模仿的官方示例。
写作代码前,技能强制先识别任务模式(纯行情、本地模拟、快模拟、实盘、股票交易、期货交易、回测、保证金试算),再选对账号类型和合约代码。所有示例代码要求先做最小验证(import 检查、语法检查、短行情订阅或窄幅回测),避免直接丢一段未验证的伪代码给用户。
适用边界与注意点
TqScenario 仅支持期货、单账户、同步调用,调用后立即更新试算快照,不能用于下单,也不能用于股票或多账户场景。它不保证模拟券商的专属优惠规则,仅支持 TqSdk 内置的有限保证金折扣模型。对上期所、能源中心合约,CLOSE 与 CLOSETODAY 必须与导入的持仓快照保持一致,不能混用。
高级执行工具有明确的适用层级:TargetPosTask 是默认目标净持仓方案;support_open_min_volume=True 仅在交易所有最小开仓量规则且可接受近似完成时使用;TargetPosScheduler 适合定时拆单;Twap 是较老的直接 TWAP 助手且不支持回测;InsertOrderTask 和 InsertOrderUntilAllTradedTask 属于内部或高级助手,不是默认答案。
期货和股票的 workflow 是割裂的:股票交易没有 offset 概念,TargetPosTask 不支持股票交易。多账户模式下必须显式传 account= 参数或使用账号对象自身的 getter,否则会拿到错误账户的数据。
涉及历史数据下载时,长区间必须用 DataDownloader,不要假装 get_kline_serial 是无限历史 API。合约代码方面,行情和历史下载优先主力合约,下单和保证金试算必须用具体未过期交割月合约,用 query_quotes(..., expired=False) 或 query_options(..., expired=False) 验证。
所有回答要求:先讲最小相关字段集,再说清对象是期货还是股票;如果实盘、快模拟、本地模拟、股票模拟、回测行为不同,必须明说;如果答案依赖常见陷阱,直接点出陷阱而不是埋在示例里;绝不暴露真实账户名、密码、token 或客户凭据,用占位符或环境变量。
使用场景
- 初次用TqSdk写策略,搞不清wait_update()和get_quote()的实时更新机制,需要可运行的最小示例
- 策略涉及多账户或期货股票混合,需要查清account-type-matrix中各账号类的适用边界
- 对某个合约用TargetPosTask调仓,但交易所设了最小开仓量,需要确认support_open_min_volume怎么配
- 在做回测时遇到NaN或数据断流,需要对照error-faq和example-map快速定位问题
适合人员
- 量化策略开发者,需要确认TqSdk各API在期货和股票场景下的正确用法
- 金融数据工程师,要把TqSdk行情接口集成进内部数据管道或回测框架
- 量化研究员,想用TqScenario做保证金和风险what-if分析,不确定账号和合约该怎么传
- 刚从文档转来的技术博主,需要一份基于真实API的写作和排错参考