我用 3 行 Python 连接 Crypto Exchange API

发布: (2026年3月28日 GMT+8 12:46)
8 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供您希望翻译的正文内容,我将为您翻译成简体中文。)

我需要连接加密交易所来构建交易机器人

API 听起来令人生畏。然后我安装了一个 Python 库,用三行代码就获取了我的余额。从那里到实际下单并不困难。

以下是完整的路径——从创建账户到在 Python 中下第一笔订单,包含我一路上犯的所有错误。

API 密钥到底是什么?

它是一个密码,允许你的代码直接与交易所通信,而无需登录网站。你把这个密钥交给你的 Python 脚本,代码就能立刻:

  • 检查余额
  • 获取价格数据
  • 下单

为什么要这么做? 手动交易意味着要 24/7 盯着图表。你会因为睡觉而错过凌晨 3 点的暴跌,或者因为“也许会涨得更高”而持仓太久。API 让你可以把这项工作交给机器人。

选择交易所

对于自动交易来说,费用比其他任何因素都更重要。当你的机器人每月交易十次时,0.1 % 的费用差异在一年内会累积。

交易所Maker 费用全球可访问性ccxt 支持
MEXC0 %(现货)
Bitget0.1 %
OKX0.08 %

我在 Bitget 上运行我的机器人,但如果今天重新开始,我会选择 MEXC —— 现货 Maker 费用为零。对于自动交易的机器人来说,这就是不落在桌面上的免费收益。创建账户免费,约需五分钟。

创建您的 API 密钥

拥有账户后:

  1. 登录 → 个人资料图标API 管理
  2. 点击 “Create API Key”(创建 API 密钥)
  3. 权限:启用 Read(读取)和 Trade(交易)。 Leave Withdraw OFF(保持提现关闭)——务必不要打开此项。
  4. 复制 API 密钥和密钥(secret)

将它们保存到项目根目录的 .env 文件中:

API_KEY=your_api_key_here
API_SECRET=your_secret_here

在首次提交之前,将 .env 添加到 .gitignore 。如果你把 API 密钥推送到 GitHub,恭喜你——你已经把交易所凭证公开到了整个互联网。

连接 ccxt

ccxt 是一个 Python 库,使用统一的接口即可对接 100 多家交易所。你为 MEXC 编写的代码同样适用于 Bitget、Binance、OKX —— 语法完全一致。

pip install ccxt python-dotenv

获取余额(三行代码)

import ccxt
import os
from dotenv import load_dotenv

load_dotenv()

exchange = ccxt.mexc({
    'apiKey': os.getenv('API_KEY'),
    'secret': os.getenv('API_SECRET'),
    'enableRateLimit': True,   # 自动限制请求频率
})

# 实际工作——三行代码
balance = exchange.fetch_balance()
usdt = balance['USDT']['total']
print(f'USDT balance: {usdt}')

就这样。它可以工作。

enableRateLimit: True 告诉 ccxt 自动限流请求。如果不启用,你会过快地请求 API,导致 429 错误。

获取K线数据

ohlcv = exchange.fetch_ohlcv('BTC/USDT', '1d', limit=30)
# → [[timestamp, open, high, low, close, volume], ...]

一行代码即可获取最近 30 天的日线 K 线。将其放入 pandas DataFrame,计算你的指标,就拥有了交易机器人雏形。

Source:

首次下单

不要一开始就使用真实资金。 首先构建一个 DRY_RUN 模式。你的代码会走完整个流程——获取价格、计算信号、决定是否买入——但会跳过实际发送订单的最后一步。

DRY_RUN 模式下运行一周。如果没有出现异常情况,再以极小的金额(例如 $1 USDT)切换到实盘。

# Market buy
if not DRY_RUN:
    order = exchange.create_market_buy_order('BTC/USDT', amount)
    print(f'Order placed: {order["id"]}')
else:
    print(f'[DRY_RUN] Skipping order: BTC/USDT {amount}')

简单。使用 create_market_buy_order 下市价单,使用 create_limit_buy_order 下限价单。ccxt 把各交易所的差异抽象掉,所以为 MEXC 编写的代码理论上也能在 Bitget 上运行(实际使用中偶尔会有小差异,但大多数情况下都能正常工作)。

让我卡住的地方

问题发生了什么解决方案 / 缓解措施
速率限制在开发期间在紧密循环中调用 API,导致即使使用 enableRateLimit 仍出现 429 错误。保持大约每秒 1 次请求,或在循环中显式加入 time.sleep(1)
已启用提现权限在创建第一个密钥时不小心打开了提现功能。保持提现 关闭。如果开启了,请立即重新生成密钥。
.env 提交到 git将 API 密钥推送到公开仓库。在首次提交之前将 .env 添加到 .gitignore。如果已经推送,请撤销该密钥并重新生成一个。
时间戳漂移电脑时钟偏差几分钟 → InvalidNonce / Timestamp outside recv_window启用 NTP 时间同步(例如在 Linux 上运行 ntpdate pool.ntp.org)。
最小订单金额尝试在 Bitget 下 $1 的订单,结果静默失败。检查每个交易所的最小订单规模(Bitget 现货 BTC/USDT 大约 $5,MEXC 大约 $1)。

如果你还没有交易所账户,可以在此创建。在运行机器人时,零手续费确实能带来显著差异。

总结

API 访问比我预期的要容易得多。ccxt 处理了繁琐的部分——身份验证、速率限制、交易所特有的怪癖——这样你就可以专注于策略本身。祝编码愉快,理性交易!

快速设置检查清单

  • Withdrawal permissionsOFF
  • .env → 永不提交到 Git
  • Start with DRY_RUN
  • First live test$1 USDT

一旦你让它正常工作,下一步就是编写交易逻辑:计算技术指标、生成信号并执行交易。我最初使用 EMA Crossover 策略——这另有篇文章详述。

本文基于个人经验。非金融建议——请自行承担风险,仅使用可承受损失的资金进行交易。本文包含联盟链接。

0 浏览
Back to Blog

相关文章

阅读更多 »

用小工具解决 venv 头疼问题?

Python 虚拟环境的问题:Python 的虚拟环境非常棒——但直到你真的尝试使用它们时才会发现问题。每个项目都有自己的 .venv,但……