Type/to search
8
Follow
1364
Followers
Amalan Kuantitatif Pertukaran DEX (3) - Panduan Pengguna Protokol Vertex
Discussions
Created 2025-02-09 16:05:08  Updated 2025-02-19 10:37:07
 0
 1254

img

Ini adalah artikel ketiga tentang amalan kuantitatif pertukaran DEX Kali ini kami akan memperkenalkan panduan penggunaan protokol Vertex.

Mukadimah

Dalam rangka kerja pertukaran terpencar tradisional (DEX), peniaga kuantitatif sering perlu berkompromi: sama ada menerima kegelinciran tinggi dan kecekapan pelaksanaan rendah model pembuat pasaran automatik (AMM), atau jatuh ke dalam dilema teknikal pemecahan kecairan silang rantaian dan fungsi terbitan tunggal. Kemunculan Protokol Vertex sedang mentakrifkan semula sempadan dalam rantaian strategi kuantitatif melalui eksperimen gabungan "terpencar + peringkat institusi" - tidak ada dilema "pilih satu daripada dua" di sini, hanya keseimbangan muktamad kelajuan, kedalaman dan kebebasan.

Sebagai DEX pertama yang menyepadukan kumpulan mudah tunai berbilang rantaian bersatu, buku pesanan hibrid (CLOB) dan pasaran mata wang terbenam, Vertex mengambil "pengalaman terpusat, jiwa terpencar" sebagai terasnya dan membuka laluan unik untuk pedagang kuantitatif:

Takrif baharu tentang kelajuan dan kecairan

Dengan evolusi berterusan teknologi blockchain, sempadan antara pertukaran terpusat tradisional (CEX) dan pertukaran terdesentralisasi (DEX) semakin kabur. Sebagai hab platform Vertex, Vertex Edge bukan sahaja membentuk semula kelajuan transaksi dan kecairan, tetapi juga menggabungkan teknologi pemadanan pesanan yang sangat baik dan kelebihan penjagaan diri melalui penyepaduan silang rantai, membawa pengalaman DeFi baharu kepada pedagang global.

  • Menyatukan kecairan silang rantaian: memecahkan pemecahan kecairan
    Dalam pasaran tradisional, kecairan antara rantaian yang berbeza sering berpecah-belah, menyebabkan peniaga tidak dapat menikmati harga dan kedalaman transaksi terbaik. Vertex Edge dilahirkan dalam konteks ini, merealisasikan perkongsian segerak kecairan kekal merentas pelbagai rantaian melalui rangkaian buku pesanan bersatu.
    Pada masa ini, Vertex Edge telah meliputi kecairan kontrak kekal pada 7 rantaian arus perdana termasuk Arbitrum, Base, Sei, Blast, Mantle, Sonic dan Abstract, supaya peniaga tidak perlu lagi bimbang tentang penyebaran kecairan, dan boleh berdagang pada harga terbaik, benar-benar mencapai kecairan global yang lancar.

  • Perdagangan buku pesanan hibrid: keseimbangan sempurna antara padanan ultra pantas dan penyelesaian dalam rantaian
    Vertex Edge mengguna pakai model dagangan buku pesanan hibrid, dan teknologi terasnya termasuk:

    Pemadanan buku pesanan luar rantai: Menggunakan mekanisme pemadanan luar rantaian berkelajuan ultra tinggi untuk mencapai pemadanan pesanan dengan kependaman hanya 5-15 milisaat, setanding dengan kebanyakan pertukaran terpusat;
    Enjin risiko dalam rantaian dan AMM: Sistem pengurusan risiko dan pembuat pasaran automatik (AMM) digunakan pada setiap rantaian yang disokong untuk memastikan pesanan boleh diselesaikan dengan cara yang selamat dan telus selepas padanan.
    Seni bina ini bukan sahaja memastikan tindak balas urus niaga yang sangat pantas, tetapi juga menyediakan pengguna dengan keselamatan terdesentralisasi melalui penyelesaian dalam rantaian, membolehkan peniaga menikmati prestasi peringkat CEX sambil mengekalkan kebebasan penjagaan diri aset.

  • Pengurusan sempadan silang bersatu: penggunaan setiap sen modal secara cekap
    Platform Vertex membekalkan pengguna dengan keupayaan pengurusan rentas margin yang bersatu Sama ada ia adalah pasaran langsung, kontrak kekal atau pasaran pembiayaan terbenam, semua aset dan kedudukan boleh disepadukan ke dalam akaun margin bersatu.
    Reka bentuk ini membolehkan pengguna untuk:

    Fungsi berbilang akaun: mengurus berbilang akaun dalam dompet tunggal dan memperuntukkan dana dengan lebih cekap;
    Kedudukan spot yang dileveraj: Gunakan semua aset sebagai margin untuk mencapai kecekapan modal yang lebih tinggi;
    Pengurusan risiko yang fleksibel: Deposit, kedudukan dan data untung rugi dipertimbangkan secara bersatu untuk mengawal pendedahan risiko dengan tepat.

