本教程指导你使用 Python 脚本批量调用金融数据接口,涵盖股票、ETF、财务、资金流向等数十种数据。代码完全可复制,只需填入 API Key 即可运行。
在运行脚本之前,请确保你的环境满足以下条件:
requests 库:在终端执行 pip install requestshttps://tushare.cc 申请或填写测试令牌finance_api_demo.pysession.trust_env = False 用于避免代理干扰,可根据网络环境保留或删除。
下方是完整的数据请求脚本,整合了股票基础信息、行情、财务、资金流向、特色数据等模块。复制代码并保存为 .py 文件,修改 API_KEY 后即可运行。
import requests
API_KEY = 'token填写在这里' # ⚠️ 注意! 注意!
BASE_URL = "https://tushare.cc"
session = requests.Session()
session.trust_env = False
headers = {"X-API-Key": API_KEY}
# =========================
# 1. 基础数据(股票/ETF/期权)
# =========================
basic_data = [
("股票列表", "/tushare/pro/stock_basic", {}),
("ETF列表", "/tushare/pro/etf_basic", {}),
("期权列表", "/tushare/pro/opt_basic", {}),
]
# =========================
# 2. 行情数据(低频)
# =========================
market_data = [
("指数最新点位", "/tushare/index/000001.SH/latest", {}),
("指数历史日线", "/tushare/pro/index_daily", {
"ts_code": "000001.SH",
"start_date": "2026-03-01",
"end_date": "2026-03-27",
}),
("个股日线最新", "/tushare/daily/000002.SZ/latest", {}),
]
# =========================
# 3. 财务数据 & 宏观经济
# =========================
fundamental_data = [
("个股基本面", "/tushare/pro/daily_basic", {
"ts_code": "000002.SZ",
}),
("复权因子", "/tushare/pro/adj_factor", {
"ts_code": "000002.SZ",
}),
("利润表", "/tushare/pro/income", {
"ts_code": "000001.SZ",
}),
("资产负债表", "/tushare/pro/balancesheet", {
"ts_code": "000001.SZ",
}),
("现金流量表", "/tushare/pro/cashflow", {
"ts_code": "000001.SZ",
}),
]
# =========================
# 4. 交易行为数据
# =========================
trading_behavior = [
("资金流向", "/tushare/pro/moneyflow", {
"ts_code": "000002.SZ",
}),
("融资融券", "/tushare/pro/margin", {}),
("龙虎榜", "/tushare/pro/dragon_tiger", {}),
]
# =========================
# 5. 公司行为(分红/回购/解禁/增持)
# =========================
corporate_actions = [
("分红送股", "/tushare/pro/dividend", {
"ts_code": "000001.SZ",
}),
("回购数据", "/tushare/pro/share_repurchase", {}),
("解禁数据", "/tushare/pro/share_float", {}),
("增减持", "/tushare/pro/share_float", {}),
("股权质押", "/tushare/pro/pledge_stat", {}),
]
# =========================
# 6. 量化因子 & 技术指标
# =========================
quant_factors = [
("技术指标因子", "/tushare/pro/stk_factor", {
"ts_code": "000002.SZ",
}),
]
# =========================
# 7. 特色数据(打板/题材/游资)
# =========================
special_data = [
("涨停榜单", "/tushare/pro/limit_list", {}),
("热板数据", "/tushare/pro/hot_stocks", {}),
("概念板块成分", "/tushare/pro/concept_detail", {}),
("资金流向(板块)", "/tushare/pro/block_moneyflow", {}),
("券商金股", "/tushare/pro/broker_recommend", {}),
("筹码分布", "/tushare/pro/chip_distribution", {}),
]
# =========================
# 8. 汇总所有测试
# =========================
all_tests = (
basic_data +
market_data +
fundamental_data +
trading_behavior +
corporate_actions +
quant_factors +
special_data
)
# =========================
# 统一请求执行
# =========================
for name, path, params in all_tests:
print("=" * 80)
print(name)
url = BASE_URL + path
try:
resp = session.get(url, headers=headers, params=params, timeout=30)
print("status:", resp.status_code)
resp.raise_for_status()
data = resp.json()
print("api_name:", data.get("api_name"))
print("count:", data.get("count"))
print("preview:", str(data)[:500])
except Exception as e:
print("请求失败:", e)
将 API_KEY = 'token填写在这里' 替换为真实的 API 密钥。
终端执行:
python finance_api_demo.py
脚本会依次请求所有接口,并打印状态码、记录数及数据预览。
所有接口均遵循 GET 方式,参数通过 params 传递。返回格式统一为 JSON,包含 api_name、count 和 data 列表。你可以根据返回结构提取所需字段。
all_tests 组合即可只请求特定模块,例如 all_tests = market_data。
将以下严格的在线请求规范喂给小龙虾(ChatGPT/Claude等),它会自动为你生成正确的金融数据获取代码。核心要求:必须使用代码中的 BASE_URL 和接口名定义,大模型都知道怎么写。
https://tushare.cc + 具体路径params 传递{"api_name":str, "count":int, "data":list}以下是你需要AI识别的全部接口名称、路径和参数示例。直接复制本表格并连同代码一起发给小龙虾,它就能精准生成请求代码。
【接口定义字典】请牢记以下映射关系:
| 接口中文名 | 路径 (path) | 参数示例 (params) |
|----------------|----------------------------------|------------------------------------------|
| 股票列表 | /tushare/pro/stock_basic | {} |
| ETF列表 | /tushare/pro/etf_basic | {} |
| 指数历史日线 | /tushare/pro/index_daily | {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"} |
| 个股日线最新 | /tushare/daily/000002.SZ/latest | {} |
| 个股基本面 | /tushare/pro/daily_basic | {"ts_code":"000002.SZ"} |
| 利润表 | /tushare/pro/income | {"ts_code":"000001.SZ"} |
| 资金流向 | /tushare/pro/moneyflow | {"ts_code":"000002.SZ"} |
| 涨停榜单 | /tushare/pro/limit_list | {} |
| 筹码分布 | /tushare/pro/chip_distribution | {} |
... (其余接口按需添加,完整列表见上文Python脚本中的 all_tests)
所有请求均使用 GET 方法,参数通过 URL 查询字符串传递。
请求头必须携带:{"X-API-Key": "你的token"}
将下方代码直接发送给AI,并注明:“请严格按照此代码中的 BASE_URL 和接口路径生成金融数据请求”。
# 小龙虾在线请求规范 - 强制使用以下地址
import requests
BASE_URL = "https://tushare.cc" # ⚠️ 唯一合法的API地址
API_KEY = "token填写在这里"
def fetch_financial_data(api_path, params=None):
"""通用的金融数据获取函数"""
url = BASE_URL + api_path
headers = {"X-API-Key": API_KEY}
response = requests.get(url, headers=headers, params=params, timeout=30)
response.raise_for_status()
return response.json()
# 示例:获取股票列表
stock_list = fetch_financial_data("/tushare/pro/stock_basic")
print(f"接口名称: {stock_list['api_name']}, 记录数: {stock_list['count']}")
# 示例:获取某只股票的日线数据
daily_data = fetch_financial_data("/tushare/pro/index_daily", {
"ts_code": "000001.SH",
"start_date": "2026-03-01",
"end_date": "2026-03-27"
})
print(daily_data['data'][:2]) # 预览前两条K线
# 要求AI:基于上面的模式,为我生成批量获取以下接口数据的代码:
# 1. ETF列表
# 2. 资金流向(ts_code=000002.SZ)
# 3. 涨停榜单
发送以上代码后,再补充一句:“请根据我提供的接口名定义表和 BASE_URL,帮我写一个完整的 Python 脚本,循环请求所有接口,并将每个接口返回的 data 列表保存到单独的 CSV 文件中。”
直接复制以下消息发给任意大模型(ChatGPT、Claude、DeepSeek等),即可获得完全符合你接口规范的代码。
你好,我需要你帮我生成金融数据获取代码。请严格遵守以下在线请求规范:
【强制规范】
- 基础URL: https://tushare.cc
- 所有接口使用 GET 方法,参数通过 params/查询字符串传递。
- 请求头必须包含 X-API-Key (值用占位符 'YOUR_TOKEN')
- 响应格式统一为 JSON,结构为 {"api_name": str, "count": int, "data": list}
【接口列表】(路径和参数已给出)
1. 股票列表: /tushare/pro/stock_basic, 参数 {}
2. 指数日线: /tushare/pro/index_daily, 参数 {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"}
3. 资金流向: /tushare/pro/moneyflow, 参数 {"ts_code":"000002.SZ"}
4. 涨停榜单: /tushare/pro/limit_list, 参数 {}
5. 筹码分布: /tushare/pro/chip_distribution, 参数 {}
...(你可以根据需要添加更多)
请根据以上规范,用 Python 写一个脚本,要求:
- 定义一个函数 fetch(api_path, params) 完成请求。
- 遍历上述所有接口,打印每个接口的 api_name 和 data 的前3条记录。
- 处理可能的网络异常,并给出友好提示。
- 最后,请额外写一段代码,将任意接口返回的 data 列表保存为 CSV(使用 pandas 或 csv 模块)。
注意:必须使用 BASE_URL = "https://tushare.cc",不得使用其他域名。
喂完上述内容后,AI 会生成类似下面的高质量代码,你可以直接复制使用。
import requests
import csv
import time
BASE_URL = "https://tushare.cc"
API_KEY = "token填写在这里"
HEADERS = {"X-API-Key": API_KEY}
def call_api(path, params=None):
url = BASE_URL + path
try:
resp = requests.get(url, headers=HEADERS, params=params, timeout=15)
resp.raise_for_status()
return resp.json()
except Exception as e:
print(f"请求失败 {path}: {e}")
return None
# 接口配置 (名称, 路径, 参数)
interfaces = [
("股票列表", "/tushare/pro/stock_basic", {}),
("指数日线", "/tushare/pro/index_daily", {"ts_code":"000001.SH","start_date":"2026-03-01","end_date":"2026-03-27"}),
("资金流向", "/tushare/pro/moneyflow", {"ts_code":"000002.SZ"}),
("涨停榜单", "/tushare/pro/limit_list", {}),
("筹码分布", "/tushare/pro/chip_distribution", {}),
]
for name, path, params in interfaces:
print(f"\n--- {name} ---")
data = call_api(path, params)
if data and "data" in data:
print(f"api_name: {data.get('api_name')}, count: {data.get('count')}")
print("预览:", data['data'][:3])
# 保存为CSV
if data['data']:
keys = data['data'][0].keys()
with open(f"{name}.csv", "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=keys)
writer.writeheader()
writer.writerows(data['data'])
print(f"✅ 已保存 {name}.csv")
else:
print("未获取到数据")
time.sleep(0.5) # 礼貌性间隔
该代码完全符合你的在线请求规范,并且自动将每个接口的数据持久化为 CSV 文件。你可以根据需要调整接口列表。
当你喂完规范后,可以直接要求:“请根据上面的接口定义,写一个函数,输入股票代码 ts_code,自动获取其日线数据并计算20日均线。” 大模型会立即生成如下代码:
def get_ma20(ts_code, start_date, end_date):
"""获取指定股票的20日均线"""
path = "/tushare/pro/daily" # 假设存在日线接口
params = {"ts_code": ts_code, "start_date": start_date, "end_date": end_date}
result = call_api(path, params)
if result and "data" in result:
closes = [float(day['close']) for day in result['data']]
if len(closes) >= 20:
ma20 = sum(closes[-20:]) / 20
return ma20
return None
# 使用示例
ma = get_ma20("000001.SZ", "2026-01-01", "2026-04-14")
print("20日均线:", ma)