量化回测(策略回测 · 单标的实时 / 组合预计算) API
⭐ 量化回测:对给定标的或组合,按内置策略跑历史回测,返回收益/风险指标(可选净值曲线)。 两种模式(用 `mode` 区分): - `mode=single`(默认):单标的择时回测,实时计算(毫秒级)。传 `code` + `strategy`。 - `mode=portfolio`:组合回测(多标的选股),查预计算结果(全市场回测耗时较长,故预先算好)。传 `strategy`。 `strategy` 取值(单标的 20 条):`buy_hold` `low_vol` `dca` `vol_target` `ma_stop` `ma_cross` `grid` `mom20` `turtle` `rev5` `breakout` `atr_stop` `macd` `rsi` `boll` `kdj` `wr` `obv` `cci` `sar` (组合 9 条):`buy_hold_equal` `lowvol20` `mom20` `mom20_ex_st` `rev5` `ma_cross` `volume_breakout` `smallcap` `largecap` ⚠️ 成本已计入:佣金(万三,最低 5 元)/ 印花税(卖出 0.05%)/ 过户费(沪市)/ 滑点(千一)。 ⚠️ 已计入约束:涨跌停(不可成交则顺延)/ 停牌(缺行情即不成交)。 ⚠️ ST 按当前名单近似(历史逐日 ST 状态无公开源)——ST 股占全市场约 3.6%,影响局限在触及板限时。 ⚠️ 未计入:冲击成本、容量约束。 ⚠️ 属付费层(需 API Key)—— 门槛 `pro`(¥99)及以上。 ⚠️ 历史回测结果不代表未来表现,仅供研究,不构成投资建议。
GET /v1/backtestGET /v1/backtest?mode=listcurl "https://api.ashareapi.com/v1/backtest?mode=list&key=YOUR_KEY"mode · strategy · code · start · end · initial_cash · include_equity带 * 为必填快速开始
把下面的代码里的 Key 换成你的(免费端点无需 Key,直接调):
# 推荐:Authorization 头(密钥不进日志)
curl -H "Authorization: Bearer YOUR_KEY" \
"https://api.ashareapi.com/v1/backtest?mode=list"
# 快速测试:直接浏览器打开(?key= 会留在日志/历史里,别用于生产)
curl "https://api.ashareapi.com/v1/backtest?mode=list&key=YOUR_KEY"import requests
r = requests.get(
"https://api.ashareapi.com/v1/backtest",
headers={"Authorization": "Bearer YOUR_KEY"},
params={},
timeout=30,
)
print(r.json())const r = await fetch("https://api.ashareapi.com/v1/backtest?mode=list", {
headers: { Authorization: "Bearer YOUR_KEY" },
});
console.log(await r.json());参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | string | 否 | single=单标的实时 / portfolio=组合(查预计算) |
| strategy | string | 否 | 内置策略名(见描述) |
| code | string | 否 | mode=single 时必填:A股代码 sh600519 |
| start | string | 否 | 回测起始日 YYYY-MM-DD |
| end | string | 否 | 回测结束日 YYYY-MM-DD(省略=最新) |
| initial_cash | number | 否 | 初始资金(默认 100 万) |
| include_equity | boolean | 否 | 是否返回净值曲线 |
modestringstrategystringcodestringstartstringendstringinitial_cashnumberinclude_equityboolean统一返回信封: { ok, endpoint, tier, elapsed_ms, source, data }
数据在 `data` 字段;上游为空时 `ok:false` 且不扣次数。
免费端点无需 Key(匿名 5 次/分,解一次 PoW 可到 15 次/分;每次最多 250 根 K 线、每天最多 10 万条)。付费端点按档位限流:体验 30 · 标准 120 · 专业 300 · 不限量 600 次/分;买断档按总量计(不用完不过期)。
看错误码对照表 →常见问题
通用问题(所有端点通用)
免费端点不需要:health、challenge、quote、kline、hot、market-overview、changedist 匿名即可调用。付费端点需要:在请求头带 `Authorization: Bearer <你的 Key>`。⚠️ 匿名额度按调用者类型分级:浏览器(真人)5 次/分;脚本 / SDK / AI Agent(curl、requests、axios、openai 等 UA)2 次/分 —— 自动化流量更易被滥用。解一次 PoW 挑战(`GET /v1/challenge`,再带 `X-PoW` 头)可提到 15 次/分,与类型无关。⚠️ 另外,匿名调用单次最多取 250 根 K 线、每天最多 10 万条 —— 要一次拿满 1212 根或不限日量,请用 API Key。
不会。上游失败或空结果时返回 `ok:false`,并自动退回本次计费(total_calls / usage_log / ep_log 三处同时回滚)。只有真正取到数据的请求才计入用量。
行情类(quote / kline / orderbook / changedist)为实时或当日;财务、股东、分红、事件等为上游披露后 T+1 内。响应里的 `source` 字段标明本次实际命中的数据通道。
不能。`code` 是单值参数,一次一只;批量请并发调用(注意各自档位的每分钟限流)。
配一次 MCP 即可,之后直接问 AI「查一下……」它会自己调。MCP 暴露 26 个工具,覆盖行情 / 财务 / 选股 / 板块 / 宏观。