Sambungkan Vertex

Log masuk alamat halaman "protokol puncak":

https://app.vertexprotocol.com/

Sambungkan dompet anda

Vertex adalah sama seperti kebanyakan DEX Selepas log masuk ke dalam dapp, anda perlu menyambung ke dompet untuk kebenaran Sistem sub-akaun Vertex dibezakan berdasarkan label mengambil bahagian dalam pengiraan alamat dompet untuk mendapatkan alamat dompet sub-akaun.

Sebagai contoh, gunakanWalletConnectAlamat dompet semasa menyambung ialah:0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c43, label lalai ialah "lalai", dan alamat sub-akaun yang dikira ialah:0x7a5ec2748e9065794491a8d29dcf3f9edb8d7c4364656661756c740000000000. Teg lalai ialah:64656661756c740000000000

Vertex menyokong pengecasan semula berbilang aset Secara amnya, anda memilih untuk mengecas semula USDC sebagai margin dan terus menggunakan dompet yang disambungkan untuk memindahkan transaksi. Perlu diingatkan bahawa operasi seperti mengeluarkan, memindahkan, menghantar token dan memindahkan sub-akaun pada Vertex akan menggunakan USDC, dan yurannya tidak rendah, jadi operasi ini perlu dipanggil dengan berhati-hati.

Beralih kepada rantaian lain:

img

Pada puncak, rantai yang berbeza mempunyai maklumat konfigurasi yang berbeza seperti nod, pengindeks dan ID rantai Rantaian lalai untuk enkapsulasi FMZ ialahArbitrum Oneboleh digunakan.Log(HttpQuery("https://gateway.prod.vertexprotocol.com/v1/query?type=contracts"))Tanya ID rantaian, maklumat kontrak yang digunakan, dsb.

Konfigurasikan pada FMZ

Selepas log masuk ke FMZ.COM, pada halaman konfigurasi pertukaran, pilih "Cryptocurrency", pilih Vertex Exchange, anda boleh terus mengkonfigurasi kunci proksi dompet pada dapp Sudah tentu, anda juga boleh mengkonfigurasi kunci persendirian dompet Pada Vertex, anda boleh menggunakan antara muka untuk menguruskan keizinan / penyahizinan kunci proksi dan operasi lain, yang juga lebih mudah.

Kunci Proksi:

Sebagai contoh, pada halaman hujung hadapan pertukaran DEX puncak: Penyemak imbas Chrome (hidupkan penyahpepijatan) -> Aplikasi -> Storan Setempat -> https://app.vertex -> tetapan pengguna vertex

Konfigurasikan Vertex Exchange

Dua perkara perlu dikonfigurasikan pada FMZ Yang pertama ialah alamat dompet (bukan alamat kunci proksi yang digunakan untuk menandatangani, ia mesti alamat dompet yang disambungkan ke dapp). Yang kedua ialah kunci rahsia yang digunakan untuk menandatangani (ia boleh menjadi kunci peribadi dompet atau kunci proksi). Memandangkan kunci proksi boleh digunakan, alamat dompet dan kunci yang dikonfigurasikan tidak semestinya sepasang.

Sistem sub-akaun Vertex dikenal pasti dengan tag Teg lalai yang digunakan pada FMZ ialahdefaultAkaun utama teg, jika anda perlu menukar, anda boleh menggunakannya dalam kod:

javascript
exchange.IO("subAccountTag", "default") // 切换到主子账号 exchange.IO("subAccountTag", "test01") // 切换到标签名为 test01 的子账号

Berlatih di FMZ

Selepas mengkonfigurasi maklumat konfigurasi pertukaran dan menggunakan program penjaga yang boleh mengakses antara muka puncak, kami boleh mula menulis beberapa kod untuk operasi praktikal.

