Python股票实时价格API快速接入指南
一、核心接口功能介绍
对于大多数股票行情需求,主要关注两个核心接口。今天我们就以脉动行情数据提供的股票实时价格API来举例。
1. 实时行情数据接口
http://39.107.99.235:1008/getQuote.php?code=600519
获取最新价格、成交量、买卖盘口等实时信息,适用于:
- 实时监控股价变动
- 交易信号触发
- 风险预警系统
2. 历史K线数据接口
http://39.107.99.235:1008/redis.php?code=600519&time=1m&rows=100
获取不同周期的K线图数据,适用于:
- 技术分析图表展示
- 策略回测验证
- 趋势分析研究
三、Python快速实现代码
3.1 环境准备
pip install requests pandas
3.2 实时行情数据获取
import requests import pandas as pd import time class StockDataAPI: def __init__(self): self.base_url = "http://39.107.99.235:1008" # 频率控制:每个股票每秒最多3次 self.last_request = {} def get_realtime_data(self, stock_code): """获取股票实时行情数据""" # 频率控制检查 current_time = time.time() if stock_code in self.last_request: if current_time - self.last_request[stock_code] < 0.34: # 3次/秒 print(f"频率限制:请稍后再请求 {stock_code}") return None self.last_request[stock_code] = current_time try: # 构建请求URL url = f"{self.base_url}/getQuote.php?code={stock_code}" # 发送请求(启用gzip压缩提升速度) headers = {'Accept-Encoding': 'gzip'} response = requests.get(url, headers=headers, timeout=5) response.raise_for_status() # 解析数据 data = response.json() if data.get('code') == 200: quote = data['data']['body'] # 格式化显示 result = { '股票代码': quote['StockCode'], '最新价': quote['Price'], '涨跌幅': f"{quote.get('DiffRate', 0):.2f}%", '成交量': quote['TotalVol'], '时间': quote['Time'], '买一价': quote['BP1'], '买一量': quote['BV1'], '卖一价': quote['SP1'], '卖一量': quote['SV1'] } return result except Exception as e: print(f"获取实时数据失败: {e}") return None # 使用示例 api = StockDataAPI() # 获取单个股票数据 btc_data = api.get_realtime_data("600519") if btc_data: print("股票贵州茅台实时行情:") for key, value in btc_data.items(): print(f" {key}: {value}") # 批量获取多个股票 stocks = ["600519", "000858"] for stock in stocks: data = api.get_realtime_data(stock) if data: print(f"\n{stock}: {data['最新价']} ({data['涨跌幅']})") time.sleep(0.35) # 控制请求频率3.3 K线数据获取
def get_kline_data(self, stock_code, period="1m", limit=100): """ 获取K线数据 参数: stock_code: 股票代码 period: 时间周期 (1m, 5m, 15m, 30m, 1h, 1d, 1M) limit: 获取数据条数 返回: DataFrame格式的K线数据 """ try: url = f"{self.base_url}/redis.php" params = { 'code': stock_code, 'time': period, 'rows': limit } headers = {'Accept-Encoding': 'gzip'} response = requests.get(url, params=params, headers=headers, timeout=5) response.raise_for_status() # 解析K线数据 kline_data = response.json() # 转换为DataFrame columns = ['时间戳', '开盘价', '最高价', '最低价', '收盘价', '时间', '成交量'] df = pd.DataFrame(kline_data, columns=columns) # 转换时间格式 df['时间'] = pd.to_datetime(df['时间']) df.set_index('时间', inplace=True) return df except Exception as e: print(f"获取K线数据失败: {e}") return None # 使用示例 kline_data = api.get_kline_data("000858", period="1h", limit=50) if kline_data is not None: print(f"获取到 {len(kline_data)} 条K线数据") print(kline_data[['开盘价', '收盘价', '成交量']].tail()) # 简单技术指标计算 kline_data['MA5'] = kline_data['收盘价'].rolling(window=5).mean() kline_data['MA10'] = kline_data['收盘价'].rolling(window=10).mean() print("\n技术指标:") print(kline_data[['收盘价', 'MA5', 'MA10']].tail())五、使用建议
- 错误处理:添加适当的异常处理和重试机制
- 数据缓存:对于不频繁变动的数据,考虑本地缓存
- 连接复用:使用Session对象复用HTTP连接
- 数据验证:对返回的数据进行有效性检查
六、总结
通过Python快速接入股票数据API,开发者可以轻松构建各种金融数据分析应用。无论是简单的行情监控还是复杂的量化交易系统,都能通过这些基础接口快速实现。
本文介绍的实现方案具有以下特点:
- 简单易用:代码简洁,易于理解和修改
- 功能全面:覆盖实时行情和K线数据核心需求
- 稳定可靠:内置频率控制和错误处理机制
- 扩展性强:可作为更复杂系统的基础模块