Gemini API使用教程:探索加密货币交易新维度
Gemini API 使用教程:探索加密货币交易的新维度
准备工作:API 密钥申请与配置
在探索 Gemini API 的强大功能之前,获取访问权限至关重要。这需要您拥有一个有效的 API 密钥,它就像进入 Gemini 数字世界的通行证。访问 Gemini 官方网站,如果您还没有账户,请注册一个新账户。注册过程通常需要您提供基本的个人信息和联系方式。
完成注册后,您需要进行身份验证,这通常涉及提供身份证明文件,例如护照或驾驶执照,并可能需要进行额外的验证步骤,以确保账户安全。身份验证完成后,登录您的 Gemini 账户,并导航至账户设置或类似的区域。在该区域,您应该能够找到一个名为“API Keys”(或类似的名称)的部分。
在“API Keys”部分,您会看到一个“Create API Key”或类似的按钮。点击该按钮以启动新的 API 密钥对的创建过程。在创建 API 密钥时,您需要仔细选择与您的应用程序的需求相匹配的权限。Gemini 提供了细粒度的权限控制,允许您精确地指定 API 密钥可以访问哪些资源和执行哪些操作。例如,如果您只需要访问实时的市场数据,您可以仅授予“Market Data”权限。相反,如果您需要执行交易操作,您将需要授予“Trading”权限。务必遵循最小权限原则,仅授予您的应用程序所需的必要权限,以降低潜在的安全风险。
成功创建 API 密钥后,您将获得两个关键的字符串:
API Key
和
API Secret
。
API Key
充当您的身份标识符,用于识别您的应用程序。而
API Secret
则用于生成请求签名,确保通过 API 发送的请求的完整性和真实性。请求签名是使用
API Secret
和请求的特定数据生成的加密哈希值。 Gemini 使用此签名来验证请求是否来自授权方,并且在传输过程中未被篡改。至关重要的是要妥善保管您的
API Secret
,并将其视为高度敏感的信息。切勿将您的
API Secret
泄露给任何第三方,也不要将其存储在不安全的位置(例如版本控制系统或公共配置文件)中。如果您的
API Secret
遭到泄露,请立即撤销并重新生成一个新的密钥对。
获得 API 密钥后,您需要配置您的开发环境,以便与 Gemini API 进行交互。Gemini API 支持多种流行的编程语言,包括但不限于 Python、Java、Node.js 和 C#。您可以根据您的编程经验和项目需求选择最适合您的语言。如果您选择 Python,您可以利用诸如
requests
之类的 HTTP 客户端库来发送 HTTP 请求到 Gemini API 端点。为了生成必要的请求签名,您可以使用
hmac
和
hashlib
库。
hmac
库提供了使用密钥进行哈希消息身份验证的功能,而
hashlib
库则提供了各种加密哈希算法。其他语言也有类似的库和工具可用于进行 HTTP 请求和生成请求签名。在配置开发环境时,请务必参考 Gemini API 的官方文档,以获取有关身份验证、请求格式和错误处理的详细说明。遵循文档中的指南将有助于确保您的应用程序能够与 API 正确交互并避免常见问题。
核心功能:数据获取与交易执行
Gemini API 提供了丰富的功能,涵盖了市场数据获取、订单管理和资金管理等多个关键领域。通过该API,用户可以实时获取Gemini交易所的各种市场数据,包括但不限于最新的交易价格、交易量、订单簿深度和历史交易记录。这些数据对于制定交易策略和进行市场分析至关重要。
除了数据获取之外,Gemini API 还支持高效的订单管理。用户可以创建、修改和取消各种类型的订单,例如限价单、市价单和止损单。API 提供了精细化的订单控制,允许用户根据市场情况灵活调整交易策略。API 还提供了完善的资金管理功能,方便用户查询账户余额、管理资金划转和监控交易活动。通过API,用户可以实现自动化交易,从而提高交易效率并降低人工操作的风险。
1. 市场数据获取:
Gemini API 提供全面的实时市场数据服务,涵盖各种加密货币交易对的价格、深度、成交量及其他关键指标。通过精确的市场数据,用户可以深入分析市场动态,制定更明智的交易策略。例如,
GET /v1/ticker/{symbol}
端点允许您检索特定交易对的最新价格信息。要查询 BTCUSD(比特币/美元)交易对的当前价格,您可以构造并发送以下 HTTP GET 请求:
GET /v1/ticker/BTCUSD
API 将返回一个 JSON 格式的响应,其中包含 BTCUSD 交易对的详细市场数据,包括但不限于:最新成交价格(last)、交易量(volume)、当日最高价(high)、当日最低价(low)、以及时间戳(timestamp)等关键数据点。这些数据可以帮助交易者快速了解市场状况,做出即时决策。
GET /v1/order_book/{symbol}
端点提供指定交易对的实时订单簿数据。订单簿详细记录了市场上买单(bid)和卖单(ask)的价格和数量分布,是评估市场深度和流动性的重要工具。通过分析订单簿,您可以洞察市场的潜在支撑位和阻力位,以及买卖力量的对比情况,从而更准确地预测价格走势。
对于需要进行历史数据分析的用户,Gemini API 提供了强大的历史 K 线数据查询功能。通过
GET /v2/candles/{symbol}/{timeframe}
端点,您可以获取指定交易对在特定时间周期内的历史价格数据。您需要指定交易对代码(例如 BTCUSD)、时间周期(例如 1m 代表 1 分钟,5m 代表 5 分钟,1h 代表 1 小时,1d 代表 1 天),以及所需的时间范围。API 将返回包含开盘价(open)、最高价(high)、最低价(low)、收盘价(close)和交易量(volume)等信息的历史 K 线数据,方便您进行技术分析和回测。
2. 订单管理:
Gemini API 提供了全面的订单管理功能,允许用户创建、取消和查询订单,从而实现精细化的交易控制。通过
POST /v1/order/new
端点,您可以提交新的订单请求。创建订单时,务必准确指定以下关键参数:
- 交易对 (symbol): 明确指定要交易的资产对,例如 "BTCUSD" 表示比特币兑美元。
- 订单类型 (type): 选择合适的订单类型。 "exchange limit" 代表限价单,仅当市场价格达到指定价格时才会执行。其他类型包括市价单("exchange market"),立即以当前市场最优价格成交。
- 买卖方向 (side): 指示交易方向,"buy" 表示买入,"sell" 表示卖出。
- 价格 (price): 对于限价单,设定期望成交的价格。市价单则无需指定价格。
- 数量 (amount): 指定要交易的资产数量,例如 0.01 个 BTC。
- 客户端订单 ID (client_order_id, 可选): 允许您自定义订单ID,方便追踪和管理,这在程序化交易中尤为重要。
以下是一个使用
POST /v1/order/new
创建限价买单的示例请求:
POST /v1/order/new
{
"symbol": "BTCUSD",
"amount": "0.01",
"price": "30000",
"side": "buy",
"type": "exchange limit",
"client_order_id": "your_unique_order_id"
}
上述请求表示以 30000 美元的价格买入 0.01 个 BTC。
client_order_id
字段允许您用自定义ID "your_unique_order_id" 来标识该订单。
通过
POST /v1/order/cancel
端点,您可以取消尚未成交的订单。取消订单时,必须提供订单的 ID。订单 ID 可以从创建订单的响应中获取,或者通过查询订单状态获得。使用客户端订单 ID 取消订单也是一种常见的做法,尤其是在需要批量取消订单时。
POST /v1/order/cancel
{
"order_id": "the_order_id_to_cancel"
}
要查询特定订单的状态,可以使用
GET /v1/order/status
端点。同样,您需要提供订单的 ID 作为查询参数。 Gemini API 将返回订单的详细信息,包括订单状态、已成交数量、平均成交价格等。可能的订单状态包括:
- open: 订单已提交,但尚未完全成交。
- closed: 订单已完全成交。
- cancelled: 订单已被取消。
- partially_filled: 订单部分成交。
查询订单状态的示例请求:
GET /v1/order/status?order_id=the_order_id_to_check
3. 资金管理:
Gemini API 提供全面的资金管理功能,允许用户精确地监控账户余额并高效地执行资金划转操作。通过API,开发者可以自动化资金管理流程,提高交易效率并降低手动操作的风险。
查询账户余额:
使用
POST /v1/balances
端点可以实时查询您的 Gemini 账户余额。该请求会返回一个 JSON 对象,详细列出您的账户中持有的各种加密货币和法币的数量,以及它们的可用余额和已冻结余额。这些信息对于制定交易策略和风险管理至关重要。该JSON对象包含以下关键字段:
currency
(币种代码)、
amount
(总余额)、
available
(可用余额)和
type
(账户类型,例如exchange, margin)。理解这些字段有助于准确掌握资金状况。
资金划转:
POST /v1/transfers/new
端点用于发起资金划转请求。您可以将资金从您的 Gemini 账户划转到其他 Gemini 账户,也可以提取到外部加密货币地址。创建转账请求时,必须指定接收者地址、币种和转账金额。该API支持不同类型的转账,包括站内转账和链上转账,并需要提供必要的身份验证信息以确保安全性。进行资金划转时需要关注手续费,这会根据网络拥堵情况动态变化,Gemini API也提供预估手续费的接口方便用户进行成本计算。为了安全起见,建议启用双重验证 (2FA) 以保护您的资金安全。
安全性考虑:请求签名与速率限制
在使用 Gemini API 时,安全性至关重要。为了确保请求的完整性、真实性和防止恶意篡改,您需要对每个 API 请求进行签名。这种签名机制可以验证请求是否来自授权用户,并且在传输过程中没有被修改。签名过程涉及多个步骤,详述如下:
- 构造请求的 Payload (载荷): Payload 是一个包含请求参数的 JSON 对象。该 JSON 对象必须严格按照 Gemini API 文档规定的格式进行构建,包括参数名称、数据类型和取值范围。确保所有必需参数都已包含,并且参数值符合 API 的要求。例如,对于交易请求,Payload 可能包含交易对、交易数量、价格等信息。
- Base64 编码 Payload: 将构造好的 JSON Payload 使用 Base64 算法进行编码。Base64 编码将二进制数据转换为 ASCII 字符串,以便在 HTTP Header 中传输。标准的 Base64 编码方式使用 A-Z、a-z、0-9 以及 + 和 / 这 64 个字符。编码后的字符串将作为后续签名过程的输入。
-
HMAC-SHA384 加密签名:
使用您的
API Secret
作为密钥,对 Base64 编码后的 Payload 进行 HMAC-SHA384 加密。HMAC(Hash-based Message Authentication Code)是一种利用哈希函数进行消息认证的密码学算法。SHA384 是一种安全的哈希算法,产生 384 位的哈希值。使用 API Secret 作为密钥,对 Base64 编码的 Payload 进行 HMAC-SHA384 加密,可以生成一个唯一的、与 API Secret 和 Payload 相关联的消息认证码。确保API Secret
安全保存,避免泄露。 - 转换为十六进制字符串: 将 HMAC-SHA384 加密后的结果转换为十六进制字符串。加密后的结果是二进制数据,需要转换为十六进制字符串才能在 HTTP Header 中传输。每个字节的二进制数据转换为两个字符的十六进制表示。例如,二进制数据 `0x0A` 转换为十六进制字符串 `0A`。这个十六进制字符串就是请求的签名。
在发送 API 请求时,您需要在 HTTP Header 中包含以下信息,以便 Gemini API 服务器验证请求的身份和完整性:
-
X-GEMINI-APIKEY
: 您的API Key
。API Key 用于标识您的账户,允许 Gemini API 服务器识别请求的来源。API Key
不同于API Secret
,API Key
可以公开,而API Secret
必须妥善保管。 -
X-GEMINI-PAYLOAD
: Base64 编码后的 Payload。服务器端会解码这个 Payload,并与签名进行验证。 -
X-GEMINI-SIGNATURE
: 请求签名。服务器端使用您的API Secret
和接收到的 Payload 重新计算签名,然后与您提供的签名进行比较。如果签名匹配,则验证请求的完整性和真实性。
除了请求签名以保证安全性外,Gemini API 还实施了速率限制,以防止滥用和保护系统资源。如果您在短时间内发送过多的请求,API 将返回 HTTP 状态码 429 (Too Many Requests) 错误。速率限制通常基于时间窗口(例如,每分钟或每小时)和请求数量。您可以通过查看 HTTP Header 中的
X-RateLimit-Remaining
和
X-RateLimit-Reset
字段了解当前的速率限制情况。
X-RateLimit-Remaining
表示在当前时间窗口内剩余的可用请求数量,而
X-RateLimit-Reset
表示速率限制重置的时间,通常以 Unix 时间戳表示。根据您的应用场景,设计合理的请求频率控制策略,使用队列或其他机制来平滑请求峰值,避免触发速率限制。同时,监控API 的返回状态码和错误信息,及时处理速率限制错误,并进行重试(使用退避策略)。
代码示例:Python 实现
以下是一个简明扼要的 Python 代码示例,它演示了如何利用 Gemini API 获取 BTCUSD 交易对的最新价格。该示例将涵盖必要的 API 调用,身份验证流程(如果需要),以及如何解析返回的 JSON 数据。
import requests
import hmac
import hashlib
import base64
import
import time
# 替换为你的 Gemini API 密钥和私钥 (若适用)
GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"
GEMINI_API_SECRET = "YOUR_GEMINI_API_SECRET"
GEMINI_API_URL = "https://api.gemini.com/v1"
def get_btc_usd_price():
"""
从 Gemini API 获取 BTCUSD 的最新价格。
"""
endpoint = "/ticker/btcusd" # 指定获取 BTCUSD 交易对 ticker 信息的 API 端点
url = GEMINI_API_URL + endpoint
# 如果 API 需要身份验证,则添加必要的头部信息
if GEMINI_API_KEY and GEMINI_API_SECRET:
t = time.time()
payload_nonce = str(int(t * 1000))
payload = {
"request": endpoint,
"nonce": payload_nonce
}
encoded_payload = .dumps(payload).encode()
b64 = base64.b64encode(encoded_payload)
signature = hmac.new(GEMINI_API_SECRET.encode(), b64, hashlib.sha384).hexdigest()
headers = {
"Content-Type": "application/",
"X-GEMINI-APIKEY": GEMINI_API_KEY,
"X-GEMINI-PAYLOAD": b64,
"X-GEMINI-SIGNATURE": signature
}
else:
headers = {}
try:
response = requests.get(url, headers=headers)
response.raise_for_status() # 如果响应状态码不是 200,则引发 HTTPError 异常
data = response.()
last_price = data["last"] # 提取 "last" 字段,即最新价格
print(f"BTCUSD 最新价格: {last_price}")
return last_price
except requests.exceptions.RequestException as e:
print(f"API 请求出错: {e}")
return None
except KeyError:
print("无法从 API 响应中找到 'last' 字段。")
print(f"完整的API 响应: {data}") # 打印完整的API响应,方便调试
return None
except .JSONDecodeError:
print("无法解析 JSON 响应。")
return None
# 调用函数获取价格
get_btc_usd_price()
您的 API Key 和 API Secret
为了安全地访问和使用我们的加密货币交易平台或数据服务,您需要提供您的 API Key 和 API Secret。API Key 类似于您的用户名,用于标识您的身份,而 API Secret 类似于您的密码,用于验证您的身份。请务必妥善保管您的 API Key 和 API Secret,切勿泄露给他人,以防止未经授权的访问和操作。
请将以下代码中的
YOUR_API_KEY
替换为您的实际 API Key,并将
YOUR_API_SECRET
替换为您的实际 API Secret。这两个值通常可以在您的账户设置或 API 管理页面中找到。
api_key = "YOUR_API_KEY"
api_secret = "YOUR_API_SECRET"
请注意:API Key 和 API Secret 是区分大小写的。如果您复制粘贴这些值,请确保没有额外的空格或字符。错误的 API Key 或 API Secret 将导致身份验证失败,从而无法访问 API。建议在代码中进行硬编码时,考虑使用环境变量或配置文件等更安全的存储方式,以避免将敏感信息直接暴露在代码中。
强烈建议您启用双重验证(2FA)来增强账户的安全性。即使您的 API Key 和 API Secret 泄露,启用 2FA 也可以防止未经授权的访问。定期轮换您的 API Key 和 API Secret 也是一种良好的安全实践。
API 端点
api_url = "https://api.gemini.com/v1/ticker/BTCUSD"
上述 API 端点指向 Gemini 交易所提供的公共 API,专门用于获取比特币 (BTC) 与美元 (USD) 交易对的实时行情数据。该端点允许开发者和交易者通过简单的 HTTP 请求,快速获取当前 BTC/USD 的价格、交易量和其他相关市场信息。
具体来说,
https://api.gemini.com/v1/ticker/BTCUSD
是一个 GET 请求端点,当客户端发起请求时,服务器会返回一个 JSON 格式的数据包,其中包含了最新的 BTC/USD 交易对的 ticker 信息。这些信息通常包括:
- last : 最近一次成交的价格。
- bid : 当前最高的买入价格。
- ask : 当前最低的卖出价格。
- volume : 24 小时内的交易量。
- timestamp : 数据更新的时间戳。
开发者可以利用这些数据构建实时的行情看板、交易机器人或其他需要实时市场信息的应用程序。需要注意的是,在使用 API 时应遵守 Gemini 交易所的相关条款和条件,并注意频率限制,避免对服务器造成过大的负担。建议定期检查 API 文档,以确保代码与 API 的最新版本保持兼容。
构造 Payload
在构建用于发送到服务器的请求体时,我们通常会使用 JSON 格式,因为它易于解析和生成,并且被广泛支持。以下代码展示了如何使用 Python 构建一个 JSON payload,并将其进行 Base64 编码。
我们需要定义一个 Python 字典
payload
,该字典包含了我们要发送的数据。例如:
payload = {'action': 'login', 'username': 'testuser', 'password': 'securepassword'}
然后,我们使用
.dumps()
函数将 Python 字典转换为 JSON 字符串:
payload_ = .dumps(payload)
payload_
现在是一个包含 JSON 数据的字符串。为了传输的安全性或兼容性,我们可能需要对其进行 Base64 编码。这可以通过以下代码实现:
payload_base64 = base64.b64encode(payload_.encode('utf-8'))
在这段代码中,
payload_.encode('utf-8')
将 JSON 字符串编码为 UTF-8 字节串,这是 Base64 编码的必要步骤。
base64.b64encode()
函数则将字节串编码为 Base64 字符串。最终的
payload_base64
变量包含了 Base64 编码后的 payload,可以安全地通过网络传输。
完整的代码示例如下:
import
import base64
payload = {'action': 'login', 'username': 'testuser', 'password': 'securepassword'}
payload_ = .dumps(payload)
payload_base64 = base64.b64encode(payload_.encode('utf-8'))
print(payload_base64)
需要注意的是,Base64 编码虽然可以防止数据被直接阅读,但它并非加密。如果需要更高级别的安全性,应使用加密算法,如 AES 或 RSA。
生成签名
为了确保API请求的安全性,需要生成一个HMAC签名。该签名基于您的API密钥(
api_secret
)和请求的负载(
payload_base64
)进行计算。
签名生成步骤如下:
-
准备密钥:
将您的API密钥
api_secret
使用UTF-8编码转换为字节串。这是为了确保密钥在哈希运算中能够被正确处理。使用api_secret.encode('utf-8')
实现此转换。 -
构造HMAC:
使用
hmac.new()
函数创建一个HMAC对象。该函数需要三个参数:- 密钥:即上一步编码后的API密钥。
-
消息:请求的负载
payload_base64
,通常是经过Base64编码的JSON字符串,包含了请求的所有参数。 -
哈希算法:选择SHA384作为哈希算法,以提供较高的安全性。 使用
hashlib.sha384
指定算法。
-
计算摘要:
调用HMAC对象的
hexdigest()
方法来计算最终的签名。hexdigest()
方法将哈希结果转换为一个十六进制字符串,便于在HTTP头部或其他地方传输。
因此,完整的签名生成代码如下:
signature = hmac.new(api_secret.encode('utf-8'), payload_base64, hashlib.sha384).hexdigest()
这个生成的
signature
值将作为请求头的一部分发送到服务器,服务器会使用相同的算法和密钥验证签名,以确保请求的完整性和真实性。任何对请求参数的篡改都会导致签名验证失败,从而保护API免受恶意攻击。
构造 HTTP Header
在与 Gemini 等加密货币交易所的 API 进行交互时,构造正确的 HTTP Header 至关重要。Header 中包含身份验证信息和请求内容类型,确保 API 服务器能够正确处理请求。以下是一个示例,展示了如何构建必要的 Header:
headers = {
'Content-Type': 'application/',
'X-GEMINI-APIKEY': api_key,
'X-GEMINI-PAYLOAD': payload_base64.decode('utf-8'),
'X-GEMINI-SIGNATURE': signature
}
各字段详细说明:
-
Content-Type:
指定请求体的格式。对于 Gemini API,通常设置为
application/
,表明请求体包含 JSON 格式的数据。正确设置 Content-Type 对于 API 正确解析请求至关重要。 - X-GEMINI-APIKEY: 你的 Gemini API 密钥。此密钥用于验证你的身份,允许你访问受保护的 API 资源。务必妥善保管你的 API 密钥,避免泄露。
-
X-GEMINI-PAYLOAD:
Base64 编码后的请求负载 (payload)。Payload 包含要发送给 API 的具体数据,例如交易参数或查询条件。使用 Base64 编码是为了确保数据在传输过程中不会被破坏或篡改。需要注意的是,这里使用了
decode('utf-8')
将 Base64 编码后的字节数据解码为 UTF-8 字符串,以便作为 HTTP Header 的值传递。 - X-GEMINI-SIGNATURE: 请求的数字签名。签名通过使用你的私钥对 payload 进行加密生成,用于验证请求的完整性和真实性。API 服务器会使用你的公钥验证签名,确保请求确实由你发送,且未被篡改。正确的签名对于确保交易安全至关重要。
注意事项:
-
请务必替换
api_key
、payload_base64
和signature
为你自己的实际值。 - 不同的加密货币交易所 API 可能需要不同的 Header 字段。请务必参考具体的 API 文档进行设置。
-
仔细检查
Content-Type
的设置,确保与你的请求体的实际格式匹配。 - 在生产环境中,建议使用更安全的密钥管理方法,避免将 API 密钥硬编码在代码中。
发送 API 请求
使用 Python 的
requests
库向加密货币 API 发送 GET 请求。
requests.get(api_url, headers=headers)
函数用于发送请求。
api_url
变量是目标 API 的完整 URL 地址,包含了协议(例如
https://
)和 API 接口的路径。
headers
参数是一个字典,用于设置 HTTP 请求头,例如身份验证信息(API 密钥)或内容类型。正确的设置请求头对于成功访问 API 至关重要,可以避免因权限不足或请求格式错误导致的请求失败。
请求的返回值被赋值给变量
response
。这个
response
对象包含了服务器返回的所有信息,例如状态码、响应头和响应体(通常是 JSON 格式的数据)。
在发送请求前,务必确认
api_url
的正确性和有效性,并根据 API 文档的要求正确设置
headers
。
常见的请求头包括:
-
"Authorization": "Bearer YOUR_API_KEY"
:用于携带 API 密钥进行身份验证。 -
"Content-Type": "application/"
:指定请求体的 MIME 类型为 JSON。 -
"Accept": "application/"
:指定客户端可以接收的响应类型为 JSON。
处理响应
接收到API响应后,验证其状态至关重要。HTTP状态码200表示请求成功,此时可以解析响应数据。以下代码展示了如何处理成功的响应:
if response.status_code == 200:
data = response.()
print(f"BTCUSD 最新价格:{data['last']}")
else:
print(f"请求失败:{response.status_code} - {response.text}")
上述代码使用
response.()
方法将JSON格式的响应内容转换为Python字典,便于访问其中的数据。
data['last']
提取了BTCUSD的最新价格。
如果
response.status_code
不是200,则表示请求失败。可以打印出状态码和响应文本,以便调试和排查问题。常见的错误状态码包括400(错误请求)、401(未授权)和500(服务器内部错误)。
务必将代码中的
YOUR_API_KEY
和
YOUR_API_SECRET
替换为您从交易所获得的真实API密钥和API Secret。 API密钥用于身份验证,API Secret用于对请求进行签名,确保安全性。 未正确配置API密钥和API Secret会导致请求失败。
高级应用:WebSocket API
除了 REST API,Gemini 还提供了 WebSocket API,它是一种双向通信协议,特别适用于需要实时数据推送的应用场景。WebSocket API 能够实时推送市场数据,例如最新的交易价格、交易量,以及订单簿的深度更新,包括买单和卖单的挂单情况。通过使用 WebSocket API,开发者可以构建响应速度更快、对市场变化更敏感的自动化交易策略,并实时监控市场动态。
要使用 Gemini 的 WebSocket API,您需要使用 WebSocket 客户端库建立与 Gemini WebSocket 服务器的持久连接。常见的编程语言都提供了相应的 WebSocket 客户端库,例如 JavaScript、Python 和 Java。连接建立后,您可以订阅特定的频道以接收您感兴趣的数据流。
marketdata
频道提供实时的市场交易数据,而
order_events
频道则提供关于您的订单状态的实时更新,例如订单的创建、部分成交、完全成交或取消等事件。
一旦您订阅了相应的频道,Gemini 服务器会在市场数据发生变化或您的订单状态发生变化时,立即通过建立的 WebSocket 连接实时推送数据给您。这些推送的数据可以被您的应用程序实时处理,用于更新交易策略的参数、调整风险控制策略,或实时更新用户界面,以便用户能够第一时间了解市场动态和他们自己的订单执行情况。
相较于传统的 REST API 轮询方式,WebSocket API 具有更高的效率和更低的延迟。REST API 通常需要客户端定期发送请求以获取最新的数据,而 WebSocket API 则允许服务器主动推送数据,从而避免了不必要的请求开销和延迟。这种特性使得 WebSocket API 非常适合对实时性要求极高的应用场景,例如高频交易、算法交易和实时风险管理系统。