Kami menggunakan sub-akaun utama untuk ujian (sub-akaun dengan teg: lalai), dan kami gunakanArbitrumrangkaian.

Keadaan pasaran dan maklumat rantaian

  1. Dapatkan maklumat pasaran kontrak
javascript
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) + "`") return markets }

img

Dapat dilihat bahawa jenis kontrak pada Vertex ialah kontrak berasaskan USDC, margin ialah USDC dan nilai kontrak mewakili mata wang yang sepadan, contohnya.BTC_USDC.swapIaitu, kontrak BTC berasaskan USDC, satu kontrak mewakili kedudukan BTC. Kod di atas menunjukkan cara meminta maklumat pasaran kontrak dan mengeluarkan pelbagai kandungan.

  1. Dapatkan maklumat mendalam (buku pesanan)
javascript
function main() { var depths = [{"symbol": "ETH_USDC"}, {"symbol": "SOL_USDC"}, {"symbol": "BTC_USDC"}] for (var ele of depths) { ele["depth"] = exchange.GetDepth(ele["symbol"] + ".swap") } var tbls = [] for (var ele of depths) { var tbl = {"type": "table", "title": ele["symbol"], "cols": ["level", "price", "amount"], "rows": []} var depth = ele["depth"] for (var i = 0 ; i < 3 ; i++) { tbl["rows"].push(["卖" + (i + 1), depth.Asks[i].Price, depth.Asks[i].Amount]) } tbl["rows"].reverse() for (var i = 0 ; i < 3 ; i++) { tbl["rows"].push(["买" + (i + 1), depth.Bids[i].Price, depth.Bids[i].Amount]) } tbls.push(tbl) } LogStatus("`" + JSON.stringify(tbls) + "`") }

img

  1. Maklumat aliran pesanan urus niaga pasaran
javascript
function main() { var arrTrades = [{"symbol": "ETH_USDC"}, {"symbol": "SOL_USDC"}, {"symbol": "BTC_USDC"}] for (var ele of arrTrades) { ele["trades"] = exchange.GetTrades(ele["symbol"] + ".swap") } var tbls = [] for (var ele of arrTrades) { var tbl = {"type": "table", "title": ele["symbol"], "cols": ["Time", "Price", "Amount", "side"], "rows": []} var trades = ele["trades"] for (var trade of trades) { tbl["rows"].push([_D(trade.Time), trade.Price, trade.Amount, trade.Type == 0 ? "买入" : "卖出"]) } tbls.push(tbl) } LogStatus("`" + JSON.stringify(tbls) + "`") }

img

  1. Data K-line
javascript
function main() { let c = KLineChart({ overlay: true }) let bars = exchange.GetRecords("SOL_USDC.swap") if (!bars) { return } bars.forEach(function(bar, index) { c.begin(bar) Log(index, bar) c.close() }) }

Carta puncak
img

Lukisan operasi strategi FMZ
img

  1. Kadar Pembiayaan
javascript
function main() { var fundings = exchange.GetFundings() var tbl = { "type": "table", "title": "GetFundings", "cols": ["Symbol", "Interval", "Time", "Rate"], "rows": [], } for (var f of fundings) { tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"]) } LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`") }

img

Kitaran kadar pembiayaan ialah 1 jam.

  1. Tanya data dalam rantaian dan volum pesanan maksimum untuk akaun dan produk tertentu

Max Order Size
Gets the max order size possible of a given product for a given subaccount.

