mcpField
A
alpaca-data

alpaca-data

github.com/gauss314数据与数据库252255 次安装19 周前更新
代码仓库

关于 alpaca-data

alpaca-data 是调用 Alpaca 市场数据 API 的数据技能,面向需要股票、加密货币和期权行情的开发者。它支持历史与实时数据,并提供 Python 示例和下载脚本。

主要功能

  1. 01查询股票历史 OHLCV、报价与成交
  2. 02获取加密货币和期权数据
  3. 03读取新闻、快照及活跃股筛选
  4. 04订阅股票实时数据流
  5. 05使用脚本下载行情数据

适用场景

  1. 01回测股票或加密货币策略
  2. 02获取期权合约及历史行情
  3. 03监控股票实时行情
  4. 04批量下载指定标的行情

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill alpaca-data

安装后在 Claude Code 中输入/alpaca-data确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
options_reference.md
scripts/
download_crypto_bars.py
download_options.py
download_stock_bars.py

详细介绍

Alpaca Data — 市场数据 API

提供股票、加密货币和期权的历史及实时市场数据的 API。

基础 URL: https://data.alpaca.markets
SDK: pip install alpaca-py
文档: docs.alpaca.markets


身份验证

获取 API 密钥
  1. 访问 app.alpaca.markets
  2. 创建账户(模拟交易免费)
  3. 前往“API Keys” → Generate New Keys
  4. 保存 API Key 和 Secret Key
配置
import os
from alpaca.data.historical import StockHistoricalDataClient

# Keys (requerido para datos de acciones)
API_KEY = os.getenv("APCA_API_KEY_ID")
SECRET_KEY = os.getenv("APCA_API_SECRET_KEY")

client = StockHistoricalDataClient(API_KEY, SECRET_KEY)

# Crypto NO requiere keys
from alpaca.data.historical import CryptoHistoricalDataClient
crypto_client = CryptoHistoricalDataClient()

⚠️ 绝不要将密钥硬编码到共享的代码中。


速率限制

计划请求/分钟数据
免费(IEX)200约 5 年历史数据,1 个交易所
付费(SIP)更高所有美国交易所,约 7 年
建议
  • 缓存数据 — 历史数据不会变化
  • 批量请求 — 一次调用请求多个代码
  • 使用 limit=10000 — 每次请求的上限
  • 使用 next_page_token 分页 — 适用于大量数据

数据源

数据源描述费用
iexInvestors Exchange(约占交易量的 2.5%)免费
sip所有美国交易所(综合数据)付费
boatsBlue Ocean ATS(延长交易时段)付费
otc场外交易付费

免费层级 = 仅 IEX


历史股票数据

K 线(OHLCV)
from alpaca.data.requests import StockBarsRequest
from alpaca.data.timeframe import TimeFrame
from datetime import datetime

request = StockBarsRequest(
    symbol_or_symbols=["AAPL", "GOOGL"],
    timeframe=TimeFrame.Day,
    start=datetime(2023, 1, 1),
    end=datetime(2024, 12, 31),
    feed="iex"  # free tier
)

bars = client.get_stock_bars(request)
df = bars.df  # DataFrame

可用的 TimeFrame:

  • TimeFrame.Minute / TimeFrame(5, TimeFrame.Minute)
  • TimeFrame.Hour
  • TimeFrame.Day
  • TimeFrame.Week
  • TimeFrame.Month
报价(买价/卖价)
from alpaca.data.requests import StockQuotesRequest

request = StockQuotesRequest(
    symbol_or_symbols=["AAPL"],
    start=datetime(2024, 1, 1),
    end=datetime(2024, 1, 31),
    feed="iex"
)

quotes = client.get_stock_quotes(request)
成交
from alpaca.data.requests import StockTradesRequest

request = StockTradesRequest(
    symbol_or_symbols=["AAPL"],
    start=datetime(2024, 1, 1),
    feed="iex"
)

trades = client.get_stock_trades(request)
最新数据
# Latest bar
bars = client.get_stock_latest_bar(["AAPL", "GOOGL"])

# Latest quote
quotes = client.get_stock_latest_quote(["AAPL"])

