Type/to search
8
Follow
1364
Followers
Strategi Percepatan Aliran Data: Praktik Teknologi Protobuf pada Platform FMZ
Discussions
Created 2025-08-08 16:09:52  Updated 2025-08-11 11:59:09
 0
 747

ringkasan

Dengan pesatnya pertumbuhan volume perdagangan mata uang kripto, efisiensi dan stabilitas push data real-time menjadi krusial. Solusi push WebSocket berbasis Protocol Buffers (protobuf) yang baru diluncurkan oleh MEXC Exchange menawarkan efisiensi transmisi yang lebih tinggi dan latensi yang lebih rendah dibandingkan format JSON tradisional. Artikel ini merinci cara mengakses dan memproses data menggunakan antarmuka protobuf WebSocket baru MEXC pada platform perdagangan kuantitatif FMZ.

1. Latar Belakang Teknis

1.1 Pengantar Buffer Protokol

Protocol Buffers adalah metode serialisasi struktur data yang dikembangkan oleh Google, yang tidak bergantung pada bahasa pemrograman dan platform. Dibandingkan dengan format JSON, protobuf memiliki keunggulan sebagai berikut:

  • Ukuran data lebih kecil:Pengkodean biner menghemat 30-50% ruang dibandingkan dengan format teks
  • Kecepatan penguraian lebih cepat:Penguraian biner 3-10 kali lebih cepat daripada penguraian JSON
  • Pemeriksaan tipe yang kuat: pemeriksaan tipe waktu kompilasi untuk mengurangi kesalahan waktu proses
  • Kompatibilitas mundur: Mendukung penambahan dan penghapusan bidang tanpa memengaruhi kode yang ada

1.2 Ikhtisar Antarmuka WebSocket MEXC

Antarmuka push protobuf WebSocket yang baru ditambahkan dari MEXC terutama menyediakan aliran data berikut:

https://www.mexc.com/zh-MY/api-docs/spot-v3/websocket-market-streams

  • Private
    PrivateAccountV3Api
    PrivateDealsV3Api
    PrivateOrdersV3Api

  • Public
    PublicAggreBookTickerV3Api
    PublicAggreDealsV3Api
    PublicBookTickerV3Api
    ...

2. Solusi integrasi platform FMZ

2.1 Persiapan Lingkungan

Implementasi antarmuka WebSocket MEXC protobuf pada platform FMZ memerlukan persiapan berikut:

  1. Dapatkan kunci API MEXC:Ajukan Kunci API dan Kunci Rahasia dari situs web resmi MEXC (hanya diperlukan untuk antarmuka pribadi)
  2. Siapkan file definisi protobuf: Dapatkan file .proto yang disediakan oleh MEXC

2.2 Proses Pembentukan Koneksi

Untuk membangunPublicAggreDealsV3ApiAmbil koneksi saluran sebagai contoh:

javascript
function main() { var payload = { "method": "SUBSCRIPTION", "params": [ "[email protected]@100ms@BTCUSDT" ] } var conn = Dial("wss://wbs-api.mexc.com/ws|payload=" + JSON.stringify(payload)) while (true) { var ret = conn.read() if (ret) { Log(ret) } } }

2.3 Penguraian Data Protobuf

Temukan file .proto yang diperlukan:

https://github.com/mexcdevelop // Anda dapat menemukan file .proto pertukaran di sini

javascript
syntax = "proto3"; option java_package = "com.mxc.push.common.protobuf"; option optimize_for = SPEED; option java_multiple_files = true; option java_outer_classname = "PushDataV3ApiWrapperProto"; message PublicAggreDealsV3Api { repeated PublicAggreDealsV3ApiItem deals = 1; string eventType = 2; } message PublicAggreDealsV3ApiItem { string price = 1; string quantity = 2; int32 tradeType = 3; int64 time = 4; } message PushDataV3ApiWrapper { string channel = 1; oneof body { PublicAggreDealsV3Api publicAggreDeals = 314; } optional string symbol = 3; optional string symbolId = 4; optional int64 createTime = 5; optional int64 sendTime = 6; }

Karena platform FMZ berbasis JavaScript, kita perlu menggunakan pustaka protobuf.js untuk menangani data biner:

Alamat pemuatan pustaka JS:

https://cdnjs.cloudflare.com/ajax/libs/protobufjs/7.5.3/protobuf.js

2.4 Langganan dan Pemrosesan Data

Data yang didorong oleh antarmuka WebSocket adalah data biner dan perlu didekodekan:

