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))できなかったのでこうなってます。

今回は以上。

いいなと思ったら応援しよう!