Hyperliquid SDKでプログラム取引を始める方法
-
hyperliquid sdk
-
hyperliquid programmatic trade
-
hyperliquid python sdk
-
hyperliquid api プログラム取引
-
オンチェーン無期限先物ボット
プログラム取引は、かつては機関投資家向けの高度なツールでしたが、現在ではプログラミングの基礎がある個人トレーダーにも手が届く領域になっています。Hyperliquid はオンチェーン無期限先物取引所として、REST API と WebSocket API を提供しており、公式およびコミュニティによる多言語 SDK も利用できます。これにより、注文、ポジション確認、エラー処理といった主要な操作を、比較的少ないコードで実装できます。
この記事では、環境構築から始めて、Python または JavaScript SDK を使った信頼性の高いプログラム取引フローの作り方を紹介します。あわせて、本番環境で OneKey ハードウェアウォレットを署名レイヤーとして組み込むことが、資産保護の観点でなぜ重要なのかも解説します。
Hyperliquid がプログラム取引に向いている理由
中央集権型取引所と比べたとき、Hyperliquid にはいくつかの特徴があります。取引の決済はオンチェーンで行われ、資産を第三者に預ける必要がありません。注文板はオフチェーンマッチングとオンチェーン決済を組み合わせた設計で、速度と透明性のバランスを取っています。また、API の設計は比較的シンプルで、公式ドキュメントも継続的に更新されており、コミュニティも活発です。
クオンツや自動売買を行う開発者にとっては、自己管理型ウォレットの主権を保ちながら、中央集権型取引所に近い取引体験を得られる点が大きなメリットです。
環境準備と SDK のインストール
Python 環境
執筆時点では、コミュニティがメンテナンスしている Python SDK を pip でインストールできます。依存関係の衝突を避けるため、仮想環境での利用をおすすめします。
python -m venv hl_env
source hl_env/bin/activate
pip install hyperliquid-python-sdk
SDK のソースコードは、OneKey GitHub のエコシステム関連リポジトリや Hyperliquid 公式組織配下で公開されています。最新のリポジトリや導入方法は、必ず公式ドキュメントを確認してください。
JavaScript / TypeScript 環境
Node.js を使う場合は、以下のようにインストールできます。
npm install @nktkas/hyperliquid
# または公式メンテナンスのパッケージを利用します。
# 最新版は npm registry を確認してください。
TypeScript ユーザーであれば、型定義をそのまま利用できるため、IDE の補完も効きやすくなります。
API 接続とクライアント初期化
認証方式
Hyperliquid では、取引リクエストの認証に秘密鍵署名を使用します。各注文では、ウォレットの秘密鍵を使って EIP-712 の構造化メッセージに署名し、リクエストが改ざん・偽造されていないことを検証します。
Python の例(疑似コード)です。
from hyperliquid.exchange import Exchange
from hyperliquid.info import Info
from eth_account import Account
import os
# 秘密鍵は環境変数から読み込みます。コードに直接書かないでください。
private_key = os.environ["HL_PRIVATE_KEY"]
account = Account.from_key(private_key)
info = Info(base_url="https://api.hyperliquid.xyz")
exchange = Exchange(account, base_url="https://api.hyperliquid.xyz")
本番環境では、ソフトウェア上の秘密鍵ではなく OneKey ハードウェアウォレットを使う構成を強く推奨します。秘密鍵がハードウェアの安全なチップから外に出ないため、サーバーが侵害された場合でも秘密鍵の流出リスクを大きく抑えられます。詳しくは後半で説明します。
マーケットデータとアカウント状態の取得
価格スナップショットの取得
# すべての無期限先物のメタ情報と現在価格を取得します。
meta_and_asset_ctx = info.meta_and_asset_ctxs()
# 戻り値には markPx(マーク価格)、funding(資金調達率)などのフィールドが含まれます。
ポジションと残高の確認
user_state = info.user_state(account.address)
# user_state には marginSummary(証拠金の概要)と assetPositions(各銘柄のポジション)が含まれます。
for pos in user_state["assetPositions"]:
print(pos["position"]["coin"], pos["position"]["szi"]) # 銘柄とポジションサイズ
注文操作
成行注文
order_result = exchange.market_open(
coin="BTC",
is_buy=True,
sz=0.001, # 注文数量
slippage=0.01 # 許容最大スリッページ 1%
)
print(order_result)
指値注文
order_result = exchange.order(
coin="ETH",
is_buy=False,
sz=0.1,
limit_px=3200.0, # 指値価格
order_type={"limit": {"tif": "Gtc"}} # Good Till Cancel
)
tif フィールドでは、Gtc(キャンセルするまで有効)、Ioc(即時約定またはキャンセル)、Alo(Post Only / メイカー注文のみ)などを指定できます。戦略に応じて使い分けます。
バッチ注文
マーケットメイクやグリッド戦略では、複数の注文をまとめて送信することがよくあります。SDK のバッチ注文機能を使うと、ネットワーク往復回数を減らせます。
orders = [
{"coin": "BTC", "is_buy": True, "sz": 0.001, "limit_px": 60000, "order_type": {"limit": {"tif": "Gtc"}}},
{"coin": "BTC", "is_buy": False, "sz": 0.001, "limit_px": 61000, "order_type": {"limit": {"tif": "Gtc"}}},
]
result = exchange.bulk_orders(orders)
注文キャンセルと変更
# キャンセルには coin と oid(注文 ID)が必要です。
cancel_result = exchange.cancel(coin="BTC", oid=123456789)
# 注文変更(cancel + replace)
modify_result = exchange.modify_order(
oid=123456789,
coin="BTC",
is_buy=True,
sz=0.002,
limit_px=59500,
order_type={"limit": {"tif": "Gtc"}}
)
エラー処理のベストプラクティス
プログラム取引では、堅牢なエラー処理が取引ロジックと同じくらい重要です。ネットワークエラー、レート制限、署名エラー、残高不足、注文拒否などを想定しておく必要があります。
以下は、指数バックオフを使ったリトライ処理の例です。
import time
def place_with_retry(exchange, kwargs, max_retries=3):
for attempt in range(max_retries):
try:
return exchange.order(**kwargs)
except Exception as e:
if attempt == max_retries - 1:
raise
wait = 2 ** attempt # 指数バックオフ:1秒、2秒、4秒
time.sleep(wait)
実際の本番環境では、例外の種類ごとに処理を分けることをおすすめします。たとえば、リトライ可能な一時的エラーと、即座に停止すべきリスク管理上のエラーは区別するべきです。
WebSocket で約定をリアルタイム監視する
REST のポーリングは低頻度の戦略に向いていますが、より即時性が必要な場面では WebSocket のプッシュ通知が有効です。
from hyperliquid.websocket_manager import WebsocketManager
def on_fill(data):
print("約定コールバック:", data)
ws = WebsocketManager(base_url="wss://api.hyperliquid.xyz")
ws.subscribe(
{"type": "userFills", "user": account.address},
callback=on_fill
)
ws.start()
完全な WebSocket の購読フォーマットは、Hyperliquid の公式ドキュメントを参照してください。
OneKey ハードウェアウォレットで本番ボットを保護する
ソフトウェアウォレット、いわゆるホットウォレットでは、秘密鍵がメモリやディスク上に存在します。サーバーが攻撃された場合、資金が短時間で流出する可能性があります。実資金を扱う本番用ボットでは、次のような構成が現実的です。
- OneKey ハードウェアウォレットを署名サーバーに接続する
- ボットの取引ロジックが署名対象のトランザクションメッセージを生成する
- メッセージを OneKey に送り、ハードウェアの安全な環境内で署名する
- 署名結果をボットに戻し、Hyperliquid に送信する
この構成では、秘密鍵は常にハードウェア内に保持され、ソフトウェア層からエクスポートできません。EIP-712 の構造化署名により、OneKey の画面上で署名内容を確認できるため、必要に応じてユーザーが取引内容を目視で確認できます。
また、ボット専用の API Agent ウォレットを設定することも検討してください。Hyperliquid は認可されたサブアカウントの仕組みをサポートしており、操作権限を特定アカウントに限定することで、リスクの範囲を抑えやすくなります。
よく使う補助ツールとリソース
- Hyperliquid 公式ドキュメント:API 仕様、フィールド定義、WebSocket 形式の確認
- OneKey 公式サイト:ハードウェアウォレット製品と対応機能の確認
- WalletConnect ドキュメント:WalletConnect 経由で署名をブリッジする場合の参考資料
よくある質問
Q1:SDK と REST API の直接呼び出しは何が違いますか?
SDK は、署名ロジック、リクエスト整形、一般的なエラー処理などをラップしてくれるため、ボイラープレートコードを減らせます。REST API を直接呼び出す方法は柔軟性が高い一方で、EIP-712 署名などを自分で実装する必要があります。初めての場合は SDK から始め、慣れてきたら必要に応じてネイティブ HTTP 呼び出しに切り替えるのがよいでしょう。
Q2:プログラム取引に KYC は必要ですか?
Hyperliquid は分散型プロトコルであり、執筆時点ではウォレットアドレスを使って取引できます。ただし、居住国・地域の規制や税務上の取り扱いは必ず確認してください。コンプライアンス上のリスクはユーザー自身が負う必要があります。
Q3:急変相場でボットの損失が大きくなりすぎるのを防ぐには?
戦略レイヤーで、少なくとも以下のような保護を実装することをおすすめします。
- 最大損失しきい値を設定し、到達時に新規注文を停止する
- 未実現損益と口座純資産の比率を監視する
- ストップロス注文(Sl 注文タイプ)を活用する
- 定期的に実際のポジションが想定と一致しているか確認する
Q4:OneKey ハードウェアウォレットは自動化スクリプトと連携できますか?
OneKey 公式 SDK を使ってハードウェア署名インターフェースを呼び出す方法があります。また、USB / Bluetooth 接続と eth_sign 系のインターフェースを組み合わせて署名する構成も考えられます。本番運用では、署名サービスを取引ロジックから分離して配置し、攻撃面を小さくするのが一般的です。
Q5:バッチ注文 API にレート制限はありますか?
最新のレート制限は、Hyperliquid の公式ドキュメントを確認してください。一般的には、各リクエスト間に適切な遅延を入れ、トークンバケットやスライディングウィンドウなどのアルゴリズムでリクエスト頻度を制御することが推奨されます。レート制限に触れると、注文失敗や一時的な制限につながる可能性があります。
まとめ:スクリプトから本番システムへ
Hyperliquid SDK によって、プログラム取引を始めるハードルは大きく下がりました。ただし、「動くスクリプト」と「信頼できる本番システム」の間には大きな差があります。署名の安全性、エラー処理、リスク管理、ポジション監視、レート制御まで含めて設計する必要があります。
コードを書かずにオンチェーン無期限先物取引を試したい場合は、OneKey Perps が実用的な入口になります。OneKey アプリからスムーズに無期限先物取引へアクセスでき、ハードウェアウォレットと組み合わせることで、自己管理型のセキュリティを維持しながら取引体験を始められます。
開発者やチームがボットを構築する場合も、OneKey を署名バックエンドとして組み込むことで、秘密鍵管理のリスクを抑えやすくなります。まずは OneKey をダウンロードしてウォレット環境を準備し、OneKey Perps で小さな規模から取引フローを確認することをおすすめします。
リスクの低い検証環境で十分にテストし、実資金を扱う前に、署名、注文、キャンセル、異常時停止、ログ監視のすべてが想定どおりに動作するか確認してください。
リスクに関する注意: プログラム取引には高度な技術リスクと市場リスクが伴います。無期限先物取引はレバレッジを伴うため、初期投入額を超える損失が発生する可能性があります。この記事は技術的な参考情報であり、投資助言、金融助言、法的助言ではありません。暗号資産市場は非常に変動が大きく、過去のパフォーマンスは将来の利益を保証するものではありません。ご自身のリスク許容度を踏まえて、慎重に判断してください。



