面向交易者的 Schwab API:覆盖范围与限制
Schwab Trader API 是 TD Ameritrade 开发者 API 的继任者。它通过带 OAuth 2.0 认证的 REST 接口,让开发者以编程方式访问 Schwab 的账户数据、行情数据和美国市场的下单功能。本指南介绍这套 API 支持什么、适合谁,以及在开发之前需要弄清楚哪些问题。仅供规划参考,不构成交易建议,也不对任何券商或数据作出保证。
- Schwab Trader API 覆盖美国股票、ETF、包含多腿策略的期权以及指数期权;期货、外汇和非美国股票不在其覆盖范围之内。
- 认证使用三方 OAuth 2.0,访问令牌约 30 分钟,刷新令牌约 7 天。
- 存在带合成账户的沙盒环境,用于上线前测试;沙盒不能当作模拟交易账户使用。
什么是 Schwab Trader API?
Schwab Trader API 是 Schwab 的 REST API,用于以编程方式访问行情数据、账户数据和订单路由。在 Schwab 收购 TD Ameritrade 之后,它取代了 TD Ameritrade 开发者 API,TDA API 现已完全退役。如果你是专门来找旧的 TDA API,时间线、关闭日期和迁移路径都已在 /resources/articles/td-ameritrade-api-shut-down-what-replaced-it 中完整说明。
如果你之前基于 TDA API 开发,Schwab Trader API 就是迁移的目标。底层模式相似,都是 REST 端点、JSON 响应和 OAuth 2.0,但端点路径和某些行为有变化。当前的规范见 developer.schwab.com。
关于面向技术交易工作流的券商 API 更全面对比,请阅读 /resources/articles/ibkr-vs-alpaca-vs-tradier-for-technical-traders-api-stack-fit-checklist。关于 Schwab Trader API 相对于 IBKR 数据订阅和 Alpaca 数据层的成本详细拆解,请阅读 /resources/articles/schwab-api-cost-vs-ibkr-alpaca-retail-traders。
Schwab API 支持哪些品种和订单类型?
Schwab Trader API 支持交易美国股票、ETF、期权(包括多腿策略:垂直价差、跨式、蝶式)和指数期权。期货、外汇、加密货币、债券和非美国股票无法通过该 API 交易,期货订单会返回 HTTP 400。部分期货品种存在有限的、未公开的推送报价数据,但没有期货订单路由,也没有期货历史 K 线数据。
支持的订单类型:市价单、限价单、止损单、止损限价单、追踪止损单、OCO(一个取消另一个)、OTO(一个触发另一个)以及组合订单(一个触发 OCO)。带 OCO/OTO 的多腿期权组合在开发者社区中被标注为实验性功能,在围绕它们构建生产逻辑之前,请先用真实券商连接进行验证。
期权代码使用 OSI 的 21 位字符格式,例如:AAPL 240419C00150000。在编写数据管道代码之前,请先确认你对代码格式的处理方式。
| 品种 | 通过 API 交易 | 推送报价 | 历史 K 线 |
|---|---|---|---|
| 美国股票 | 支持 | 支持(L1 + L2) | 支持 |
| ETF | 支持 | 支持(L1 + L2) | 支持 |
| 期权(含多腿) | 支持 | 支持 | 不支持 |
| 指数期权 | 支持 | 支持 | 不支持 |
| 期货 | 不支持,HTTP 400 | 有限/未公开 | 不支持 |
| 外汇 / 加密货币 | 不支持 | 不支持 | 不支持 |
| 非美国股票 | 不支持 | 不支持 | 不支持 |
Schwab Trader API 的认证如何运作?
认证采用三方 OAuth 2.0 流程。你的应用把用户重定向到 Schwab 的授权页面,用户授予访问权限,然后你的应用用授权码换取令牌。
访问令牌有效期约 30 分钟。刷新令牌有效期约 7 天。长期不用的刷新令牌会过期,并需要重新进行一次面向用户的授权步骤。任何要在周末无人值守运行的工作流,都需要内置主动刷新令牌的逻辑。
请在 developer.schwab.com 注册你的应用,并获取你的客户端 ID、客户端密钥和重定向 URI。不要把凭据放进版本控制。
Schwab API 有沙盒吗?
有。提供带合成账户和数据的沙盒环境。它使用与生产环境相同的凭据,但连接到不同的基础 URL。
沙盒是使用合成数据的测试环境,不能当作模拟交易账户使用。Schwab Trader API 没有模拟交易模式,该 API 只连接真实账户。请在连接真实账户之前,用沙盒验证认证、令牌刷新逻辑和数据结构。
WebSocket 推送涵盖什么?
该 API 支持用于实时数据的 WebSocket 推送。推送涵盖股票和 ETF 的 Level 1 与 Level 2(NYSE/NASDAQ)报价、期权报价和逐笔成交。存在一些未公开的期货报价推送,但不属于官方 API 范围。
关于频率限制和盘前盘后报价覆盖范围,请查阅 developer.schwab.com 上当前的 Schwab 开发者文档。
谁适合 Schwab Trader API?
Schwab Trader API 适合在 Schwab 账户上交易美国股票、ETF 和期权的技术派交易者和开发者。对于 TD Ameritrade 开发者 API 的用户,这是一条自然的迁移路径。
| 适合 | 不适合 |
|---|---|
| 在 Schwab 上交易美国股票、ETF、期权 | 需要期货、外汇或非美国市场的多资产交易者 |
| TD Ameritrade API 迁移用户 | 需要模拟交易模式的工作流 |
| 带沙盒的标准 REST/OAuth | 需要期货订单路由 |
| 零售账户,聚焦美国市场 | 机构或全球交易所的需求 |
个人使用权限不等于商业审批
在 developer.schwab.com 注册并针对你自己的账户进行测试,属于个人使用权限。提供一个连接其他 Schwab 客户账户的应用则是另一个步骤:它需要商业审批,这是一项审核,会评估你的使用场景、用户是否保有对下单的直接控制,以及任何自动化或 AI 驱动的功能,全部以 Schwab 的自主交易零售模式为衡量标准。
如果你打算在 Trader API 之上发布产品,请尽早界定该审核的范围。关于它评估什么以及如何准备,请阅读 /resources/articles/schwab-trader-api-commercial-approval-what-the-review-evaluates。关于契合自主交易模式的只读设计模式,请阅读 /resources/articles/read-only-schwab-api-apps-self-directed-model。
开发之前:检查清单
在编写集成代码之前,先走一遍这份清单。
- 在 developer.schwab.com 注册你的应用。收集客户端 ID、客户端密钥和重定向 URI。
- 确认你的账户类型有资格使用 API,请查阅当前的 Schwab 开发者文档了解符合条件的账户类型。
- 在沙盒中端到端测试认证。在连接真实账户之前,确认令牌刷新在 30 分钟的边界上能正常工作。
- 把每个品种映射到 Schwab 的代码格式。期权使用 OSI 的 21 位字符格式,请确认你的解析器能正确处理它。
- 对照上文的交易范围,核实你需要哪些品种。期货订单路由不可用。
- 界定历史 K 线的需求:仅限股票和 ETF,周期为日线、1 分钟、5 分钟、10 分钟、15 分钟和 30 分钟。1 分钟历史数据的深度约为 30 到 35 天。
- 关于交易历史深度以及拆股/分红调整的细节,请在构建依赖这些内容的逻辑之前,查阅当前的 Schwab 开发者文档。
- 关于 IBKR 的替代方案或更全面的 API 技术栈对比,请阅读 /resources/articles/ibkr-vs-alpaca-vs-tradier-for-technical-traders-api-stack-fit-checklist。
- 如需咨询支持来界定 Schwab 工作流开发的范围,请见 /consulting。
常见问题
- Schwab API 免费吗?
- Schwab 没有公布其 Trader API 的价格。你需要有一个 Schwab 券商账户和一个获批的开发者应用。在 MyLinedChart 中,你使用自己的 Schwab 开发者应用登录,登录信息保留在你的设备上。
- Schwab Trader API 和 TD Ameritrade 开发者 API 是同一个东西吗?
- 不是。Schwab Trader API 是继任者。TDA API 现已完全退役。认证方式和端点路径都有不同;现有的 TDA 集成需要迁移。当前的规范见 developer.schwab.com。
- Schwab API 支持模拟交易吗?
- 不支持。Schwab Trader API 只连接真实账户。沙盒是使用合成数据的测试环境,用于验证认证、令牌逻辑和数据结构,不能当作模拟交易账户使用。
- 我可以通过 Schwab Trader API 交易哪些品种?
- 美国股票、ETF、包含多腿策略的期权以及指数期权。期货、外汇、加密货币、债券和非美国股票无法交易。期货订单会返回 HTTP 400。存在一些未公开的期货推送报价数据,但没有期货的订单路由,也无法获取期货历史 K 线。
- 对于技术交易,Schwab API 与 IBKR 相比如何?
- Schwab 覆盖美国股票、ETF 和期权,OAuth 2.0 设置更简单,并带沙盒。IBKR 覆盖更广的全球品种范围,包括期货。详细对比请阅读 /resources/articles/ibkr-vs-schwab-api-technical-traders。
- 使用 Schwab Trader API 需要商业审批吗?
- 仅针对你自己的账户开发和测试,只需个人使用权限。商业审批是另一项审核,在你提供连接其他 Schwab 客户账户的应用之前必须通过。请阅读 /resources/articles/schwab-trader-api-commercial-approval-what-the-review-evaluates。