javascript
while (true) { var ret = conn.read() if (ret) { const uint8arrayData = new Uint8Array(ret) const message = PushDataV3ApiWrapper.decode(uint8arrayData) data = PushDataV3ApiWrapper.toObject(message, { longs: String, enums: String, bytes: String, defaults: true, arrays: true, objects: true }) Log("data:", data) } LogStatus(_D(), data) }

3. Contoh implementasi spesifik

3.1 Berlangganan data saluran PublicAggreDealsV3Api

javascript
let strPushDataV3ApiWrapper = `syntax = "proto3"; option java_package = "com.mxc.push.common.protobuf"; option optimize_for = SPEED; option java_multiple_files = true; option java_outer_classname = "PushDataV3ApiWrapperProto"; message PublicAggreDealsV3Api { repeated PublicAggreDealsV3ApiItem deals = 1; string eventType = 2; } message PublicAggreDealsV3ApiItem { string price = 1; string quantity = 2; int32 tradeType = 3; int64 time = 4; } message PushDataV3ApiWrapper { string channel = 1; oneof body { PublicAggreDealsV3Api publicAggreDeals = 314; } optional string symbol = 3; optional string symbolId = 4; optional int64 createTime = 5; optional int64 sendTime = 6; }` let code = HttpQuery("https://cdnjs.cloudflare.com/ajax/libs/protobufjs/7.5.3/protobuf.js") let exports = {} let module = { exports } new Function("module", "exports", code)(module, exports) let protobuf = module.exports function main() { const PushDataV3ApiWrapper = protobuf.parse(strPushDataV3ApiWrapper).root.lookupType("PushDataV3ApiWrapper") var payload = { "method": "SUBSCRIPTION", "params": [ "[email protected]@100ms@BTCUSDT" ] } // proxy=socks5://x.x.x.x:xxxx var conn = Dial("wss://wbs-api.mexc.com/ws|payload=" + JSON.stringify(payload)) var data = null while (true) { var ret = conn.read() if (ret) { const uint8arrayData = new Uint8Array(ret) const message = PushDataV3ApiWrapper.decode(uint8arrayData) data = PushDataV3ApiWrapper.toObject(message, { longs: String, enums: String, bytes: String, defaults: true, arrays: true, objects: true }) Log("data:", data) } LogStatus(_D(), data) } }

3.2 Uji Perdagangan Langsung

img

Seperti yang Anda lihat, data biner yang dikirim oleh antarmuka diterima, dan setelah didekode, data yang dapat dibaca dicetak:

json
{ "channel":"[email protected]@100ms@BTCUSDT", "symbol":"BTCUSDT", "sendTime":"1754487330985", "publicAggreDeals":{ "deals":[ {"price":"113897.97","quantity":"0.00003103","tradeType":2,"time":"1754487330933"}, {"price":"113897.97","quantity":"0.00095331","tradeType":2,"time":"1754487330934"}, {"price":"113897.97","quantity":"0.00154766","tradeType":2,"time":"1754487330935"} ], "eventType":"[email protected]@100ms" } }

4. Kesimpulan dan Prospek

4.1 Efek Implementasi

Dengan mengimplementasikan antarmuka WebSocket protobuf MEXC pada platform FMZ, kami memperoleh keuntungan berikut:

  1. Peningkatan efisiensi transmisi data: Secara signifikan mengurangi penggunaan bandwidth dibandingkan dengan format JSON
  2. Latensi berkurang: Parsing biner lebih cepat, mengurangi waktu pemrosesan
  3. Optimalisasi pemanfaatan sumber daya: Penggunaan CPU dan memori lebih sedikit

4.2 Skenario Aplikasi

Program ini sangat cocok untuk:

  • Strategi perdagangan frekuensi tinggi
  • Sistem arbitrase waktu nyata
  • Analisis data pasar
  • Sistem Pemantauan Risiko

4.3 Arah Optimasi Masa Depan

  1. Dukungan untuk lebih banyak tipe data: Memperluas dukungan untuk lebih banyak aliran data MEXC

Referensi

  1. Dokumentasi API resmi MEXC
  2. Dokumentasi resmi Protocol Buffers
  3. Panduan Pengembangan Platform Kuantitatif FMZ

Artikel ini ditulis berdasarkan spesifikasi antarmuka WebSocket protobuf terbaru dari bursa MEXC. Contoh kode telah diuji dan diverifikasi pada platform FMZ.

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