找回密码
 立即注册
首页 业界区 安全 美国股票市场数据API的完整对接指南,包含NYSE、NASDAQ ...

美国股票市场数据API的完整对接指南,包含NYSE、NASDAQ

轨项尺 2025-9-28 16:36:32
一、接口概览

1.1 支持交易所

交易所代码 交易所名称 覆盖股票数量
NYSE纽约证券交易所2800+
NASDAQ纳斯达克交易所3300+
AMEX美国证券交易所500+
1.2 数据特性


  • 实时行情:毫秒级延迟
  • 历史数据:支持最长20年历史K线
  • 基本面数据:包含PE比率、市值等指标
  • 多维度数据:指数、盘前盘后、期权数据
  • 数据格式:统一JSON格式
  • 货币单位:所有价格均为美元(USD)
二、接入准备

2.1 获取API Key

联系官方获取密钥:https://stocktv.top
2.2 请求基础URL
  1. https://api.stocktv.top
复制代码
2.3 请求头设置
  1. X-Api-Key: YOUR_API_KEY Content-Type: application/json
复制代码
三、核心接口说明

3.1 市场列表接口

获取美国交易所股票列表
接口地址
  1. GET /stock/stocks
复制代码
请求参数
参数 必选 说明 示例值
countryId国家ID(美国为1)1
exchangeId交易所ID(1=NYSE, 2=NASDAQ)1
pageSize每页数量100
page页码1
响应示例
  1. { "code": 200, "data": { "records": [ { "id": 7203, // 股票唯一ID "symbol": "AAPL", // 股票代码 "name": "Apple Inc.", "last": 175.43, // 最新价 "chgPct": 1.25, // 涨跌幅% "volume": 58439210, // 成交量 "high": 175.85, // 当日最高 "low": 173.90, // 当日最低 "open": true, // 是否开市 "cfd": false, // 是否为CFD "marketCap": 2735000000000 // 市值(美元) } ], "total": 3300, "pages": 33 } }
复制代码
3.2 股票详情查询

获取指定股票实时行情
接口地址
  1. GET /stock/queryStocks
复制代码
请求参数
参数 必选 说明 示例值
id股票ID7203
响应示例
  1. { "code": 200, "data": [ { "id": 7203, "symbol": "AAPL", "name": "Apple Inc.", "last": 175.43, "prevClose": 173.75, // 前收盘价 "open": 174.20, // 开盘价 "high": 175.85, "low": 173.90, "volume": 58439210, "avgVolume": 45218900, // 平均成交量 "peRatio": 28.7, // 市盈率 "eps": 6.11, // 每股收益 "dividendYield": 0.55, // 股息率 "beta": 1.23, // Beta值 "sector": "Technology" // 行业分类 } ] }
复制代码
3.3 指数数据

获取美国主要指数行情
接口地址
  1. GET /stock/indices
复制代码
请求参数
参数 必选 说明 示例值
countryId国家ID(美国为1)1
响应示例
  1. { "code": 200, "data": [ { "id": 1, "symbol": "DJI", // 道琼斯指数 "name": "Dow Jones Industrial Average", "last": 38750.25, "change": 325.50, // 涨跌额 "changePct": 0.85, // 涨跌幅% "high": 38820.75, "low": 38550.30, "prevClose": 38424.75, "time": 1716458537 // 更新时间戳 }, { "id": 2, "symbol": "SPX", // 标普500指数 "name": "S&P 500 Index", "last": 5125.60, "change": 18.25, "changePct": 0.36, "high": 5130.45, "low": 5110.20, "prevClose": 5107.35, "time": 1716458537 }, { "id": 3, "symbol": "IXIC", // 纳斯达克指数 "name": "NASDAQ Composite", "last": 16250.80, "change": 75.30, "changePct": 0.47, "high": 16280.50, "low": 16180.25, "prevClose": 16175.50, "time": 1716458537 } ] }
复制代码
3.4 历史K线数据

获取股票历史价格数据
接口地址
  1. GET /stock/kline
复制代码
请求参数
参数 必选 说明 示例值
pid股票ID7203
interval时间粒度PT15M(15分钟)P1D(日线)
响应示例
  1. { "code": 200, "data": [ { "time": 1725004800000, // 时间戳(ms) "open": 174.20, "high": 175.85, "low": 173.90, "close": 175.43, "volume": 58439210 }, { "time": 1725003900000, "open": 173.75, "high": 174.50, "low": 173.50, "close": 174.20, "volume": 45218900 } ] }
复制代码
四、高级数据接口

4.1 盘前盘后数据

获取盘前盘后交易数据
接口地址
  1. GET /us/prepost
复制代码
请求参数
参数 必选 说明 示例值
symbol股票代码AAPL
响应示例
  1. { "code": 200, "data": { "preMarket": { "lastPrice": 176.20, "change": 0.77, "changePercent": 0.44, "volume": 1254321, "time": "07:45:23" }, "postMarket": { "lastPrice": 175.80, "change": 0.37, "changePercent": 0.21, "volume": 876543, "time": "18:32:11" } } }
复制代码
4.2 期权数据

获取期权合约信息
接口地址
  1. GET /us/options
复制代码
请求参数
参数 必选 说明 示例值
symbol股票代码AAPL
expiration到期日期(YYYYMMDD)20241220
响应示例
  1. { "code": 200, "data": { "symbol": "AAPL", "expirations": ["2024-12-20", "2025-01-17", "2025-03-21"], "options": [ { "contractId": "AAPL241220C00175000", "strike": 175.00, // 行权价 "lastPrice": 6.45, // 最后成交价 "bid": 6.40, // 买价 "ask": 6.50, // 卖价 "volume": 1245, // 成交量 "openInterest": 5423, // 未平仓合约 "impliedVolatility": 0.35, // 隐含波动率 "type": "call" // 看涨/看跌 } ] } }
复制代码
4.3 财务数据

获取公司财务报表
接口地址
  1. GET /us/financials
复制代码
请求参数
极速 必选 说明 示例值
symbol股票代码AAPL
period年度/季度annual, quarterly
响应示例
  1. { "code": 200, "data": { "symbol": "AAPL", "financials": { "2023": { "revenue": 383285000000, // 营收 "grossProfit": 169148000000, // 毛利润 "netIncome": 96950000000, // 净利润 "eps": 6.11, // 每股收益 "dividend": 0.96 // 每股股息 }, "2022": { "revenue": 365817000000, "grossProfit": 152836000000, "netIncome": 99803000000, "eps": 6.05, "dividend": 0.92 } } } }
复制代码
五、实时数据推送

5.1 WebSocket连接
  1. wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY
复制代码
5.2 订阅消息
  1. { "action": "subscribe", "pids": [7203, 7204] // 订阅的股票ID列表 }
复制代码
5.3 实时数据格式
  1. { "pid": "7203", // 股票ID "symbol": "AAPL", // 股票代码 "last": "175.43", // 最新价 "change": "1.68", // 涨跌额 "changePct": "0.97", // 涨跌幅% "volume": "58439210", // 成交量 "bid": "175.42", // 买一价 "ask": "175.44", // 卖一价 "high": "175.85", // 当日最高 "low": "173.90", // 当日最低 "open": "174.20", // 开盘价 "prevClose": "173.75", // 前收盘 "timestamp": 1725008213 // 更新时间 }
复制代码
5.4 心跳机制

客户端需每30秒发送心跳消息:
  1. {"action": "ping"}
复制代码
六、代码示例

6.1 Python获取股票数据
  1. import requests def get_us_stocks(): """获取美国股票列表""" url = "https://api.stocktv.top/stock/stocks" params = { "countryId": 1, # 美国国家ID "exchangeId": 2, # NASDAQ交易所 "pageSize": 100, "key": "YOUR_API_KEY" } try: response = requests.get(url, params=params) if response.status_code == 200: data = response.json() if data["code"] == 200: for stock in data["data"]["records"]: print(f"{stock['symbol']}: {stock['name']} - ${stock['last']}") else: print(f"API Error: {data['message']}") else: print(f"Request failed with status: {response.status_code}") except Exception as e: print(f"Error fetching stock list: {str(e)}") # 调用函数 get_us_stocks()
复制代码
6.2 Java实时数据订阅
  1. import org.java_websocket.client.WebSocketClient; import org.java_websocket.handshake.ServerHandshake; import java.net.URI; public class USStockWS extends WebSocketClient { public USStockWS(URI serverUri) { super(serverUri); } @Override public void onOpen(ServerHandshake handshakedata) { System.out.println("Connected to US Stock API"); // 订阅AAPL和MSFT股票 send("{"action":"subscribe","pids":[7203, 7204]}"); } @Override public void onMessage(String message) { System.out.println("Received: " + message); // 实际应用中解析JSON并处理实时数据 } @Override public void onClose(int code, String reason, boolean remote) { System.out.println("Connection closed: " + reason); } @Override public void onError(Exception ex) { ex.printStackTrace(); } public static void main(String[] args) { String wsUrl = "wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY"; USStockWS client = new USStockWS(URI.create(wsUrl)); client.connect(); } }
复制代码
6.3 Node.js获取K线数据
  1. const axios = require('axios'); async function getKlineData() { try { const response = await axios.get('https://api.stocktv.top/stock/kline', { params: { pid: 7203, // AAPL股票ID interval: 'P1D' // 日线数据 }, headers: { 'X-Api-Key': 'YOUR_API_KEY' } }); console.log('AAPL Historical Data:'); response.data.data.forEach(kline => { const date = new Date(kline.time); console.log(`${date.toISOString().split('T')[0]}: $${kline.open} - $${kline.close}`); }); } catch (error) { console.error('API Error:', error.response ? error.response.data : error.message); } } getKlineData();
复制代码
七、最佳实践

7.1 数据缓存策略
  1. from cachetools import TTLCache import time # 创建缓存,有效期5秒 stock_cache = TTLCache(maxsize=100, ttl=5) def get_stock_quote(stock_id): """获取股票行情(带缓存)""" # 检查缓存 if stock_id in stock_cache: return stock_cache[stock_id] # 调用API获取数据 quote = fetch_from_api(stock_id) # 存入缓存 if quote: stock_cache[stock_id] = quote return quote
复制代码
7.2 错误处理与重试
  1. import requests import time def fetch_with_retry(url, params, max_retries=3): """带重试机制的API请求""" for attempt in range(max_retries): try: response = requests.get(url, params=params, timeout=5) if response.status_code == 200: data = response.json() if data.get("code") == 200: return data elif data.get("code") == 429: # 请求过多 retry_after = int(data.get("retryAfter", 10)) print(f"请求过于频繁,等待 {retry_after} 秒后重试...") time.sleep(retry_after) else: print(f"API返回错误: {data.get(&#39;message&#39;)}") else: print(f"请求失败,状态码: {response.status_code}") except Exception as e: print(f"请求异常: {str(e)}") if attempt < max_retries - 1: wait = 2 ** attempt # 指数退避 print(f"等待 {wait} 秒后重试 (尝试 {attempt+1}/{max_retries})") time.sleep(wait) print(f"请求失败,已达最大重试次数 {max_retries}") return None
复制代码
7.3 实时数据批处理
  1. class RealTimeBatchProcessor: def __init__(self, batch_size=10, batch_interval=0.5): self.batch_size = batch_size self.batch_interval = batch_interval self.buffer = {} self.last_process_time = time.time() def add_data(self, symbol, data): """添加实时数据到缓冲区""" if symbol not in self.buffer: self.buffer[symbol] = [] self.buffer[symbol].append(data) # 检查是否达到批处理条件 current_time = time.time() if (len(self.buffer[symbol]) >= self极速_size or current_time - self.last_process_time >= self.batch_interval): self.process_batch(symbol) self.last_process_time = current_time def process_batch(self, symbol): """处理缓冲区的数据""" if symbol not in self.buffer or not self.buffer[symbol]: return data_points = self.buffer[symbol] # 计算统计指标 prices = [d["last"] for d in data_points] volumes = [d["volume"] for d in data_points] avg_price = sum(prices) / len(prices) max_price = max(prices) min_price = min(prices) total_volume = sum(volumes) print(f"\n{symbol} 实时数据统计 (最近 {len(data_points)} 个更新):") print(f"平均价格: ${avg_price:.2f}, 最高: ${max_price:.2f}, 最低: ${min_price:.2f}") print(f"总成交量: {total_volume}") # 清空缓冲区 self.buffer[symbol] = []
复制代码
八、数据字典

8.1 美国主要指数

代码 指数名称 说明
DJI道琼斯工业平均指数30家大型蓝筹股
SPX标普500指数500家大型公司
IXIC纳斯达克综合指数所有纳斯达克上市公司
RUT罗素2000指数2000家小型公司
8.2 交易时间(美国东部时间)

交易时段 时间 说明
盘前交易04:00-09:30盘前交易时段
常规交易09:30-16:00主要交易时段
盘后交易16:00-20:00盘后交易时段
8.3 行业分类

分类代码 行业名称
TECHNOLOGY科技
FINANCIAL金融
HEALTHCARE医疗保健
CONSUMER消费品
INDUSTRIAL工业
10.2 错误代码表

错误码 含义 解决方案
400Request parameter errorCheck request parameters
401Authentication errorCheck API Key
403Access deniedCheck account privileges
404Data not foundCheck symbol
429Too many requestsReduce request frequency
500Server errorContact technical support

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

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