美国股票市场数据API的完整对接指南,包含NYSE、NASDAQ等主要交易所的实时行情、历史数据、公司信息等核心功能

news/2025/9/26 16:55:35/文章来源:https://www.cnblogs.com/CryptoRzz/p/19113810

一、接口概览

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

https://api.stocktv.top

2.3 请求头设置

X-Api-Key: YOUR_API_KEY
Content-Type: application/json

三、核心接口说明

3.1 市场列表接口

获取美国交易所股票列表

接口地址

GET /stock/stocks

请求参数

参数 必选 说明 示例值
countryId 国家ID(美国为1) 1
exchangeId 交易所ID(1=NYSE, 2=NASDAQ) 1
pageSize 每页数量 100
page 页码 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 股票详情查询

获取指定股票实时行情

接口地址

GET /stock/queryStocks

请求参数

参数 必选 说明 示例值
id 股票ID 7203

响应示例

{"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 指数数据

获取美国主要指数行情

接口地址

GET /stock/indices

请求参数

参数 必选 说明 示例值
countryId 国家ID(美国为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线数据

获取股票历史价格数据

接口地址

GET /stock/kline

请求参数

参数 必选 说明 示例值
pid 股票ID 7203
interval 时间粒度 PT15M(15分钟)
P1D(日线)

响应示例

{"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 盘前盘后数据

获取盘前盘后交易数据

接口地址

GET /us/prepost

请求参数

参数 必选 说明 示例值
symbol 股票代码 AAPL

响应示例

{"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 期权数据

获取期权合约信息

接口地址

GET /us/options

请求参数

参数 必选 说明 示例值
symbol 股票代码 AAPL
expiration 到期日期(YYYYMMDD) 20241220

响应示例

{"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 财务数据

获取公司财务报表

接口地址

GET /us/financials

请求参数

极速 必选 说明 示例值
symbol 股票代码 AAPL
period 年度/季度 annual, quarterly

响应示例

{"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连接

wss://ws-api.stocktv.top/connect?key=YOUR_API_KEY

5.2 订阅消息

{"action": "subscribe","pids": [7203, 7204]  // 订阅的股票ID列表
}

5.3 实时数据格式

{"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秒发送心跳消息:

{"action": "ping"}

六、代码示例

6.1 Python获取股票数据

import requestsdef 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实时数据订阅

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);}@Overridepublic void onOpen(ServerHandshake handshakedata) {System.out.println("Connected to US Stock API");// 订阅AAPL和MSFT股票send("{\"action\":\"subscribe\",\"pids\":[7203, 7204]}");}@Overridepublic void onMessage(String message) {System.out.println("Received: " + message);// 实际应用中解析JSON并处理实时数据}@Overridepublic void onClose(int code, String reason, boolean remote) {System.out.println("Connection closed: " + reason);}@Overridepublic 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线数据

const axios = require('axios');async function getKlineData() {try {const response = await axios.get('https://api.stocktv.top/stock/kline', {params: {pid: 7203,        // AAPL股票IDinterval: '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 数据缓存策略

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] = quotereturn quote

7.2 错误处理与重试

import requests
import timedef 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 dataelif 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('message')}")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 实时数据批处理

class RealTimeBatchProcessor:def __init__(self, batch_size=10, batch_interval=0.5):self.batch_size = batch_sizeself.batch_interval = batch_intervalself.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_timedef process_batch(self, symbol):"""处理缓冲区的数据"""if symbol not in self.buffer or not self.buffer[symbol]:returndata_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 错误代码表

错误码 含义 解决方案
400 Request parameter error Check request parameters
401 Authentication error Check API Key
403 Access denied Check account privileges
404 Data not found Check symbol
429 Too many requests Reduce request frequency
500 Server error Contact technical support

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习(十):逻辑回归的代价函数 - 教程

深度学习(十):逻辑回归的代价函数 - 教程2025-09-26 16:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

wordpress知识管理系统seo wordpress 插件

第1题:【 单选题】 执行以下脚本后舞台上的角色将 ?( ) A:先克隆自身,克隆体出现后被删除 B:先克隆自身,克隆体出现后删除本体 C:克隆出自身后本体与克隆体同时被删除 D:克隆出自身后本体与克隆体被不会被删除 【正确答案】: A 【试题解析】 : 第2题:【 单选题】…

Spring Boot启动报错:Failed to configure a DataSource 全面解析与解决方案 - 教程

Spring Boot启动报错:Failed to configure a DataSource 全面解析与解决方案 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

深入理解 CSS 浮动:从原理到实战应用​ - space

深入理解 CSS 浮动:从原理到实战应用 ** 在 CSS 布局的发展历程中,浮动(Float)曾是实现页面布局的核心技术之一。尽管如今 Flexbox 和 Grid 布局已成为主流,但浮动依然在特定场景中发挥着重要作用,尤其是在处理图…

Winform程序中将datagridview导出到excel (推荐)

使用DEEPSEEK推荐的导出方法,好的很! 用前要用nuget 安装 ClosedXML 插件包using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.T…

第二章Pycharm和Jupiter

第二章Pycharm和Jupiter 一.Pycharm 在python console里的操作如下:右侧会像matlab一样显示变量二.Jupyter 1.下载Jupyter所需要的包 先进入环境(激活) conda activate pytorchnow conda install nb_conda2.进入Jup…

[吾爱原创] 【小众应用】鼠标键盘操作可视化设备v1.1 可用于教育培训/演示/远程辅助等

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

微服务基础3-服务保护与分布式事务 - 详解

微服务基础3-服务保护与分布式事务 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

网站首页列表布局设计淘宝关键词指数查询

使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用&#xff0c;但是列多、行多的时候速度很慢&#xff0c;之前测试过Sylvan.Data.Excel包的用法&#xff0c;如果只是读取Excel文件内容的话&#xff0c;还可以使用ExcelDataReader包&#xff0c;后者是C#开…

使用parted命令扩容vm内磁盘分区大小

假如已经在VMware的设置里扩容了磁盘大小,接下来需要在系统内调整大小,按如下操作: 0、查看磁盘情况: root@ubuntu:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 160G 0 disk ├─s…

pyinstaller

pyinstaller --onefile --windowed -i binglish.ico --add-data "binglish.ico;." --hidden-import "pystray._win32" binglish.py 使用 PyInstaller 工具将 Python 脚本 binglish.py 打包成一个独…

wordpress 子网站重命名东莞毛织厂家东莞网站建设

&#x1f388; 作者&#xff1a;互联网-小啊宇 &#x1f388; 简介&#xff1a; CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作&#xff0c;擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

帮建网站wordpress微信个人支付

介绍&#xff1a; Python推导式是一种简洁、高效的创建列表、字典或集合的方法。它使用一种类似于数学公式的语法&#xff0c;通过一个表达式和一个循环来生成一个新的数据结构。 以下是一些常见的Python推导式&#xff1a; 列表推导式&#xff08;List Comprehension&#xf…

国外网站配色平凉哪有做网站的

【为什么要用多线程&#xff1f;】 传统的图形用户界面应用程序都仅仅有一个运行线程&#xff0c;而且一次仅仅运行一个操作。假设用户从用户界面中调用一个比較耗时的操作&#xff0c;当该操作正在运行时&#xff0c;用户界面一般会冻结而不再响应。这个问题能够用事件处理和多…

吴江区建设局网站中装建设公司待遇好吗

容器分为三类&#xff0c;顺序容器&#xff0c;关联容器和适配器。顺序容器又分为连续的容器&#xff08;vector&#xff0c;array&#xff09;&#xff0c;顺序容器中的离散容器&#xff08;list&#xff0c;slist&#xff0c;forward_list&#xff09;&#xff0c;离连形的de…

pc网站 手机网站 微信长春公司做网站

笔记整理&#xff1a;刘尧锟&#xff0c;天津大学硕士链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3404835.3462900动机面对大量的机器学习&#xff08;ML&#xff09;方法&#xff0c;为给定的数据集和任务选择合适的方法是一个挑战。一般来说&#xff0c;ML方法或数…

wordpress 双语站点自己使用原生php做网站性能

目录 1.题目描述 一 2.解题想法图解 2.1直接解 2.2巧解 3.题目描述二 3.1.1思路1 3.1.2 思路2 4.结语 1.题目描述 一 实现现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解题想法图解 2.…

Python 标准库 typing 类型注解标注

Python 标准库 typing 类型注解标注Python 标准库 typing 类型注解标注说明 《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习…

redis-Geospatial类型基本命令

redis-Geospatial类型基本命令redis在3.2版本中引入了Geospatial数据类型。该类别本质上是一种集合,不过集合中的元素比较特殊, 是一种由三部分构成的数据结构,这种数据结构称之为空间元素: 经度: longitude,有效…