Hyperliquid Python 下单指南
pip install hyperliquid-python-sdk
要求 Python 3.10(部分依赖在 3.11 上有问题)。
额外依赖:如需 WebSocket 支持,SDK 已内置。
在 Hyperliquid App 中生成 API 钱包(专用交易钱包),获取地址(public key)和私钥(private key)。
创建配置文件 config.json(在 examples 目录下复制示例并编辑):
{
"account_address": "0xYourAccountAddress",
"secret_key": "0xYourPrivateKey"
}3. 基本下单流程
导入模块:使用 hyperliquid.exchange 进行下单,hyperliquid.info 查询市场数据。
订单参数:
coin:交易对,如 "BTC"(永续)或 "PURR"(现货)。
is_buy:True(买)/ False(卖)。
sz:数量(大小),字符串格式如 "0.001"。
px:价格,字符串格式如 "50000";市价单设为 "0"。
is_market:True(市价单)/ False(限价单)。
order_type:如 {"limit": {"tif": "Gtc"}}(Good 'til Canceled)。
order_type:如 {"limit": {"tif": "Gtc"}}(有效直至撤销)。资产索引:永续从 meta.universe 获取,现货为 10000 + 索引。
签名:SDK 自动处理 EIP-712 签名(基于 Arbitrum 链 ID 42161)。
import json
from hyperliquid.exchange import Exchange
from hyperliquid.info import Info
from hyperliquid.utils import constants
from hyperliquid.utils.types import Order
# 加载配置
with open('config.json', 'r') as f:
config = json.load(f)
address = config['account_address']
secret_key = config['secret_key']
# 初始化(测试网示例,生产环境用 constants.MAINNET_API_URL)
base_url = constants.TESTNET_API_URL
info = Info(base_url, skip_ws=True)
exchange = Exchange(address, secret_key, base_url=base_url)
# 示例1: 市价买单(BTC 永续,数量 0.001)
order_msg = {
"type": "order",
"orders": [{
"coin": "BTC",
"is_buy": True, # 买
"sz": "0.001", # 数量
"px": "0", # 市价单,价格忽略
"is_market": True,
"order_type": {"limit": {"tif": "Ioc"}} # Immediate or Cancel
}]
}
result = exchange.order(order_msg)
print("市价买单结果:", result) # 返回订单状态,如 filled/pending
# 示例2: 限价卖单(ETH 永续,数量 0.5,价格 3000)
order_msg_limit = {
"type": "order",
"orders": [{
"coin": "ETH",
"is_buy": False, # 卖
"sz": "0.5",
"px": "3000", # 限价
"is_market": False,
"order_type": {"limit": {"tif": "Gtc"}} # Good 'til Canceled
}]
}
result_limit = exchange.order(order_msg_limit)
print("限价卖单结果:", result_limit)
# 查询用户状态(可选)
user_state = info.user_state(address)
print("用户持仓:", user_state){
"response": {
"data": {
"statuses": [{"filled": {"avgPx": "50000", "oid": 1234567890, "totalSz": "0.001"}}]
},
"type": "order"
},
"status": "ok"
}批量下单:orders 列表支持多个订单。
止盈/止损:在 order_type 中添加 "trigger": {"triggerPx": "价格", "tpsl": "tp/sl"}。
WebSocket 实时数据:SDK 支持订阅订单更新和 L2 深度。
from hyperliquid.utils import constants
# 订阅用户事件
subscription = {"type": "userEvents", "user": address}
# 使用 exchange.subscribe() 处理错误处理:检查 result['status'] == 'ok';常见错误如签名无效(私钥问题)或资金不足。
测试:始终用测试网,资金从测试水龙头获取。
限速:API 速率限制为 100 req/s;使用异步库如 async-hyperliquid(pip install async-hyperliquid)处理高频。
文档与示例:完整示例见 GitHub hyperliquid-python-sdk,包括 basic_order.py。
CCXT 集成:若需统一 API,可用 CCXT 库(pip install ccxt),支持 Hyperliquid。