发布于 2025-02-08 14:26:04 · 阅读量: 182517
如果你是个crypto玩家,想在Gemini交易所整点自动化操作,那API就是你的魔法杖。Gemini的API不仅支持基础的行情查询,还能让你挂单、撤单,甚至跑高频策略。本文带你撸一遍Gemini API的核心用法,手把手教你如何对接交易所。
想用API,第一步肯定是搞到你的API Key
和API Secret
,这相当于你的交易权限通行证。
申请流程如下:
要和Gemini API聊天,得先会发请求。这里用requests
库举个例子,带你搞定身份认证和基础API调用。
bash pip install requests
import time import hmac import base64 import json import requests
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())
运行这段代码,你就能查到自己的账户里有多少子弹(资产)了。
交易之前,肯定得先看看盘面。Gemini的行情API提供了现货价格、深度等数据,适合做策略分析。
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
是最新成交价。结合这些数据,你可以写个交易机器人帮你盯盘。
Gemini的API支持 限价单(limit order) 和 市价单(market order),下面我们用Python演示如何下单。
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 挂个买单,等价格跌到这里再成交。
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,就能撤单了。
如果你不想每秒钟轮询API,可以用Gemini的WebSocket接口获取 实时成交数据。
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的成交情况,一旦有新成交,就会打印数据。
除了基本的行情查询和下单,Gemini的API还有很多玩法,比如:
如果你想更深入研究,可以翻阅官方文档:Gemini API Docs
Gemini API适合自动化交易、量化策略和套利脚本,如果你对Python有一定基础,完全可以DIY一个交易bot。撸代码、搬砖、薅羊毛,都是crypto世界里的乐趣,玩得好还能躺赚! 🚀