抹茶 (MEXC) 平台的 API 如何查询交易记录
在数字货币交易领域,API (应用程序编程接口) 已经成为开发者和交易者不可或缺的工具。MEXC (抹茶) 交易所提供了一套完善的 API,允许用户以编程方式访问市场数据、执行交易以及查询账户信息,其中包括查询历史交易记录。本文将详细介绍如何使用 MEXC 平台的 API 查询交易记录,包括必要的准备工作、API 端点的选择、参数设置以及结果解析。
前期准备
在使用 MEXC API 查询交易记录之前,需要进行一些准备工作,以确保顺利访问并获取所需数据。以下是详细步骤:
- 注册 MEXC 账户 : 如果你还没有 MEXC 账户,首先需要在 MEXC 交易所官方网站上注册一个账户。注册过程通常需要提供电子邮件地址、设置密码,并按照提示完成账户验证。
- KYC 认证 : 为了符合全球各地的监管要求,并且能够使用包括交易历史查询在内的部分 API 功能,强烈建议完成 KYC (了解你的客户) 认证。KYC 认证通常需要提供身份证明文件(如护照、身份证)和地址证明文件。完成 KYC 认证后,你的账户权限将得到提升。
- 创建 API 密钥 : 登录你的 MEXC 账户后,找到并进入 API 管理页面。这个页面通常位于账户设置或安全设置部分。你需要创建一个新的 API 密钥对,其中包括 API Key 和 Secret Key。API Key 用于唯一标识你的身份,类似于用户名;Secret Key 用于对发送给 MEXC 服务器的请求进行签名,验证请求的合法性,类似于密码。 务必 将 Secret Key 妥善保管,切勿泄露给他人。创建 API 密钥时,系统可能会要求你进行二次验证,例如通过 Google Authenticator 或短信验证码。启用 API 密钥时,必须仔细选择相应的权限,确保包含读取交易记录的权限(通常称为“只读”或“交易历史”权限)。为了提高账户安全性,强烈建议设置 IP 限制,只允许特定的 IP 地址或 IP 地址段访问 API。这样,即使 API Key 和 Secret Key 被泄露,未经授权的 IP 地址也无法使用你的 API 密钥。
- 理解 MEXC API 文档 : MEXC 交易所提供了详细的 API 文档,文档中包含了所有可用的 API 端点、每个端点的参数说明、请求方法(如 GET、POST)、返回数据格式(通常为 JSON)以及可能的错误代码及其含义。在开始编写任何代码之前,花时间仔细阅读 API 文档至关重要。理解 API 的工作原理、参数要求和返回数据结构可以避免许多不必要的错误。文档通常包含示例代码,这些示例代码可以帮助你快速上手,并了解如何使用不同的编程语言调用 API。MEXC API 文档通常可以通过 MEXC 官方网站的开发者中心或相关社区论坛找到。请务必确保查阅的是最新版本的文档,因为 API 可能会随着时间的推移而更新和更改。文档中还会详细说明频率限制,即在一定时间内允许发送的请求数量,避免触发速率限制。
-
选择编程语言和开发环境
: 你可以使用任何你熟悉的编程语言来调用 MEXC API,例如 Python、Java、JavaScript、C# 等。选择一个适合你的编程习惯和项目需求的编程语言。选择一个合适的集成开发环境 (IDE),例如 VS Code、PyCharm、IntelliJ IDEA、Eclipse 等。IDE 可以提供代码编辑、调试、代码自动完成等功能,提高开发效率。在选择了合适的编程语言后,你需要安装相应的 HTTP 请求库,例如 Python 的
requests
库、Java 的HttpClient
库、JavaScript 的axios
或fetch
API 等。这些库可以简化发送 HTTP 请求和处理 API 返回数据的过程。使用 HTTP 请求库,你可以方便地构造 HTTP 请求,设置请求头、请求参数,并发送给 MEXC API 服务器。接收到 API 返回的数据后,可以使用 JSON 解析库将数据解析为程序可以处理的数据结构。
选择合适的 API 端点
MEXC API 提供多个用于查询历史交易数据的端点,为了高效地获取所需信息,务必根据具体查询需求选择最合适的端点。以下列举了常用的几个端点,并详细说明其适用场景:
-
GET /api/v3/myTrades
: 此端点专为查询指定交易对的历史成交记录而设计。通过提供交易对的符号 (symbol
) 作为参数,可以精准地获取该交易对的所有已执行交易。此端点返回的数据包含详细的交易信息,如成交时间、成交价格、成交数量以及所产生的交易手续费。例如,要查询 BTCUSDT 交易对的成交记录,需将symbol
参数设置为BTCUSDT
。 它是最常用的查询交易记录的端点,能便捷地按交易对筛选。MEXC API 会记录每一笔成功的交易,并在此接口中提供查询,确保数据的完整性和准确性。 -
GET /api/v3/allOrders
: 此端点用于检索指定交易对的所有订单,包括已成交、未成交(挂单中、部分成交等)以及已撤销的订单。同样需要提供交易对的符号 (symbol
) 作为参数。尽管此端点的核心功能是查询订单状态和信息,但其返回的数据也包含了已成交订单的执行细节,因此可以作为间接查询交易记录的替代方案。 例如,你可以通过筛选订单状态为“FILLED”(完全成交)的订单,来获取成交历史。需要注意的是,使用此端点查询交易记录可能需要进行额外的数据处理,以过滤掉非成交订单。 -
GET /api/v3/account
: 此端点主要用于查询账户的综合信息,包括可用余额、冻结余额、交易手续费率等级等。虽然它不能直接提供历史交易记录的列表,但可以用于了解账户的整体财务状况,例如交易手续费的累计扣除情况、账户余额变动等。 通过分析账户余额随时间的变化,结合其他数据源,可以间接推断出交易活动。此端点返回的交易手续费率等级信息对于计算历史交易成本也很有帮助。 注意此接口返回的数据格式是账户级别的,你需要自己处理并分析数据。
在选择 MEXC API 的具体端点时,应综合考虑以下关键因素,以确保高效、准确地获取所需数据:
-
需要查询哪些交易对的历史成交记录?
如果目标仅仅是获取特定交易对的成交记录,那么
GET /api/v3/myTrades
无疑是最佳选择,因为它提供了针对性的查询功能,避免了不必要的数据筛选。 它提供了最直接和高效的查询方式。 -
需要查询所有订单的信息,包括已成交和未成交的订单吗?
如果除了已成交的交易记录外,还需要获取未成交订单(例如挂单中、部分成交或已撤销的订单)的状态和信息,那么
GET /api/v3/allOrders
则是更合适的选择。 使用此接口,你可以全面了解订单的生命周期。 - 对交易记录的详细信息有什么具体要求,例如交易时间、成交价格、成交数量、交易手续费等? 不同的 API 端点返回的数据字段可能存在细微差异。在做出选择之前,务必仔细查阅 MEXC API 的官方文档,了解每个端点返回的具体数据结构,确保所选端点能够提供满足需求的全部信息。例如,某些端点可能不包含交易手续费的详细信息,或者时间戳的精度可能不同。
构建 API 请求
选择好 API 端点后,你需要构建 API 请求。API 请求是与交易所服务器通信的关键,它包含了你希望执行的操作和相关参数。一个精心构建的 API 请求能够确保数据的准确获取和交易的顺利执行。通常 API 请求包含以下几个重要部分:
-
URL
: API 端点的 URL 是请求的目标地址,指示了你希望访问的特定资源或功能。例如,
https://api.mexc.com/api/v3/myTrades
用于获取你的交易历史记录。确保 URL 的准确性至关重要,任何错误都可能导致请求失败。 -
HTTP 方法
: HTTP 方法定义了你对指定资源执行的操作。对于数据查询,通常使用
GET
方法。其他常用的 HTTP 方法包括POST
(用于创建新资源)、PUT
(用于更新现有资源) 和DELETE
(用于删除资源)。选择正确的 HTTP 方法对于 API 请求的成功至关重要。 -
请求头
: 请求头包含了关于请求的附加信息,例如客户端类型、内容格式和授权凭证。
Content-Type
指定了请求体的媒体类型,例如application/
。X-MEXC-APIKEY
字段是身份验证的关键,需要设置为你的 API Key,用于标识你的身份并授权访问 API。 还有可能需要设置其他头部信息,例如Accept-Language
, 用于告知服务器期望的语言种类。 -
请求参数
: 请求参数用于指定查询条件,以便从 API 获取所需的数据。例如,交易对的符号 (
symbol
) 用于指定交易市场,起始时间 (startTime
) 和结束时间 (endTime
) 用于限定交易历史记录的时间范围,交易 ID (orderId
) 用于查询特定订单的详细信息。请求参数通常以 Query String 的形式添加到 URL 中,例如https://api.mexc.com/api/v3/myTrades?symbol=BTCUSDT&startTime=1609459200000&endTime=1640995200000
。正确使用请求参数可以精确筛选和检索数据。 - 签名 : 为了保证请求的安全性,防止恶意篡改和重放攻击,需要对请求进行签名。MEXC API 使用 HMAC SHA256 算法对请求进行签名。你需要使用你的 Secret Key 对请求参数进行签名,并将签名添加到请求头或 URL 中。具体的签名方法可以参考 MEXC API 文档。签名验证是确保 API 通信安全性的重要措施。不同的交易所可能使用不同的签名算法,例如 RSA,需要仔细阅读对应的API文档。
以下是一个使用 Python 的
requests
库构建 API 请求的示例:
requests
是一个流行的 Python 库,用于发送 HTTP 请求。它简化了构建 API 请求和处理响应的过程。
hashlib
和
hmac
模块用于生成请求签名,确保请求的安全性。
time
模块用于获取当前时间戳,作为请求参数的一部分。
import requests
import hashlib
import hmac
import time
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
symbol = "BTCUSDT"
timestamp = int(time.time() * 1000)
在这里,你需要将
YOUR_API_KEY
和
YOUR_SECRET_KEY
替换为你自己的 API 密钥。
symbol
指定了要查询的交易对,
timestamp
是当前时间戳,以毫秒为单位。
params = {
"symbol": symbol,
"timestamp": timestamp
}
params
字典包含了请求参数,例如交易对符号和时间戳。这些参数将用于构建查询字符串。
query_string = '&'.join([f"{k}={v}" for k, v in params.items()])
signature = hmac.new(secret_key.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest()
这段代码首先将
params
字典转换为查询字符串,然后使用 HMAC SHA256 算法对查询字符串进行签名。
secret_key
用于生成签名,确保请求的安全性。
headers = {
"X-MEXC-APIKEY": api_key
}
headers
字典包含了请求头,例如 API 密钥。
X-MEXC-APIKEY
头部用于身份验证。
url = f"https://api.mexc.com/api/v3/myTrades?{query_string}&signature={signature}"
这段代码构建了完整的 API 请求 URL,包括 API 端点、查询字符串和签名。
response = requests.get(url, headers=headers)
使用
requests.get()
函数发送 API 请求。
url
是请求 URL,
headers
是请求头。
if response.status_code == 200:
data = response.()
print(data)
else:
print(f"Error: {response.status_code} - {response.text}")
这段代码检查 API 响应的状态码。如果状态码为 200,表示请求成功,API 响应的内容被解析为 JSON 格式并打印出来。否则,打印错误信息,包括状态码和错误文本。
解析 API 响应
发送 API 请求后,MEXC 服务器会返回一个 HTTP 响应。该响应包含了服务器处理请求的结果,是与 MEXC 交易所进行数据交互的关键部分。理解和正确解析 API 响应是成功调用 MEXC API 的基础。
-
状态码 (Status Code):
状态码是一个三位数的数字,表示服务器对请求的处理结果。
200
表示请求成功,服务器已成功处理并返回数据。其他状态码,例如400
(错误请求)、401
(未授权)、403
(禁止访问)、404
(未找到)、500
(服务器内部错误)等,都表示请求失败。每个状态码都有其特定的含义,可以帮助开发者诊断问题。详细的状态码列表及其含义请参考 HTTP 协议规范。 -
响应头 (Response Headers):
响应头包含了关于响应的元数据,例如
Content-Type
(响应内容的类型,通常为application/
)、Content-Length
(响应体的长度)、Date
(服务器响应的时间)、Server
(服务器类型)、RateLimit-*
(限流相关信息,例如剩余请求次数、重置时间)等。这些头部信息可以提供关于服务器和响应本身的有用信息。例如,Content-Type
告诉客户端如何解析响应体,RateLimit-*
头部可以帮助开发者避免触发限流机制。 - 响应体 (Response Body): 响应体是 API 返回的实际数据,通常以 JSON (JavaScript Object Notation) 格式返回。JSON 是一种轻量级的数据交换格式,易于阅读和解析。响应体的内容取决于所调用的 API 接口。例如,查询交易对信息的 API 可能会返回交易对的名称、当前价格、成交量等信息;查询用户账户信息的 API 可能会返回账户余额、可用资金等信息。请务必参考 MEXC API 文档来了解每个 API 接口返回的具体数据结构。
你需要严格按照 MEXC API 文档的说明来解析 API 响应。API 文档详细描述了每个 API 接口的请求参数、响应格式、错误代码等信息。如果请求成功(状态码为
200
),你需要从响应体中提取所需的数据。由于响应体通常是 JSON 格式,你需要使用相应的 JSON 解析库将 JSON 字符串转换为程序中的数据结构(例如 Python 中的字典或列表)。然后,你可以根据文档中定义的字段名称,访问和使用这些数据。如果请求失败(状态码不是
200
),你需要根据状态码和错误信息来判断错误原因,并采取相应的措施。例如,如果状态码是
400
,可能是请求参数错误;如果状态码是
401
,可能是 API Key 或 Secret Key 不正确;如果状态码是
429
,可能是触发了限流机制。根据具体的错误原因,你可以修改请求参数、检查 API Key 和 Secret Key、或者稍后重试请求。
以下是一个使用 Python 语言解析 MEXC API 响应的示例代码,该代码展示了如何查询用户交易记录:
import requests
import hashlib
import hmac
import time
import # 导入 库进行 JSON 解析
api_key = "YOUR_API_KEY" # 替换为你的 API Key
secret_key = "YOUR_SECRET_KEY" # 替换为你的 Secret Key
symbol = "BTCUSDT" # 交易对,例如 BTCUSDT
timestamp = int(time.time() * 1000) # 当前时间戳,单位为毫秒
params = {
"symbol": symbol,
"timestamp": timestamp
}
query_string = '&'.join([f"{k}={v}" for k, v in params.items()]) # 构建查询字符串
signature = hmac.new(secret_key.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest() # 计算签名
headers = {
"X-MEXC-APIKEY": api_key # 将 API Key 放入请求头
}
url = f"https://api.mexc.com/api/v3/myTrades?{query_string}&signature={signature}" # 构建完整的 API 请求 URL
response = requests.get(url, headers=headers) # 发送 GET 请求
if response.status_code == 200: # 检查状态码是否为 200
data = response.() # 将响应体解析为 JSON 格式
# 打印交易记录的示例
for trade in data:
print(f"Trade ID: {trade['id']}")
print(f"Order ID: {trade['orderId']}")
print(f"Price: {trade['price']}")
print(f"Quantity: {trade['qty']}")
print(f"Commission: {trade['commission']}")
print(f"Commission Asset: {trade['commissionAsset']}")
print(f"Time: {trade['time']}")
print("-" * 20)
else: # 如果状态码不是 200,表示请求失败
print(f"Error: {response.status_code} - {response.text}")
try:
error_message = .loads(response.text) # 尝试将错误信息解析为 JSON 格式
print(f"Error Code: {error_message['code']}")
print(f"Error Message: {error_message['msg']}")
except .JSONDecodeError: # 捕获 JSON 解析错误
print("Could not parse error message as JSON.")
在这个示例中,首先需要将
YOUR_API_KEY
和
YOUR_SECRET_KEY
替换为你自己的 API Key 和 Secret Key。然后,代码构建了 API 请求 URL,并发送了一个 GET 请求。如果状态码为
200
,代码将响应体解析为 JSON 格式,并遍历交易记录,打印每条交易记录的详细信息。如果状态码不是
200
,代码将打印错误信息。为了更好地调试,代码尝试将错误信息解析为 JSON 格式,并打印错误代码和错误信息。如果无法解析为 JSON 格式(例如,响应体不是 JSON 格式),则打印原始的错误信息。使用了
try...except
结构来捕获 JSON 解析错误,提高了代码的健壮性。
通过以上步骤,你就可以使用 MEXC 平台的 API 查询交易记录了。务必仔细阅读 MEXC API 文档,了解 API 的使用规则和限制,包括请求频率限制、数据格式要求、错误代码含义等。请妥善保管你的 API Key 和 Secret Key,不要泄露给他人,避免造成安全风险。建议将 API Key 和 Secret Key 存储在环境变量或配置文件中,而不是硬编码在代码中。