Coinbase API 入门与实战指南:用 Python 让加密资产生动起来

·

关键词:Coinbase API、加密货币交易、API 密钥、Python 量化、比特币价格、自动买卖、账户余额、历史数据、技术指
标、20 日移动平均线

什么是 Coinbase API?

Coinbase API 是一组 REST 风格的接口,允许开发者在 Coinbase 或 Coinbase Pro 上 通过代码买入、卖出、查询、发送加密资产。它不仅支持现货交易,还能订阅实时行情、批量获取历史 K 线、管理钱包地址等,是搭建自动交易系统资产配置爬虫链上数据分析工具的理想入口。


三分钟认识 Coinbase


Why & Why Not:是否值得选 Coinbase API ?

优势

  1. 高流动性撮合引擎
  2. 文档完整,社区库齐全
  3. 支持欧元、美元多币种计价
  4. Prime 版本面向机构,深度极佳

局限

👉 想要体验更低费率与衍生品?先去看看有没有更划算的通道](https://okxdog.com/)


常见替代接口

若 Coinbase 收费或币种限制使你犹豫,以下平台适用:


账号体系与对应权限

版本面向人群功能亮点最小入金
Coinbase API初级个人投资者轻松收发托管钱包1 USD
Coinbase Pro API高频交易者深度撮合、蜡烛图、市价限价单1 USD
Coinbase Prime API机构、资管公司专属流动性池、OTC 大宗交易需联系商务

无官方库?社区已帮你备好

官方虽未发布 SDK,但以下开源库稳定性良好:
Python、Java、Rust、C#、Go、Ruby、Node.js、Haskell。
示例均采用 Python-coinbasecbpro


五分钟上手:创建 API 密钥

  1. 注册 → 邮件+手机双重验证
  2. 右上角头像 → Settings → API → “+ New API Key”
  3. 选定账户 & 全权限 → 填入白名单 IP → 生成 key / secret / passphrase
pip install coinbase

FAQ ①:API Key、Secret、Passphrase 分别有什么用?


实用代码示例

所有示例默认已提前完成 client = Client(key, secret) 的初始化。

1. 一键汇总所有钱包余额

accounts = client.get_accounts()
total = 0
for wallet in accounts.data:
    usd = float(wallet.native_balance.amount)
    total += usd
    print(wallet.name, wallet.native_balance)
print("总余额", total, "USD")

2. 获取实时比特币价格(可换 EUR、GBP、CNY)

price = client.get_spot_price(currency='USD')
print("BTC/USD:", price.amount)

3. 查询指定日期现货价

hist_price = client.get_spot_price(currency_pair='BTC-USD',
                                   date='2023-06-01')
print("2023-06-01 收盘价:", hist_price.amount)

👉 **看到这里,一边动手实践一边学和高手
写的一样漂亮的回测框架**](https://okxdog.com/)


进阶:获取历史 K 线与 20 SMA

  1. 安装 cbpro

    pip install cbpro pandas bta-lib
  2. 抓取 ETH-USD 历史 5 分钟数据

    import cbpro, pandas as pd, btalib
    public = cbpro.PublicClient()
    raw = public.get_product_historic_rates('ETH-USD', granularity=300)
    df = pd.DataFrame(raw,
                   columns=['time','low','high','open','close','volume'])
    df.set_index('time', inplace=True)
    sma20 = btalib.sma(df.close, period=20)
    df['sma20'] = sma20.df
    print(df.tail())

钱包操作:收发 BTC 只需三步

addr = client.get_primary_account().create_address()
print("收款地址:", addr.address)

自动买卖触发器

pm = client.get_payment_methods()[0]
btc = client.get_primary_account()

buy_price = float(client.get_buy_price(currency_pair='BTC-USD').amount)
if buy_price < 28000:
    btc.buy(amount='0.01', currency="BTC",
            payment_method=pm.id, commit=False)

sell_price = float(client.get_sell_price(currency_pair='BTC-USD').amount)
if sell_price > 35000:
    btc.sell(amount='0.01', currency="BTC",
             payment_method=pm.id, commit=False)
commit=False 为沙盒模式,实测无风险。

OAuth2 安全细节:Access & Refresh Token


踩坑预警


FAQ 快速回顾

Q1:用 Coinbase API 能够做空吗?
A:标准版不行;Coinbase Pro 可通过借币做空衍生品,需要独立开通。

Q2:可以爬全量历史成交吗?
A:可。Pro 版 get_product_trades 每次返回最新 100 条,可循环分页;单 IP 请勿超 6 req/sec。

Q3:Python SDK 连接报错 ssl.SSLError?
A:升级 urllib3 或设置环境变量 export USE_SSL=0 已解决代理冲突。

Q4:如何测试机器人而不花真钱?
A:登录 sandbox.pro.coinbase.com,注册独立账户,所有资金为测试币,行情与真实市场同步。

Q5:高频策略适合 Coinbase API 吗?
A:延迟 30–80 ms,对于亚毫秒级需求建议直接对接撮合网关或使用 WebSocket 流式深度。


下一步:把脚本搬到云端

一通百通,掌握了 Coinbase API 之后,你可以在 几分钟内把思路迁移到任意交易平台,用代码无缝联通策略与市场。祝你盘感长红!