javascript
function main() { // GET [GATEWAY_REST_ENDPOINT]/query?type=max_order_size&product_id={product_id}&sender={sender}&price_x18={price_x18}&direction={direction} // price_x18=3000000000000000000000 : 3000 USDC // product_id=4 : ETH_USDC.swap // sender=0x123 : e.g. 0x123 return HttpQuery("https://gateway.prod.vertexprotocol.com/query?type=max_order_size&product_id=4&sender=0x123&price_x18=3000000000000000000000&direction=short") }
  • Faktor penskalaan kebanyakannya: 1e18, jadi: 3000000000000000000000 ialah 3000 USDC.
  • product_id=4 ID produk dagangan, 4 ialah kontrak Ethereum, ETH_USDC.swap
  • penghantar ialah alamat subakaun yang dikira daripada alamat dompet dan teg subakaun.

Data yang dikembalikan oleh permintaan akhir ialah:{"status":"success","data":{"max_order_size":"170536415320344899"},"request_type":"query_max_order_size"}
Ia boleh dilihat bahawa akaun semasa aset yang tersedia untuk kontrak kekal Ethereum dengan harga 3000, kuantiti pesanan maksimum untuk pesanan jual ialah: 0.17 ETH

  1. Tanya maklumat kunci proksi bagi kebenaran dompet

Linked Signer
Retrieves current linked signer of a provided subaccount

javascript
function main() { return HttpQuery("https://gateway.prod.vertexprotocol.com/query?type=linked_signer&subaccount=0x123") }

Maklumat kebenaran ditemui:

{"status":"success","data":{"linked_signer":"0x79119..."},"request_type":"query_linked_signer"}
Alamat "0x79119..." ialah alamat proksi untuk membenarkan transaksi pesanan apabila menyambung ke dompet pada halaman hadapan Vertex. Keizinan ini boleh dibatalkan atau ditambah (melalui panggilan API).

perdagangan

Berikut adalah fokus artikel ini Kami telah lama sibuk hanya untuk menjalankan urus niaga dengan mudah dan cepat di bursa terdesentralisasi.

  1. Buat pesanan

Uji perdagangan yang lebih mudah dan buat pesanan had biasa.

javascript
function main() { var id1 = exchange.CreateOrder("ETH_USDC.swap", "buy", 2000, 0.1) var id2 = exchange.CreateOrder("SOL_USDC.swap", "buy", 60, 2) Log("ETH_USDC.swap id1:", id1) Log("SOL_USDC.swap id2:", id2) var orders = exchange.GetOrders("USDC.swap") var tbl = {type: "table", title: "test GetOrders", 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) + "`") }

img

  1. Batalkan pesanan
javascript
function main() { var orders = exchange.GetOrders("USDC.swap") var tbl = {type: "table", title: "test GetOrders", 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]) exchange.CancelOrder(order.Id) } LogStatus("`" + JSON.stringify(tbl) + "`") return exchange.GetOrders() }

img

  1. Kedudukan pertanyaan
