楼主: 2416805678
340 0

[其他] 《投资-318》量化交易 - 个人量化投资者如何通过python库获取交易数据 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-4-22
最后登录
2018-4-22

楼主
2416805678 发表于 2025-11-19 11:06:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

对于个人量化投资者而言,运用 Python 获取交易数据是制定策略的首要步骤。

Python 拥有多样的金融数据获取库和工具,能够帮助你从不同来源收集股票、基金、期货、加密货币等市场的历史与实时数据。以下为你系统整理的内容:

  • 适合个人投资者的 Python 数据获取方案
  • 常用库简介 + 安装 + 实战代码示例
  • 免费 vs 付费选择建议
  • 数据清洗与存储建议

一、常用 Python 库概览(按用途分类)

库名 支持市场 是否免费 特点
akshare
A股、港股、期货、基金、宏观 免费 中文社区维护,覆盖面广
tushare
A股、港股、指数、龙虎榜 部分免费 数据品质高,需积分
baostock
A股、指数 免费 国产,无需注册,简便易用
yfinance
美股、ETF、全球指数 免费 Yahoo Finance 接口,国际首选
pandas_datareader
多源(Yahoo、FRED、World Bank) 免费 通用性佳,适用于宏观数据
ccxt
加密货币(币安、OKX等) 免费 支持100+交易所
rqdatac
A股、期货、期权 付费/机构 专业级,精确度高
joinquant
/ / /
vnpy
多市场(需平台账号) 混合 与实盘对接良好

推荐组合:

  • 初学者:
    akshare
    +
    yfinance
  • 进阶者:
    tushare
    +
    ccxt
  • 专业级:
    rqdatac


    JoinQuant API

二、实战演示:6个常用库的使用方法

  1. akshare
    —— 中文世界最全面的免费金融数据接口
    # 安装:pip install akshare
    import akshare as ak
    # 获取A股日线数据
    df = ak.stock_zh_a_daily(symbol="sh600519", adjust="qfq") # 贵州茅台
    print(df.tail())
    # 获取指数
    index_df = ak.index_zh_ah_daily(symbol="sh000300") # 沪深300
    # 获取期货
    fut_df = ak.futures_hq_subscribe_exchange_symbol(exchange="SHFE")
    # 获取基金
    fund_df = ak.fund_etf_hist_em(fund="159949") # 消费ETF

    优点:支持广泛,更新迅速,完全免费

    缺点:部分接口稳定性欠佳,需处理异常

  2. tushare
    —— 高品质数据,但需要注册+积分
    # 安装:pip install tushare
    import tushare as ts
    # 设置token(需在官网注册获取)
    ts.set_token('your_token_here')
    pro = ts.pro_api()
    # 获取日线行情
    df = pro.daily(ts_code='600519.SH', start_date='20200101', end_date='20240101')
    # 获取财务报表
    income = pro.income(ts_code='600519.SH', period='20231231')
    # 获取资金流向
    moneyflow = pro.moneyflow_hsgt()

    优点:数据权威、结构清晰、支持基本面

    缺点:高频数据需付费或高积分门槛

    注册地址:https://tushare.pro

  3. baostock
    —— 简便易用的国产替代
    # 安装:pip install baostock
    import baostock as bs
    import pandas as pd
    #### 登录系统 ####
    lg = bs.login()
    print(f"登录状态: {lg.error_msg}")
    #### 获取K线数据 ####
    rs = bs.query_history_k_data_plus("sh.600519",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag",
    start_date='2020-01-01', end_date='2024-01-01', frequency="d", adjustflag="3")
    data_list = []
    while (rs.error_code == '0') & rs.next():
    data_list.append(rs.get_row_data())
    df = pd.DataFrame(data_list, columns=rs.fields)
    #### 退出登录 ####
    bs.logout()

    优点:无需Token,完全免费,适合初学者

    缺点:不支持实时数据,功能较为基础

  4. yfinance
    —— 获取美股、ETF、全球资产的首选

安装:pip install yfinance

