Gemini交易所API教程:自动化交易、行情获取与下单指南

发布于 2025-02-08 14:26:04 · 阅读量: 182517

Gemini平台的交易API如何使用

如果你是个crypto玩家,想在Gemini交易所整点自动化操作,那API就是你的魔法杖。Gemini的API不仅支持基础的行情查询,还能让你挂单、撤单,甚至跑高频策略。本文带你撸一遍Gemini API的核心用法,手把手教你如何对接交易所。


1. 申请API Key

想用API,第一步肯定是搞到你的API KeyAPI Secret,这相当于你的交易权限通行证。

申请流程如下:

  1. 登录Gemini官网
  2. 进入 Account(账户)API Settings(API设置)
  3. 选择 Create API Key(创建API密钥)
  4. 选择 Primary(主账户)Sub Account(子账户)
  5. 勾选权限(View、Trading、Funding等,根据需求选)
  6. 生成密钥,并保存好 API KeyAPI Secret(丢了就GG,只能重新申请)

2. 连接API(Python示例)

要和Gemini API聊天,得先会发请求。这里用requests库举个例子,带你搞定身份认证和基础API调用。

2.1 依赖安装

bash pip install requests

2.2 获取账户余额

import time import hmac import base64 import json import requests

填入你的 API Key 和 Secret

API_KEY = "你的API_KEY" API_SECRET = "你的API_SECRET".encode() BASE_URL = "https://api.gemini.com"

构造请求头

def get_headers(payload): payload_encoded = base64.b64encode(json.dumps(payload).encode()) signature = hmac.new(API_SECRET, payload_encoded, 'sha384').hexdigest() return { "X-GEMINI-APIKEY": API_KEY, "X-GEMINI-PAYLOAD": payload_encoded.decode(), "X-GEMINI-SIGNATURE": signature, "Content-Type": "text/plain" }

账户余额查询

def get_balance(): endpoint = "/v1/balances" url = BASE_URL + endpoint payload = { "request": endpoint, "nonce": int(time.time() * 1000) } headers = get_headers(payload) response = requests.post(url, headers=headers) return response.json()

print(get_balance())

运行这段代码,你就能查到自己的账户里有多少子弹(资产)了。


3. 获取市场行情

交易之前,肯定得先看看盘面。Gemini的行情API提供了现货价格、深度等数据,适合做策略分析。

3.1 获取最新价格

def get_ticker(symbol="BTCUSD"): url = f"{BASE_URL}/v1/pubticker/{symbol}" response = requests.get(url) return response.json()

print(get_ticker("ETHUSD"))

这个接口会返回ETH/USD的最新成交价、买卖盘情况,示例如下:

json { "bid": "2300.01", "ask": "2300.02", "last": "2300.00", "volume": { "ETH": "5000.25", "USD": "11500000.50", "timestamp": 1700000000 } }

bid 是买单最高价,ask 是卖单最低价,last 是最新成交价。结合这些数据,你可以写个交易机器人帮你盯盘。


4. 交易(下单 & 撤单)

Gemini的API支持 限价单(limit order)市价单(market order),下面我们用Python演示如何下单。

4.1 限价单(买入BTC)

def place_limit_order(symbol="BTCUSD", amount="0.01", price="30000", side="buy"): endpoint = "/v1/order/new" url = BASE_URL + endpoint payload = { "request": endpoint, "nonce": int(time.time() * 1000), "symbol": symbol, "amount": amount, "price": price, "side": side, "type": "exchange limit" } headers = get_headers(payload) response = requests.post(url, headers=headers) return response.json()

print(place_limit_order("BTCUSD", "0.01", "35000", "buy"))

如果price=35000,说明你想在 $35,000 挂个买单,等价格跌到这里再成交。


4.2 撤单

def cancel_order(order_id): endpoint = "/v1/order/cancel" url = BASE_URL + endpoint payload = { "request": endpoint, "nonce": int(time.time() * 1000), "order_id": order_id } headers = get_headers(payload) response = requests.post(url, headers=headers) return response.json()

print(cancel_order("12345678"))

order_id替换成你的真实订单ID,就能撤单了。


5. WebSocket推送(实时监听价格)

如果你不想每秒钟轮询API,可以用Gemini的WebSocket接口获取 实时成交数据

5.1 监听BTC/USD成交

import websocket import json

def on_message(ws, message): data = json.loads(message) print(data)

def on_error(ws, error): print(f"Error: {error}")

def on_close(ws, close_status_code, close_msg): print("Closed")

def on_open(ws): subscribe_msg = json.dumps({"type": "subscribe", "subscriptions": [{"name": "trades", "symbols": ["BTCUSD"]}]}) ws.send(subscribe_msg)

ws = websocket.WebSocketApp("wss://api.gemini.com/v2/marketdata", on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever()

这段代码会监听BTC/USD的成交情况,一旦有新成交,就会打印数据。


6. 其他API功能

除了基本的行情查询和下单,Gemini的API还有很多玩法,比如:

  • 提币API:自动把资产转到你的钱包
  • 历史订单查询:获取已成交订单数据
  • 账户活动:查看充值、提现、交易记录

如果你想更深入研究,可以翻阅官方文档:Gemini API Docs


Gemini API适合自动化交易、量化策略和套利脚本,如果你对Python有一定基础,完全可以DIY一个交易bot。撸代码、搬砖、薅羊毛,都是crypto世界里的乐趣,玩得好还能躺赚! 🚀

Gate.io Logo 加入 Gate.io,注册赢取最高$6666迎新任务奖励!