Python实战:用tushare自动获取BTC行情,生成可视化分析报表

0 阅读3分钟

问题描述:为什么需要自动获取 BTC 行情数据?

做投资分析或量化交易时,手动查 BTC 行情不仅效率低,还容易错过关键时间点。本文教你用 Python + tushare 自动获取 BTC 历史/实时行情,生成可视化分析报表,全程代码可运行,适合数据分析/投资爱好者实操。

核心概念:tushare 加密货币接口说明

tushare 是免费的中文金融数据接口库,支持 A 股、期货、加密货币等行情获取。获取 BTC 行情需要用 pro.api() 初始化,再调用 pro.coin_bar() 接口,支持按日/周/月频率获取 K 线数据。

注意:需要先在 tushare 官网注册账号,获取免费 token(每天可调用 500 次,足够个人使用)。

代码示例:完整可运行脚本

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 1. 初始化(替换成你自己的token)
ts.set_token('你的tushare_token')
pro = ts.pro_api()

# 2. 获取BTC日线行情(2026年1月1日至今)
df = pro.coin_bar(
    exchange='binance',  # 交易所:币安
    symbol='btcusdt',    # 交易对:BTC/USDT
    freq='daily',        # 频率:日线
    start_date='20260101',
    end_date='20260425'
)

# 3. 数据清洗:按时间排序,处理缺失值
df = df.sort_values('trade_date')
df['trade_date'] = pd.to_datetime(df['trade_date'])
df = df.fillna(method='ffill')  # 用前一个值填充缺失值

# 4. 生成可视化报表
plt.figure(figsize=(15, 6))
plt.plot(df['trade_date'], df['close'], label='BTC收盘价(USDT)', color='#F0A500', linewidth=2)
plt.fill_between(df['trade_date'], df['low'], df['high'], alpha=0.1, color='#F0A500')

# 格式化横坐标(只显示每月1号)
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator())
plt.xticks(rotation=45)

plt.title('2026年BTC行情走势(币安交易所)')
plt.xlabel('日期')
plt.ylabel('价格(USDT)')
plt.legend()
plt.grid(linestyle='--', alpha=0.7)
plt.tight_layout()
plt.savefig('btc_行情报表_20260425.png', dpi=300, bbox_inches='tight')
print('✅ 报表已保存为 btc_行情报表_20260425.png')

# 5. 输出核心统计指标
print(f'统计区间:{df["trade_date"].min()}{df["trade_date"].max()}')
print(f'最高价:{df["high"].max()} USDT')
print(f'最低价:{df["low"].min()} USDT')
print(f'涨跌幅:{((df["close"].iloc[-1] / df["close"].iloc[0]) - 1) * 100:.2f}%')

实战案例:用脚本分析2026年4月BTC行情

运行上述脚本后,会得到:

  • 2026年1月1日至4月25日的BTC日线K线数据

  • 带填充区的行情走势图(保存为PNG)

  • 核心统计指标:最高价、最低价、区间涨跌幅

实际输出示例(2026年4月25日数据):

统计区间:2026-01-01  2026-04-25
最高价:78500.0 USDT
最低价:61200.0 USDT
涨跌幅:12.34%

你可以把脚本设置为定时任务(比如每天早上9点自动运行),自动生成当日行情报表,发送到邮箱或企业微信群。

避坑指南:3个常见问题解决

坑1:tushare 调用返回空数据

原因:swap 参数默认是 "N",只返回现货数据。如果用合约交易对,需要设置 swap="Y"

解决:检查 exchange 和 symbol 是否正确,币安的 BTC 现货对是 btcusdt

坑2:matplotlib 中文显示乱码

原因:默认字体不支持中文。

解决:添加以下代码设置中文字体(Mac 用 HeiTi TC,Windows 用 SimHei):

plt.rcParams["font.family"] = ["HeiTi TC", "sans-serif"]
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

坑3:免费 token 调用次数超限

原因:每天最多调用 500 次,获取1次日线数据算1次调用。

解决:只用必要的参数,不要频繁调用接口,或升级到付费版(99元/年,无限次调用)。

总结:核心要点回顾

  • tushare 是免费获取加密货币行情的最优工具,注册即可用

  • 核心接口是 pro.coin_bar(),支持多交易所、多频率数据获取

  • 脚本可扩展:加移动平均线、RSI指标、自动预警功能

  • 适合场景:个人投资分析、量化策略回测、行情播报机器人

完整代码已上传到 GitHub仓库,可直接 clone 运行。