最近,FMZプラットフォームは,高性能分散型取引所であるHyperliquid DEXのサポートを追加し,ユーザーに分散型取引に参加するためのより多くのオプションを提供します.現在,FMZプラットフォームのドッカー機能は,Hyperliquid
超液体プラットフォームの概要
Hyperliquidは,ゼロから最適化された高性能L1ブロックチェーンであり,完全にチェーン上のオープンな金融システムを構築するというビジョンを持っています.ユーザーは効率的なネイティブコンポーネントと相互作用することで,エンドユーザーにとってスムーズな体験を保証しながら,アプリケーションを独立して作成することができます.
Hyperliquid L1
の性能は,許可のない金融アプリケーションエコシステムをサポートするのに十分である.すべての注文,引き出し,取引,清算は,ブロックレイテンシーが1秒未満で,完全に透明な方法でチェーン上で完了する.現在,チェーンは,1秒間に10万注文までの処理能力をサポートしている. Hyperliquid L1は,Hotstuffとその後のアルゴリズムにインスピレーションを受けたHyperBFTと呼ばれるカスタムコンセンサスアルゴリズムを使用しています.コンセンサスメカニズムとネットワークアーキテクチャの両方が,高性能ブロックチェーンのニーズを満たすために,底から上へと最適化されています.
このガイドを通じて,FMZプラットフォームのHyperliquid DEXで プログラム化および定量的な取引を迅速に開始し,より多くの取引機会を発見するのを助けることを願っています.
REST プロトコル
Webソケットプロトコル
FMZ プラットフォームの Add プラットフォームページでは,Hyperliquid スポットと先物交換オブジェクトを設定できます:
メインネットAPPアドレス:
実際の利用では,メインネットワークは比較的安定し,高速です.
対応する REST プロトコル API インターフェースノード アドレスは:https://api.hyperliquid.xyz
- わかった
メッセージ署名に関する情報も異なります.source == "a",chainId = 42161
.
テストネットワーク APP アドレス:
テストネットワークはしばしばクラッシュしますが,テストインターフェイスとして DEXの取引機能に慣れるためにのみ使用されます.
対応する REST プロトコル API インターフェースノード アドレスは:https://api.hyperliquid-testnet.xyz
- わかった
メッセージ署名に関する情報も異なります.source == "b",chainId = 421614
.
ほとんどのDEX取引所のウォレット接続方法と同様に,ウォレットAPPを使用して Hyperliquid に接続するための QR コードをスキャンできます (ウォレットを Arbitrum に切り替えてログインするコードをスキャンします.テストネットワークとメインネットワークは同じです).
テスト資産を請求できます. USDCをテスト用に受け取った後, Hyperliquid に預金するために
預金ボタンをクリックして預金します 預金には財布の確認が必要で Arbitrum で少しETHが消費されます
Hyperliquid APP ページで手動取引を行うとき,ページは自動的にプロキシウォレットアドレスとプライベートキーを生成し,ブラウザに記録され,ブラウザページに注文を出すなどの操作に使用されます.
Hyperliquid API ページで必要なプロキシウォレットアドレスと対応するプライベートキーを作成できます:
FMZ プラットフォームでこの情報を設定できます (設定インターフェースは上記です)
ウォレットアドレス: Hyperliquid に接続されたウォレットアドレス (プロキシウォレットアドレスではないことに注意). Wallet PrivateKey: Hyperliquid に接続されたウォレットプライベートキー (オプションで,転送などの API を呼び出すときにのみ必要であり,空白にすることができます). 秘密鍵: プロキシウォレット プライベートキー (前回のステップで生成された,認証後に表示されるプライベートキー)
交換オブジェクトの設定に必要な情報:
設定が完了したら,FMZプラットフォームでテストできます. テスト練習のために FMZプラットフォームの"デバッグツール"を直接使用します.
テストネット情報で構成された Hyperliquid Exchange オブジェクトを使用している場合は,これを使用する際にいくつかの切り替え操作を行う必要があります.
function main() {
// REST protocol API address switched to testnet
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a Mainnet, b Testnet
exchange.IO("source", "b")
return exchange.GetAccount()
}
メインネットの構成には上記の切り替え操作は必要ありません. Hyperliquid DEX 取引所のスポットおよび先物製品に関連する API インターフェースは,細部にわずかな違いのみでほぼ同じです.次に,超流動の先物交換対象メインネット構成情報そしてテストネットの構成情報テストのために
function main() {
var markets = exchange.GetMarkets()
if (!markets) {
throw "get markets error"
}
var tbl = {
type: "table",
title: "test markets",
cols: [
"key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty",
"MaxQty", "MinNotional", "MaxNotional", "CtVal", "CtValCcy"
],
rows: []
}
for (var symbol in markets) {
var market = markets[symbol]
tbl.rows.push([
symbol, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize,
market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal, market.CtValCcy
])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
var depth = exchange.GetDepth("ETH_USD.swap")
var asks = depth.Asks
var bids = depth.Bids
Log("asks 3", bids[2])
Log("asks 2", bids[1])
Log("asks 1", bids[0])
Log("bids 1", asks[0])
Log("bids 2", asks[1])
Log("bids 3", asks[2])
}
function main() {
var account = exchange.GetAccount()
return account
}
機能の結果:
function main() {
var symbols = ["ETH_USD.swap", "XRP_USD.swap", "HYPE_USD.swap"]
var arrDir = ["market_buy", "sell", "buy"]
var markets = exchange.GetMarkets()
var ids = []
for (var i in symbols) {
var symbol = symbols[i]
var side = arrDir[i]
var ticker = exchange.GetTicker(symbol)
var info = markets[symbol]
exchange.SetPrecision(info.PricePrecision, info.AmountPrecision)
// USDC
var qty = 15
var price = null
var amount = null
if (side == "market_buy") {
price = -1
side = "buy"
amount = qty / ticker.Last
} else {
price = side == "buy" ? ticker.Last * 0.9 : ticker.Last * 1.1
amount = qty / price
}
var id = exchange.CreateOrder(symbol, side, price, amount)
ids.push(id)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var id of ids) {
var order = exchange.GetOrder(id)
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
Sleep(500)
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
var orders = exchange.GetOrders("USD.swap")
for (var order of orders) {
exchange.CancelOrder(order.Id, order)
Sleep(1000)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// Set the current position to cross position
exchange.IO("cross", true)
// Set leverage
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}
機能の結果:
exchange.GetRawJSON() はレバレッジ設定要求の応答情報を返します.
{
状態: OK , 応答: { タイプ: デフォルト }
インターフェースのパラメータは比較的複雑で,URLエンコーディング方法を使用して渡すことはできないため,exchange.IOfunction
JSON 文字列のみをパラメータとして渡すことができる.以下の例は,様々なインターフェースの呼び出しである.
超液体参照資料:https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order
var params = {"type": "scheduleCancel", "time": new Date().getTime()}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
{
status 取引された:174.57424.”}: err , response : 取引量が十分になるまで予定されたキャンセル時間を設定できません.必須:
この機能には制限があります.この機能を使用するには,アカウントが取引レベルに達する必要があります.
TWAPの命令を作成します.
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , Order Quantity: 1 , twapOrder order has position requirement, minimum value of 100 USD
// a: 0, i.e. SOL_USDT.swap
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
TWAP命令をキャンセル
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
テストネット,新しい代理財布を承認する.
function main() {
var params = {
"type": "approveAgent",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"agentAddress": "0xAAAA",
"agentName": "test02",
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
認証が成功しました
{
状態: OK , 応答: { タイプ: デフォルト }
https://app.hyperliquid-testnet.xyz/API
.預金庫から資産を回収する
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
テストネット 財布に資産を引く
function main() {
var params = {
"type": "withdraw3",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"time": new Date().getTime(),
"destination": "0xAAA"
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
資産を即時取引と先物取引 (永続契約) の間で移転する.
function main() {
var params = {
"type": "usdClassTransfer",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"toPerp": false,
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
false
,回転方向を示す:先物 -> 即時.true
, 回転方向を表示する:スポット -> フューチャー.主なネットワークWSインターフェースのアドレス:
メインネット: wss://api.hyperliquid.xyz/ws
REST プロトコル API インターフェイスは最近のトランザクションデータを取得するためのインターフェースを持っていないため,Webソケットインターフェイスにはこのチャンネルがあり,サブスクリプションすることができます.
サブスクリプション メッセージ構造
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
デバッグツールで実行されたテストの例:
function main() {
var loopCount = 20
var subMsg = {
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
var conn = Dial("wss://api.hyperliquid.xyz/ws")
conn.write(JSON.stringify(subMsg))
if (conn) {
for (var i = 0; i < loopCount; i++) {
var msg = conn.read(1000)
if (msg) {
Log(msg)
}
}
}
conn.close()
Log("End of test")
}
上記のテストは最新のドッカーに基づいています. Hyperliquid DEX 交換をサポートするために最新のドッカーをダウンロードする必要があります.
応援してくれて ありがとう