javascript
function main() { // 使用市价单下单持仓 exchange.SetCurrency("ETH_USDC") exchange.SetContractType("swap") exchange.Buy(-1, 0.01) var positions = exchange.GetPositions() var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []} for (var p of positions) { tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel]) } LogStatus("`" + JSON.stringify(tbl) + "`") }

img

img

Perlu diingatkan bahawa data yang disediakan oleh API Vertex menyimpang daripada kandungan yang dipaparkan pada halaman hujung hadapan Vertex, terutamanya disebabkan oleh perbezaan dalam harga pegangan purata dan keuntungan dan kerugian pegangan Perkara ini telah disampaikan semula kepada pasukan Vertex dan mungkin dinaik taraf dan dikemas kini kemudian.

4、Trigger Order

Memandangkan Tertib Pencetus puncak adalah bebas daripada titik akhir,exchange.IOApabila membuat pesanan bersyarat untuk fungsi, anda perlu menentukanTrigger: https://trigger.prod.vertexprotocol.com, mari teruskan dengan operasi praktikal.

  • nonce: Parameter nonce perlu dihantar untuk Pesanan Pencetus seterusnya mempunyai keperluan pengiraan, jadi untuk kemudahan penggunaan, kaedah direka semasa pengkapsulan untuk mendapatkan nonce yang dikira.
  • tamat tempoh: Keperluan yang sama dikenakan pada parameter tamat tempoh, dan tamat tempoh yang dikira juga perlu diperolehi.
javascript
function main() { // isTrigger : true var nonce = exchange.IO("nonce", true) // 如果是 Trigger Order 订单用到的 nonce 需要指定 isTrigger : true // flag , reduceOnly var expiration = exchange.IO("expiration", "GTC", false) // 设置订单为GTC类型,非只减仓 // params var params = { "place_order": { "product_id": 4, "order": { "sender": "0x123...", "priceX18": "4100000000000000000000", "amount": "-100000000000000000", "expiration": expiration, "nonce": nonce }, "trigger": { "price_above": "4000000000000000000000" } } } return exchange.IO("api", "POST", "https://trigger.prod.vertexprotocol.com/v1/execute", "", JSON.stringify(params)) }

img

Di bawah titik akhir pencetus, terdapat juga:

  • Senaraikan Antara Muka Pesanan Pencetus
  • Cancel Trigger Orders
  • Cancel Product Trigger Orders

Kaedah panggilan adalah serupa dengan Letakkan Pesanan Pencetus, jadi saya tidak akan menerangkan butiran di sini.

Pengurusan sub-akaun

  1. Tukar teg subakaun

Teg subakaun lalai ialah:default, kami bertukar kepada teg tersuai:subAcc02

javascript
function main() { exchange.IO("subAccountTag", "subAcc02") return exchange.GetAccount() }

img

img

Apabila memindahkan wang ke alamat sub-akaun, Vertex sebenarnya akan membuat sub-akaun ini.

  1. Pindahkan dana ke sub-akaun Vertex

Nonce akaun perlu disoal dan dihantar ke dalam parameter antara muka pemindahan sebagai parameter.

https://gateway.prod.vertexprotocol.com/v1/query?type=nonces&address=0x6B3f11d807809B0b1E5e3243df04a280d9F94bF4

javascript
function main() { var ret = HttpQuery("https://gateway.prod.vertexprotocol.com/v1/query?type=nonces&address=0x123...") var obj = JSON.parse(ret) var nonce = obj["data"]["tx_nonce"] Log("nonce:", nonce) var params = { "transfer_quote": { "tx": { // default -> subAcc02 "sender": "0xabc...", // default "recipient": "0xdef...", // subAcc02 "amount": "7000000000000000000", "nonce": nonce } } } return exchange.IO("api", "POST", "https://gateway.prod.vertexprotocol.com/v1/execute", "", JSON.stringify(params)) }

Contohnya: 0xabc... sepadan dengan alamat sub-akaun dengan teg lalai.
0xdef... sepadan dengan alamat sub-akaun dengan tag subAcc02.
0x123... ialah alamat dompet.

Pengeluaran, penempaan/pemusnahan token kecairan, dsb.

  1. Keluarkan syiling dari Vertex ke dompet
javascript
function main() { var ret = HttpQuery("https://gateway.prod.vertexprotocol.com/v1/query?type=nonces&address=0x123...") var obj = JSON.parse(ret) var nonce = obj["data"]["tx_nonce"] Log("nonce:", nonce) var params = { "withdraw_collateral": { "tx": { "sender": "0xabc...", // default "productId": 0, // USDC : 0 , precision : 6 "amount": "10000000", // 10 USDC "nonce": nonce } } } return exchange.IO("api", "POST", "https://gateway.prod.vertexprotocol.com/v1/execute", "", JSON.stringify(params)) }

Beri perhatian kepada ketepatan USDC.

  1. Mencetak LP
javascript
function main() { var ret = HttpQuery("https://gateway.prod.vertexprotocol.com/v1/query?type=nonces&address=0x123...") var obj = JSON.parse(ret) var nonce = obj["data"]["tx_nonce"] Log("nonce:", nonce) var params = { "mint_lp": { "tx": { "sender": "0xabc...", // default "productId": 31, // USDT_USDC "amountBase": "10000000000000000000", "quoteAmountLow": "9999900000000000000", "quoteAmountHigh": "10100000000000000000", "nonce": nonce, } } } return exchange.IO("api", "POST", "https://gateway.prod.vertexprotocol.com/v1/execute", "", JSON.stringify(params)) }

Token LP Mint untuk pasangan daganganUSDT_USDCKumpulan pertukaran menambah kecairan.

  1. Musnahkan LP
javascript
function main() { var ret = HttpQuery("https://gateway.prod.vertexprotocol.com/v1/query?type=nonces&address=0x123...") var obj = JSON.parse(ret) var nonce = obj["data"]["tx_nonce"] Log("nonce:", nonce) var params = { "burn_lp": { "tx": { "sender": "0xabc...", // default "productId": 31, // USDT_USDC "amount": "7500000000000000000", "nonce": nonce, } } } return exchange.IO("api", "POST", "https://gateway.prod.vertexprotocol.com/v1/execute", "", JSON.stringify(params)) }

Antara Muka Websocket

Titik akhir antara muka websocket:wss://gateway.prod.vertexprotocol.com/v1/ws

[🚧🚧🚧ing...]

END

Ujian di atas adalah berdasarkan kustodian terkini Anda perlu memuat turun kustodian terkini untuk menyokong agregator Vertex DEX.

Terima kasih atas sokongan anda dan terima kasih kerana membaca.

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)