[TOC]
Die FMZ-Plattform unterstützt Hyperliquid DEX, eine leistungsfähige dezentrale Börse, die den Nutzern mehr Möglichkeiten bietet, dezentrale Transaktionen zu betreiben. Die FMZ-Plattform wurde umfassend aktualisiert und unterstützt Hyperliquid-Trading in Instant- und Permanent-Kontrakten und umfasst alle API-Funktionen der DEX.
Übersicht über die Hyperliquid-Plattform
Hyperliquid ist eine hochleistungsfähige L1-Blockchain, die von Grund auf optimiert ist und deren Vision es ist, ein vollständig gekettetes, offenes Finanzsystem zu bauen. Benutzer können selbständig Anwendungen erstellen, indem sie mit effizienten nativen Komponenten interagieren, während sie die Geschwindigkeit der Endbenutzererfahrung gewährleisten.
Hyperliquid L1 ist leistungsfähig genug, um ein Lizenzloses Finanz-Applikations-Ökosystem zu unterstützen. Alle Aufträge, Widerrufe, Transaktionen und Abrechnungen werden in der Kette in einer vollständig transparenten Weise durchgeführt, mit einer Blockverzögerung von weniger als 1 Sekunde. Derzeit unterstützt die Kette die Verarbeitung von bis zu 100.000 Aufträgen pro Sekunde.
Hyperliquid L1 nutzt ein kundenspezifisches Konsens-Algorithmus namens HyperBFT, das von Hotstuff und seinen Nachfolgern inspiriert wurde. Sowohl der Konsensmechanismus als auch die Netzwerk-Architektur wurden von Grund auf optimiert, um den Bedarf an einer leistungsstarken Blockchain zu erfüllen.
Mit diesem Leitfaden möchten wir Ihnen helfen, die programmatisierten und quantitativen Transaktionen von Hyperliquid DEX auf der FMZ Plattform schnell zu erlernen und weitere Handelsmöglichkeiten zu erschließen.
REST-Protokoll - Die Praxis der Kommunikationsoberfläche. - Transaktions-Interface-Praktiken (aufzu- oder zurückzufordern) - Anfragen über Transaktionen (Konto, Bestellung) - Weitere Funktionen (Konto, Vertragsschlüsselung, Geldkassenbeschaffung, Vermögensschlüsselung in die Brieftasche usw.)
Websocket-Protokoll - Abonnement-Praktiken für den Austausch von Informationen (keine Trades-Schnittstelle in der REST-Schnittstelle, ergänzt durch eine Websocket-Schnittstelle)
Auf der Seite zum Hinzufügen von Börsen auf der FMZ-Plattform können die Objekte von Hyperliquid Spot- und Futures-Börsen konfiguriert werden:
Umwelteinteilung Wie bei den meisten Börsen gibt es auch bei Hyperliquid Testumgebungen.
Das Internet ist stabiler und schneller als das, was man tatsächlich fühlt.
Die entsprechende REST-API-Node Adresse:https://api.hyperliquid.xyz
Das ist nicht wahr.
Die Unterschriften der Nachrichten sind auch unterschiedlich:source == "a"
,chainId = 42161
Testnetze werden häufig heruntergeladen, aber nur als Testinterface verwendet, um die Transaktionsfunktionen auf der DEX zu kennen.
Die entsprechende REST-API-Node Adresse:https://api.hyperliquid-testnet.xyz
Das ist nicht wahr.
Die Unterschriften der Nachrichten sind auch unterschiedlich:source == "b"
,chainId = 421614
Wie bei den meisten DEX-Börsen können Sie mit der Wallet-App (Scan-Login, Test-Net, Home-Net) den Wechsel zu Hyperliquid durchführen.
Wenn Sie sich erst einmal mit einem Testnetz vertraut machen möchten, können Sie nach dem Anschluss der Brieftasche an Hyperliquid direkt auf der Hyperliquid-Seite den Wasserhahn finden.
Nach dem Erhalt des Testvermögens und der USDC für den Test können Sie den "Deposit" -Button klicken und Hyperliquid einzahlen (Arbitrum-Testnetz, vorzugsweise ein wenig ETH).
Wenn Sie auf den Button "Einzahlung" klicken, benötigen Sie eine Geldbörsen-Verifizierung, um ein bisschen ETH auf Arbitrum zu verbrauchen.
Bei manuellen Transaktionen auf der Hyperliquid APP-Seite erzeugt die Seite automatisch eine Proxy-Wallet-Adresse und einen privaten Schlüssel, die im Browser gespeichert werden, um die auf der Browserseite aufgeführten Aktionen zu erledigen.
Die benötigte Proxy-Wallet-Adresse und den entsprechenden privaten Schlüssel können auf der Hyperliquid API-Seite erstellt werden:
1. Nenne einen Namen für die neue Agent-Wallets.
2. Adresse und privaten Schlüssel generieren.
3. Benutze eine Hyperliquid-verbundene Brieftasche, um eine Agentwallet zu autorisieren.
Konfigurieren Sie die Adresse der Brieftasche, den privaten Schlüssel auf FMZ
Diese Informationen können dann auf der FMZ-Plattform konfiguriert werden (siehe Konfigurationsoberfläche oben).
Die Informationen, die ein Austauschobjekt benötigt, um zu konfigurieren:
Wenn die Konfiguration abgeschlossen ist, können wir sie auf der FMZ-Plattform testen, und wir können direkt mit dem "Debugging Tool" der FMZ-Plattform testen.
Wenn Sie ein Hyperliquid-Austauschobjekt mit einer Testnetz-Informationskonfiguration verwenden, müssen einige Umschaltvorgänge durchgeführt werden, z. B.:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
Die Hauptnetzkonfiguration erfordert keine der oben genannten Umschaltvorgänge. Die API-Schnittstellen für die aktuellen und Futures-Varianten der Hyperliquid DEX-Börse sind nahezu identisch, mit nur wenigen Unterschieden.HauptnetzkonfigurationsinformationenundTestnetzkonfigurationsinformationenDieHyperliquid FuturesDie Börsenobjekte wurden getestet.
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("买3", bids[2])
Log("买2", bids[1])
Log("买1", bids[0])
Log("卖1", asks[0])
Log("卖2", asks[1])
Log("卖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() {
// 设置当前为全仓
exchange.IO("cross", true)
// 设置杠杆
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}
exchange.GetRawJSON ((() gibt die Antwort auf die Anforderung zur Einstellung eines Hebels zurück:
Ich bin nicht derjenige, der das Problem hat.
Da die Interfaceparameter der Börsen so komplex sind, dass sie nicht mit der URL-Einkodierung übertragen werden können, wird die URL-Einkodierung in der Webseite der Börse verwendet.exchange.IO
Bei Funktionsaufrufen kann nur ein JSON-String als Parameterübertragung verwendet werden.
Hyperliquid ist eine Software zur Nutzung von Hyperliquid.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 Ich bin nicht derjenige, der das Problem hat, aber ich bin derjenige, der es hat.174.57424.”}: err , response : Kann die geplante Stornierungszeit nicht festlegen, bis genügend Volumen gehandelt wurde.
Diese Funktion ist nur dann nutzbar, wenn das Konto zum Transaktionsniveau erreicht hat.
Erstellen Sie einen TWAP-Auftrag.
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , 订单量 : 1 , twapOrder 订单有头寸要求,最少100美元价值
// a : 0 , 即 SOL_USDT.swap 这个品种
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Die TWAP-Bestellung wurde zurückgezogen.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Das Testnetz autorisiert eine neue Proxy-Wallets.
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))
}
Erfolgreich zurückgegeben:
Ich bin nicht derjenige, der das Problem hat.
https://app.hyperliquid-testnet.xyz/API
Das ist ein großes Problem.Sie haben sich in den letzten Jahren um Geld gekümmert.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Das Testnetz, das Geld in die Brieftasche.
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))
}
Verteilung von Vermögenswerten zwischen Aktien/Futures (permanente Verträge)
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
Es gibt eine andere Art der Verknüpfung.true
Die Abgrenzung zeigt die Richtung an: spot -> futures.Die Haupt-WS-Schnittstelle ist:
Mainnet: wss://api.hyperliquid.xyz/ws
Da die REST-API-Schnittstelle keine Schnittstelle für aktuelle Transaktionsdaten erhält, kann der Websocket-Schnittstelle diesen Kanal abonnieren.
Abonnement-Nachrichtenstruktur
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Tests, die in Debugging Tools durchgeführt werden:
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("测试结束")
}
Der Test basiert auf den neuesten Trustees, die für die Unterstützung der Hyperliquid DEX-Börse zum Download erforderlich sind.
Danke für die Unterstützung und danke fürs Lesen.