OKX(欧易)密码忘了?最新安全指南+找回秘籍
30
2025-03-09
加密货币交易的自动化已经成为越来越多交易者的选择。通过API (Application Programming Interface) 接口,您可以编写程序,让您的交易策略自动执行,无需时刻盯盘。本文将详细介绍如何在欧易 (OKX) 和 KuCoin 这两家主流交易所配置 API,从而开启您的自动化交易之旅。
在深入配置之前,深刻理解 API 在自动化加密货币交易中的核心作用至关重要。API,全称为应用程序编程接口,如同一个精密的“翻译器”或“桥梁”,它使得您的交易程序,例如用 Python 或其他编程语言编写的交易机器人或脚本,能够安全、高效地与加密货币交易所的服务器进行无缝通信。通过API,您可以实时获取关键的市场数据,包括但不限于:最新的市场价格、交易量、深度订单簿信息、历史交易数据等。API还允许您执行各种交易操作,例如以市价单或限价单的形式提交买入或卖出订单、取消未成交的订单、查询您的账户余额、持仓情况、以及交易历史记录。API的运用极大地提升了交易的效率和灵活性。
与传统的手动交易方式相比,使用 API 驱动的自动化交易系统具有显著的优势:
为了在程序中安全地访问欧易 (OKX) API,你需要使用 API Key、Secret Key 和 Passphrase(如果已设置)对每个请求进行身份验证。欧易使用 HMAC SHA256 算法生成签名,确保请求的完整性和真实性。以下 Python 示例展示了如何构建并发送经过身份验证的 API 请求。
以下代码需要安装 requests 和 base64 库。 如果未安装,请运行
pip install requests
安装 requests 库。
import hmac
import hashlib
import time
import requests
import base64
import
请务必妥善保管您的 API Key、Secret Key 和 Passphrase。 切勿将它们泄露给他人或存储在不安全的地方。
API_KEY = "YOUR_API_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
PASSPHRASE = "YOUR_PASSPHRASE" # 如果您设置了 Passphrase,请填写,否则留空
BASE_URL
定义了欧易 API 的根地址。 请根据需要替换为正确的 API 地址,例如模拟盘地址。
BASE_URL = "https://www.okx.com" # 生产环境 API 地址, 您可以替换为模拟盘地址
get_timestamp()
函数用于生成符合欧易 API 要求的 Unix 时间戳(秒)。
def get_timestamp():
return str(int(time.time()))
sign_request()
函数使用 Secret Key 和 HMAC SHA256 算法对请求进行签名。 签名过程包括以下步骤:将时间戳、请求方法、请求路径和请求体拼接成字符串;使用 Secret Key 对该字符串进行 HMAC SHA256 哈希;将哈希结果进行 Base64 编码。
def sign_request(timestamp, method, request_path, body=""):
message = timestamp + method + request_path + body
mac = hmac.new(SECRET_KEY.encode("utf-8"), message.encode("utf-8"), hashlib.sha256)
d = mac.digest()
return base64.b64encode(d).decode()
send_request()
函数封装了发送 API 请求的全部过程。它接收请求方法(GET 或 POST)、API 接口地址、查询参数(params)和请求体数据(data)作为参数。该函数会生成时间戳、计算签名,并将所有必要的头部信息添加到请求中。如果请求成功,函数会返回 JSON 格式的响应数据;如果请求失败,函数会打印错误信息并返回 None。
def send_request(method, endpoint, params=None, data=None):
timestamp = get_timestamp()
request_path = endpoint
body = "" if data is None else .dumps(data)
signature = sign_request(timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE, # 如果没有设置 Passphrase,可以删除这一行
"Content-Type": "application/"
}
url = BASE_URL + endpoint
try:
if method == "GET":
response = requests.get(url, headers=headers, params=params)
elif method == "POST":
response = requests.post(url, headers=headers, data=body, params=params)
else:
raise ValueError("Unsupported method")
response.raise_for_status() # 为错误的响应引发 HTTPError (4xx 或 5xx)
return response.()
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
在使用示例代码之前,请务必将
YOUR_API_KEY
、
YOUR_SECRET_KEY
和
YOUR_PASSPHRASE
替换为您在欧易交易所获得的真实 API Key、Secret Key 和 Passphrase。 如果您没有设置 Passphrase,请将
PASSPHRASE
变量设置为空字符串。
完成 API 密钥配置后,务必验证与欧易 (OKX) API 的连接是否正常。以下代码示例展示了如何通过您配置的函数调用欧易 API 接口,并获取账户余额信息。请注意,这仅仅是一个示例,您可以根据自己的需求调用其他API接口。
endpoint = "/api/v5/account/balance"
data = send_request("GET", endpoint)
print(data)
上述代码片段首先定义了API端点 `/api/v5/account/balance`,该端点用于获取账户余额信息。然后,它使用 `send_request` 函数,以 `GET` 方法向该端点发送请求。`send_request` 函数应包含之前定义的身份验证逻辑(签名生成)和请求发送过程。
如果您的 API Key、Secret Key 和 Passphrase 配置正确无误,并且网络连接正常,执行上述代码后,您应该能够从欧易 API 成功获取您的账户余额信息。返回的数据通常是 JSON 格式,包含您的账户中各种加密货币的余额。如果返回错误信息,请仔细检查您的 API 密钥配置、签名算法以及网络连接。
请注意,不同的 API 接口有不同的请求方法(GET, POST, PUT, DELETE)和参数要求。在使用其他 API 接口之前,请务必查阅 欧易 (OKX) 官方 API 文档,了解详细的使用说明和参数规范,以确保正确调用 API 并获取所需数据。
与 KuCoin API 的交互需要通过身份验证机制来确保安全。 您必须在每个请求中提供您的 API Key、Secret Key 和 Passphrase。 KuCoin 采用 HMAC SHA256 算法生成签名,以此验证请求的真实性和完整性。以下 Python 示例展示了如何进行身份验证:
为了更安全、更灵活地使用API,KuCoin要求在header中指定API Key的版本。当前API的版本是v2,所以header中需要指定
KC-API-KEY-VERSION: 2
。
请务必妥善保管您的 API Key、Secret Key 和 Passphrase。 泄露这些信息可能导致您的账户受到未经授权的访问和潜在的资金损失。
import hmac
import hashlib
import time
import requests
import
import base64
API_KEY = "YOUR_KUCOIN_API_KEY"
SECRET_KEY = "YOUR_KUCOIN_SECRET_KEY"
PASSPHRASE = "YOUR_KUCOIN_PASSPHRASE"
BASE_URL = "https://api.kucoin.com"
def get_timestamp():
return str(int(time.time() * 1000)) # Kucoin 使用毫秒级时间戳
def sign_request(endpoint, request_method, request_body, timestamp):
string_to_sign = timestamp + request_method + endpoint + request_body
hmac_key = SECRET_KEY.encode('utf-8')
message = string_to_sign.encode('utf-8')
signature = hmac.new(hmac_key, message, hashlib.sha256).digest()
return base64.b64encode(signature).decode('utf-8')
def send_request(method, endpoint, params=None, data=None):
timestamp = get_timestamp()
request_body = .dumps(data) if data else ""
signature = sign_request(endpoint, method, request_body, timestamp)
headers = {
"KC-API-KEY": API_KEY,
"KC-API-SIGN": signature,
"KC-API-TIMESTAMP": timestamp,
"KC-API-PASSPHRASE": PASSPHRASE,
"KC-API-KEY-VERSION": "2", # 指定 API 版本为 2
"Content-Type": "application/"
}
url = BASE_URL + endpoint
try:
if method == "GET":
response = requests.get(url, headers=headers, params=params)
elif method == "POST":
response = requests.post(url, headers=headers, data=request_body, params=params)
elif method == "PUT": # 添加 PUT 方法支持
response = requests.put(url, headers=headers, data=request_body, params=params)
elif method == "DELETE": # 添加 DELETE 方法支持
response = requests.delete(url, headers=headers, params=params)
else:
raise ValueError("不支持的 HTTP 方法")
response.raise_for_status() # 检查 HTTP 状态码,如果请求失败(4xx 或 5xx),则抛出异常
return response.()
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
请务必将代码中的
YOUR_KUCOIN_API_KEY
、
YOUR_KUCOIN_SECRET_KEY
和
YOUR_KUCOIN_PASSPHRASE
替换为您在 KuCoin 平台获得的真实凭据。 特别注意,KuCoin API V2 需要以毫秒为单位的时间戳。 上述代码段展示了如何生成符合 KuCoin API V2 要求的签名,并将其应用于 API 请求的 header 中。
在实际应用中,除了 GET 和 POST 方法之外,您可能还需要使用 PUT 和 DELETE 方法。 示例代码中添加了对这两种方法的支持,以满足更广泛的 API 使用场景。
在完成 API 密钥的配置和请求函数的编写后,务必验证 API 连接是否成功。 您可以通过调用 KuCoin 提供的公开或私有 API 接口来进行测试。 以下代码示例展示了如何获取账户余额信息,这是一个常用的私有 API 接口,需要有效的 API 密钥才能访问。
endpoint = "/api/v1/accounts"
data = send_request("GET", endpoint)
print(data)
上述代码片段中,
endpoint
变量定义了 API 接口的路径,即
/api/v1/accounts
,该接口用于获取用户的账户信息。
send_request("GET", endpoint)
函数调用您之前定义的请求发送函数,使用 HTTP GET 方法访问指定的 API 端点。 函数返回的
data
变量包含了从 KuCoin 服务器返回的数据,通常是 JSON 格式的账户信息。
print(data)
语句将返回的数据打印到控制台,以便您查看 API 调用的结果。
如果您的 API Key、Secret Key 和 Passphrase 配置正确,且网络连接正常,您应该能够成功获取您的账户余额信息。 返回的数据将包含各个币种的可用余额、冻结余额等详细信息。 如果出现错误,例如 "Invalid API Key" 或 "Signature verification failed",请仔细检查您的 API 密钥配置和签名算法是否正确。 请确保您的 API 密钥已启用所需的权限,例如交易或提现权限,根据您要调用的 API 接口进行配置。
完成上述配置和安全措施后,您将能够在欧易 (OKX) 和 KuCoin 等交易所安全地配置 API,并开展您的自动化交易。请务必定期审查您的配置,根据您的交易策略和交易所的安全建议进行调整,确保您的账户安全。