news 2026/7/10 12:45:56

AKShare 1.13.0 获取 SHFE 行情数据:Python 脚本实现 24 品种日频数据批量下载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AKShare 1.13.0 获取 SHFE 行情数据:Python 脚本实现 24 品种日频数据批量下载

AKShare 1.13.0 实现上海期货交易所24品种日频数据自动化采集方案

对于量化交易和金融数据分析而言,获取准确、及时的期货市场数据是构建策略的基础。上海期货交易所作为国内重要的商品期货交易平台,其金属、能源化工等品种的行情数据具有极高的分析价值。本文将介绍如何利用AKShare 1.13.0版本构建一个完整的SHFE数据自动化采集系统。

1. 环境配置与核心工具链

在开始数据采集前,需要确保Python环境已安装以下核心组件:

# 基础环境检查清单 import sys print(f"Python版本: {sys.version}") # 应确保Python版本≥3.8 # 必需库安装命令 """ pip install akshare==1.13.0 pip install pandas>=2.0.0 pip install sqlalchemy>=2.0.0 # 如需数据库存储 """

AKShare 1.13.0版本针对期货数据接口进行了多项优化:

  • 新增了上海期货交易所的氧化铝期货数据
  • 修复了历史数据获取时的时区处理问题
  • 优化了数据返回的字段排序逻辑

提示:建议使用虚拟环境管理项目依赖,避免版本冲突。可通过python -m venv shfe_env创建专属环境。

2. SHFE全品种数据获取实战

上海期货交易所目前上市交易的24个品种可分为四大类:

品种类别包含品种
贵金属黄金、白银
基本金属铜、铜(BC)、铝、锌、铅、镍、锡、氧化铝
黑色金属螺纹钢、线材、热轧卷板、不锈钢
能源化工原油、低硫燃料油、燃料油、石油沥青、丁二烯橡胶、天然橡胶、20号胶、纸浆

获取当日全品种行情数据的核心代码如下:

import akshare as ak from datetime import datetime import pandas as pd def get_shfe_daily_all(): """获取SHFE全部品种当日行情""" date_str = datetime.now().strftime('%Y%m%d') try: df = ak.get_shfe_daily(date=date_str) # 数据清洗 df = df[~df['symbol'].str.contains('小计|合计')] # 过滤汇总行 df['date'] = pd.to_datetime(date_str) return df.sort_values('variety') except Exception as e: print(f"数据获取失败: {str(e)}") return pd.DataFrame() # 执行采集 shfe_data = get_shfe_daily_all() if not shfe_data.empty: print(f"成功获取{len(shfe_data['variety'].unique())}个品种数据")

3. 数据持久化与异常处理

为保证数据的完整性和可追溯性,建议采用以下存储策略:

本地文件存储方案:

def save_to_csv(data, path='shfe_data'): """按日期分品种保存CSV""" date_str = datetime.now().strftime('%Y%m%d') for variety, group in data.groupby('variety'): filename = f"{path}/{variety}_{date_str}.csv" group.to_csv(filename, index=False, encoding='utf_8_sig') # 数据库存储方案(MySQL示例) def save_to_db(data, table_name='shfe_daily'): from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://user:pass@localhost:3306/futures') data.to_sql(table_name, engine, if_exists='append', index=False)

健壮性增强措施:

  • 网络异常重试机制
  • 数据完整性校验
  • 重复数据过滤
def robust_data_fetch(max_retries=3): for i in range(max_retries): try: data = get_shfe_daily_all() if data.empty: raise ValueError("返回数据为空") # 校验关键字段 assert 'close' in data.columns return data except Exception as e: print(f"尝试 {i+1}/{max_retries} 失败: {str(e)}") time.sleep(5) return pd.DataFrame()

4. 定时任务与自动化部署

对于需要持续跟踪市场的情况,可配置自动化采集系统:

Windows任务计划程序配置:

  1. 创建shfe_collector.py主脚本
  2. 设置每日15:30(收盘后)执行
  3. 配置日志输出路径

Linux crontab配置示例:

# 每天下午3点30分执行 30 15 * * * /usr/bin/python3 /path/to/shfe_collector.py >> /var/log/shfe_collector.log 2>&1

容器化部署方案(Docker示例):

FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "shfe_collector.py"]

构建命令:

docker build -t shfe-collector . docker run -d --restart unless-stopped -v ./data:/app/data shfe-collector

5. 数据分析应用场景示例

获取的SHFE数据可应用于以下典型场景:

技术指标计算:

def calculate_technical(df): """计算常见技术指标""" df['MA5'] = df['close'].rolling(5).mean() df['MA20'] = df['close'].rolling(20).mean() df['ATR'] = df['high'] - df['low'] # 简化版ATR return df # 按品种应用 technical_data = shfe_data.groupby('variety').apply(calculate_technical)

跨品种价差分析:

def analyze_spread(copper, aluminum): """铜铝价差分析""" spread = copper['close'] - aluminum['close'] return { 'mean': spread.mean(), 'max': spread.max(), 'min': spread.min(), 'current': spread.iloc[-1] }

实际应用中,这些数据还可用于:

  • 量化策略回测
  • 基本面分析
  • 风险价值(VaR)计算
  • 市场流动性监测

通过AKShare获取的标准化数据,研究人员可以快速构建各类分析模型,而无需从零开始处理复杂的数据采集问题。这种自动化的数据解决方案特别适合需要长期跟踪多个品种的机构投资者和专业研究人员。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 12:45:27

终极Switch游戏文件管理器:NSC_BUILDER完全指南

终极Switch游戏文件管理器:NSC_BUILDER完全指南 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryption fro…

作者头像 李华
网站建设 2026/7/10 12:44:38

OpenCore Legacy Patcher技术深度解析:架构揭秘与实战指南

OpenCore Legacy Patcher技术深度解析:架构揭秘与实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher作为一款革命性…

作者头像 李华
网站建设 2026/7/10 12:43:30

DDrawCompat终极指南:3步让经典游戏在Windows 10/11完美运行

DDrawCompat终极指南:3步让经典游戏在Windows 10/11完美运行 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/…

作者头像 李华
网站建设 2026/7/10 12:42:09

如何快速批量下载抖音视频:免费无水印下载终极指南

如何快速批量下载抖音视频:免费无水印下载终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…

作者头像 李华