Developers

Two lines to a DataFrame

The official SDKs wrap the HTTP endpoints into one-line method calls — no URL building, no retry handling, no response parsing.

InstallSHELL
pip install ashareapi
npm install ashareapi
Up and running in 30 seconds
from ashareapi import AShareAPI

cli = AShareAPI()                      # free endpoints need no key
df  = cli.kline("sh600519", "day", 30)
print(df.tail())
Up and running in 30 seconds
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))

Paid endpoints (financials / capital flow / dragon-tiger list / factor screening / backtesting) just need your key — everything else stays the same.

Why use the SDK instead of raw requests

Responses are DataFrames

Most endpoints return tables; the SDK turns them into a pandas DataFrame. No pandas? It falls back to a list of dicts.

Code formats handled for you

sh600667 / 600667.SH / 600667 all work — the SDK normalises them.

Clear error classes

Auth / rate limit / upstream failure / empty result are distinct — empty is not failure, and each tells you what to do.

Zero deps, full types

The Node build uses only native fetch (no third-party deps) and ships TypeScript types with editor autocomplete.

Fixed conventions

K-line adjustment is fixed server-side — no double-adjusting.

Nothing for you to maintain

Multi-source switching, caching and monitoring live on the server; a failed fetch rotates to another source.

What you can build with it

The SDK does one thing: turn data into a structure you can use directly. The rest is up to you — these are the common cases.

Notebooks / local research

After `pip install ashareapi`, one variable is one table — plot it, compute factors, write it up.

Dashboards / internal tools

Call it server-side and feed the DataFrame or JSON into your frontend or BI stack.

Strategy scripts / backtesting

Data fetching stays inside the SDK; your strategy code only handles logic.

Batch scanning

Pull capital flow or K-lines for a whole batch at once — good for scanning a pool.

Connecting to QMT / Ptrade

Both terminals ship an older built-in Python (QMT 3.6 · Ptrade 3.5, some brokers 3.11) and enforce broker library whitelists and sandboxes, so third-party packages generally will not install. The workable pattern is "fetch outside, read files inside" — your strategy only reads local files and makes no network calls.

① Fetch outside (normal Python)

Use the SDK to pull data and write local CSVs — this step runs outside the terminal.

② Read files inside the strategy

QMT / Ptrade bundle pandas, so read the CSV directly — no third-party installs, no network calls.

③ Swap symbols by editing one list

Data layer and strategy layer stay separate; strategy code does not change with the data source.

外部取数
# 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)

Why not run the SDK inside the terminal: the built-in version is below this package’s 3.9 requirement, and whitelists / sandboxes block installs. File exchange sidesteps both while keeping the strategy side dependency-free.

Common methods

The full list and parameters live in the docs; these are the ones you reach for first.

MethodWhat it does
quote(code)Realtime quote snapshot
kline(code, period, count)K-lines (day / week / month / season / year + intraday)
klineFull(code)Full history of daily bars in one call
minute(code, days)Intraday (today / last 5 days)
fund(code)Capital flow + dragon-tiger list + block trades + margin
lhb(type)Dragon-tiger boards (institutions / hot money / active seats)
finance(code)The three financial statements
technical(code)MA / MACD / KDJ / RSI / BOLL
screen(expr, preset)Factor screening
backtest(opts)Quant backtesting

Related