# Latest trade
trades = client.get_stock_latest_trade(["AAPL"])
快照
from alpaca.data.requests import SnapshotRequest

request = SnapshotRequest(
    symbol_or_symbols=["AAPL", "GOOGL"]
)
snapshots = client.get_snapshot(request)

历史加密货币数据

无需 API 密钥

from alpaca.data.historical import CryptoHistoricalDataClient
from alpaca.data.requests import CryptoBarsRequest
from alpaca.data.timeframe import TimeFrame
from datetime import datetime

client = CryptoHistoricalDataClient()

request = CryptoBarsRequest(
    symbol_or_symbols=["BTC/USD", "ETH/USD"],
    timeframe=TimeFrame.Day,
    start=datetime(2023, 1, 1),
    end=datetime(2024, 12, 31)
)

bars = client.get_crypto_bars(request)
df = bars.df
加密货币订单簿
from alpaca.data.requests import CryptoLatestQuoteRequest

request = CryptoLatestQuoteRequest(symbol_or_symbols=["BTC/USD"])
quotes = client.get_crypto_latest_quote(request)

历史期权数据

期权链
# Obtener contratos disponibles
from alpaca.data.requests import OptionContractsRequest

request = OptionContractsRequest(
    underlying_symbols=["AAPL"],
    expiration_date_gte="2024-01-01",  # desde esta fecha
    expiration_date_lte="2024-12-31",  # hasta esta fecha
    strike_price_gte=100,  # strikes mínimo
    strike_price_lte=200   # strikes máximo
)

contracts = client.get_option_contracts(request)
期权 K 线/成交/报价
from alpaca.data.requests import OptionBarsRequest

# Buscar contract ID primero
contract_id = "6e58f870-fe73-4583-81e4-b9a37892c36f"

request = OptionBarsRequest(
    symbol_or_contract_ids=[contract_id],
    start=datetime(2024, 1, 1),
    end=datetime(2024, 1, 31)
)

bars = client.get_option_bars(request)

期权代码参考

请参阅 ./references/options_reference.md,了解:

  • 期权代码(AAPL240119C00100000)
  • 筛选参数
  • 所需的交易级别

新闻

from alpaca.data.requests import StockNewsRequest

request = StockNewsRequest(
    symbol_or_symbols=["AAPL", "GOOGL"],
    start=datetime(2024, 1, 1),
    end=datetime(2024, 1, 31)
)

news = client.get_stock_news(request)

筛选器

from alpaca.data.requests import MostActivesRequest

request = MostActivesRequest(
    by="volume",  # volume, share, number
    top=10,
    date="2024-01-15"
)

movers = client.get_most_actives(request)

WebSocket 实时数据(可选)

from alpaca.data.stream import StockDataStream

ws = StockDataStream(API_KEY, SECRET_KEY)

async def handle_bar(bar):
    print(bar)

ws.subscribe_bars(handle_bar, "AAPL", "GOOGL")
ws.run()

下载脚本

使用 ./scripts/ 中的脚本:

# Descargar bars de acciones
python ./scripts/download_stock_bars.py --symbols AAPL,GOOGL --days 365 --output data/

# Descargar crypto
python ./scripts/download_crypto_bars.py --symbols BTC,ETH --days 90 --output data/

# Descargar option contracts
python ./scripts/download_options.py --symbol AAPL --output data/

常见错误

错误原因解决方案
403 Forbidden密钥无效或没有权限检查 API 密钥
429 Too Many Requests速率限制等待,使用缓存
Empty response没有该代码的数据检查代码
"options_enabled"该代码没有期权使用有期权的代码

与其他 API 的比较

功能AlpacaAlpha VantageData912
免费层级✅ IEX(1 个交易所)✅ 每天 25 次✅ 全部 ARS
美国股票✅✅❌
加密货币✅✅❌
期权✅❌❌
历史数据深度IEX 约 5 年有限有限
Python SDK✅ alpaca-py✅❌

选择 Alpaca: 获取美国市场数据(股票、加密货币、期权)和日内数据。
选择 Data912: 获取阿根廷市场数据。
选择 Alpha Vantage: 获取技术指标和外汇数据。

评论

支持 Markdown