import yfinance as yf
# 获取苹果公司(AAPL)的信息
ticker = yf.Ticker("AAPL")
df = ticker.history(period="5y", interval="1d")
print(df[['Open', 'High', 'Low', 'Close', 'Volume']].tail())
# 获取SP500指数
sp500 = yf.download("^GSPC", start="2020-01-01", end="2024-01-01")
# 获取分红与拆分详情
dividends = ticker.dividends
splits = ticker.splits
? 特点:可靠、高效、支持全球资产
? 强烈建议用于美股研究、QDII、跨国配置

5.

pandas_datareader

—— 宏观经济数据工具
# 安装:pip install pandas-datareader
import pandas_datareader as pdr
from datetime import datetime
# 获取美联储利率信息(FRED)
interest_rate = pdr.get_data_fred('FEDFUNDS', start=datetime(2020, 1, 1))
# 获取CPI通胀信息
cpi = pdr.get_data_fred('CPIAUCSL')
# 获取中国GDP(世界银行)
gdp_cn = pdr.wb.download(indicator='NY.GDP.MKTP.CD', country=['CN'], start=2000, end=2023)
? 适用于宏观对冲、资产配置分析
6.

ccxt

—— 加密货币量化工具
?
# 安装:pip install ccxt
import ccxt
# 连接币安(Binance)
exchange = ccxt.binance({
'rateLimit': 1000,
'enableRateLimit': True,
})
# 获取BTC/USDT最新价
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker['last'])
# 获取K线数据
ohlcvs = exchange.fetch_ohlcv('ETH/USDT', '1d', limit=100)
import pandas as pd
df = pd.DataFrame(ohlcvs, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['date'] = pd.to_datetime(df['timestamp'], unit='ms')
? 支持超过100个交易所,如币安、OKX、Gate.io
? 适于创建全自动加密交易系统

三、数据获取优秀实践建议
? 建议步骤:

1. 明确需求 → 股票?期货?还是跨市场?
2. 选择合适的数据源(见下表)
3. 写脚本定时拉取 → 存入本地CSV或数据库
4. 清洗处理 → 统一格式、去复权、补缺失值
5. 构建自己的“私有数据库”

???? 数据存储建议:
小规模:

CSV

文件 +
Pandas

中等规模:
SQLite

(轻型数据库)
大规模:
MySQL

/
PostgreSQL

+
SQLAlchemy

# 示例:保存至SQLite
import sqlite3
conn = sqlite3.connect('stock_data.db')
df.to_sql('maotai', conn, if_exists='replace', index=False)
conn.close()

四、免费 vs 付费方案对比
方案
推荐群体
优势
劣势
akshare / baostock
新手、学生
完全免费,中文友好
更新缓慢、偶尔失效
tushare(基础版)
个人研究者
数据质量高
功能有限
yfinance / ccxt
海外投资爱好者
免费、国际资产多
不包含A股
聚宽 / 通达信API
实际操作用户
可连接回测与交易
需平台账号
Wind / 同花顺i问财(付费)
专业投资者
数据全面、精度高
费用高(万元起)
???? 个人起步建议:
先用

akshare


yfinance

建立基础,熟练后再考虑付费服务。

五、注意事项与避坑指南
问题
解决办法
数据未复权
使用

adjust="qfq"

(前复权)确保可比性
数据丢失
检查节假日、停牌状况,手动补充或跳过
接口频繁访问被封
加入
time.sleep(1)

防止爬虫限制
时间戳时区混乱
统一转换为北京时间
.tz_localize()

实时数据延迟
免费接口通常是T+1,若需实时则需连接券商API

六、结语:掌握数据,就是掌握了量化世界的钥匙
“没有数据,就没有测试;
没有测试,就没有信心;
没有信心,就没有持久执行。”
作为个人量化投资者,能够用 Python 自动化地收集数据,已经迈出了至关重要的一步。
记住:
不必追求最完整的数据,而应追求...

可持续、可验证、可更新

的数据流;最可靠的系统,是你每日都能信赖并运用的那个。

???? 最后送你一句话:

“卓越的策略,起始于一行

import pandas as pd

。”

现在就行动起来吧

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 交易数据 量化投资 量化交易 投资者

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-12 15:47