pip install ashareapinpm install ashareapifrom ashareapi import AShareAPI
cli = AShareAPI() # free endpoints need no key
df = cli.kline("sh600519", "day", 30)
print(df.tail())import { AShareAPI } from 'ashareapi'
const cli = new AShareAPI() // free endpoints need no key
const rows = await cli.kline('sh600519', 'day', 30)
console.log(rows.slice(-5))付费端点(财务 / 资金 / 龙虎榜 / 因子选股 / 量化回测等)填上 Key 即可,其余写法完全一样。
为什么用 SDK 而不是手拼请求
多数端点返回表,SDK 自动转 pandas DataFrame;未装 pandas 也能用(退回字典列表)。
sh600667 / 600667.SH / 600667 都认,SDK 自动归一化。
鉴权 / 限频 / 上游失败 / 无数据分四类 —— 无数据 ≠ 失败,每类都告诉你该做什么。
Node 版只用原生 fetch(无第三方依赖);自带 TypeScript 类型,编辑器里直接补全。
K 线复权口径由服务端固定,不会二次复权。
多源切换 / 缓存 / 巡检都在服务端;取数失败会自动换源。
能接进什么
SDK 只做一件事:把数据变成你能直接用的结构。剩下的由你决定 —— 下面是最常见的几种用法。
`pip install ashareapi` 之后,一个变量就是一张表,直接画图、算因子、写报告。
服务端调用,把 DataFrame 或 JSON 喂给你的前端 / BI。
取数封装在 SDK 里,策略代码只关心逻辑。
一次拿一批标的的资金流 / K 线,适合扫池子。
接到 QMT / Ptrade
这两个终端的内置 Python 版本较旧(QMT 3.6 · Ptrade 3.5,部分券商 3.11),且有券商库白名单与沙箱限制,第三方包默认装不进去。可行做法是「外部取数、终端读文件」—— 策略代码只读本地文件,不联网。
用 SDK 拉数据,落成本地 CSV —— 这一步在终端之外跑。
QMT / Ptrade 内置 pandas,直接读 CSV,不装任何第三方包、不发起网络请求。
数据层与策略层分离,策略代码不随数据源改动。
# fetch.py —— 在终端【之外】用普通 Python 跑(3.9+)
from ashareapi import AShareAPI
cli = AShareAPI("ct-你的KEY")
codes = ["sh600519", "sz000001"]
for code in codes:
df = cli.kline(code, "day", 250) # 已返回 DataFrame
df.to_csv("%s.csv" % code, index=False)# strategy.py —— 放进 QMT / Ptrade 的策略文件里(只读本地文件)
# ⚠️ 列名以 SDK 实际返回为准:date / open / last / high / low / volume / amount
import pandas as pd
def initialize(context):
# 终端内置 pandas ⇒ 直接读 CSV,不装第三方包、不联网
context.data = pd.read_csv("sh600519.csv")
context.data["ma20"] = context.data["last"].rolling(20).mean()
def handle_data(context, bar):
row = context.data[context.data.date == bar.time]
if len(row) == 0:
return
ma20 = row.iloc[0]["ma20"]
if bar.close > ma20:
order_target_percent("600519.SS", 1.0)为什么不让 SDK 直接跑在终端里:内置版本低于本包要求的 3.9,且有白名单 / 沙箱拦截。走文件交换可绕开这些限制,同时保持策略侧零依赖。
常用方法
完整清单与参数见文档;下面是上手最常用的几个。
| 方法 | 说明 |
|---|---|
quote(code) | 实时行情快照 |
kline(code, period, count) | K 线(日 / 周 / 月 / 季 / 年 + 分钟线) |
klineFull(code) | 全历史日线一次拿全 |
minute(code, days) | 分时(当日 / 近 5 日) |
fund(code) | 资金流 + 龙虎榜 + 大宗 + 两融 |
lhb(type) | 龙虎榜分榜(机构 / 游资 / 活跃席位) |
finance(code) | 三大报表 |
technical(code) | MA / MACD / KDJ / RSI / BOLL |
screen(expr, preset) | 因子选股 |
backtest(opts) | 量化回测 |