ccxtを使ってHyperliquidを使ってみたよ
Hyperliquidが人気です。エアドロ前に触っていないのでトークンはもらえていません。お削りしたくなかったのでスルーしました。エアドロ後にccxtが対応していることを知りました。エアドロ裏山。。。
ccxtでhyperliquidを触ろうと思い、テキトーに作りました。
ソース上は割と触りやすい印象です、初期でつまづくのは認証系でしょうか。
なにが必要なのかわかりませんでしたが、一応通ったのでこれでよいのでは。
ccxtのhyperliquid.pyを確認すると、
'requiredCredentials': {
'apiKey': False,
'secret': False,
'walletAddress': True,
'privateKey': True,
},
このようになっていました。もちろんすぐたどり着いていないです。
なので、自分のウォレットアドレスと秘密鍵(絶対他人に教えちゃダメな奴)をこの変数に入れます。残高の確認ならアドレスのみで、トークンの価格確認ならどちらも不要です。
次に手間取ったのはSymbolです。
これは一覧取得して探しました。
exchange.fetch_tickers ()
でsymbol部分を確認
下にそれぞれの実際のソースを上げていきます。トークンはSUIです。もっともっと上がってくれ。
1.ライブラリの設定
import ccxt
from rich import print
# 適宜追加
2.インスタンスを作成 (私はjsonファイルから引っ張ってます)
#---インスタンスを作成---
exchange = ccxt.hyperliquid({
'privateKey': hyperliquid['private_key'],
'walletAddress': hyperliquid['account_address']
})
3.バランスの取得
def get_balance():
response = exchange.fetch_balance()
free_usdc_balance = response['free']['USDC'] # 使われていないUSDC
used_usdc_balance = response['used']['USDC'] # 使用中のUSDC
total_usdc_balance = response['total']['USDC'] # 合計のUSDC
4.現在の価格を取得
symbol = "SUI/USDC:USDC"
def get_price():
response = exchange.fetch_ticker(symbol)
bid_price = response['bid']
ask_price = response['ask']
5.オーダーの実行
def create_order(order_data):
symbol = symbol
type = "" # limit or market
side = "" # buy or sell
amount = # 使用するUSDCの数
price = # 対象のトークン価格(market時不要)
params = {
'timeInForce':'gtc', # なくてもいい
'reduceOnly': 'True' # なくてもいいかも
}
response = exchange.create_order(symbol, type, side, amount, price, params)
オーダーはなぜか省略した書き方(create_order(order_data))できなかったのでこうなってます。
今回は以上。