avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

ڈیٹا اسٹریم اسپیڈ اپ حکمت عملی: ایف ایم زیڈ پلیٹ فارم پر پروٹوبف ٹیکنالوجی پریکٹس

میں تخلیق کیا: 2025-08-08 16:09:52, تازہ کاری: 2025-08-11 11:59:09
comments   0
hits   368

[TOC]

خلاصہ

کریپٹو کرنسی تجارتی حجم کی تیز رفتار ترقی کے ساتھ، ریئل ٹائم ڈیٹا پش کی کارکردگی اور استحکام بہت اہم ہو گیا ہے۔ پروٹوکول بفرز (پروٹوبف) پر مبنی MEXC ایکسچینج کا نیا لانچ کیا گیا WebSocket پش سلوشن روایتی JSON فارمیٹس کے مقابلے میں زیادہ ٹرانسمیشن کی کارکردگی اور کم لیٹنسی پیش کرتا ہے۔ یہ مضمون FMZ مقداری تجارتی پلیٹ فارم پر MEXC کے نئے WebSocket پروٹوبف انٹرفیس کا استعمال کرتے ہوئے ڈیٹا تک رسائی اور اس پر کارروائی کرنے کا طریقہ بتاتا ہے۔

1. تکنیکی پس منظر

1.1 پروٹوکول بفرز کا تعارف

پروٹوکول بفرز گوگل کے تیار کردہ ڈیٹا ڈھانچے کو سیریلائز کرنے کے لیے زبان سے آزاد اور پلیٹ فارم سے آزاد طریقہ ہے۔ JSON فارمیٹ کے مقابلے میں، protobuf کے درج ذیل فوائد ہیں:

  • چھوٹا ڈیٹا سائز: بائنری انکوڈنگ ٹیکسٹ فارمیٹ کے مقابلے میں 30-50% جگہ بچاتی ہے۔
  • تیز تر تجزیہ کی رفتار: بائنری پارسنگ JSON پارسنگ سے 3-10 گنا تیز ہے۔
  • مضبوط قسم کی جانچ: رن ٹائم کی غلطیوں کو کم کرنے کے لیے کمپائل ٹائم ٹائپ چیکنگ
  • پسماندہ مطابقت: موجودہ کوڈ کو متاثر کیے بغیر فیلڈز کو شامل کرنے اور حذف کرنے کی حمایت کرتا ہے۔

1.2 MEXC ویب ساکٹ انٹرفیس کا جائزہ

MEXC کا نیا شامل کردہ WebSocket پروٹوبف پش انٹرفیس بنیادی طور پر درج ذیل ڈیٹا اسٹریمز فراہم کرتا ہے:

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

  • Private PrivateAccountV3Api PrivateDealsV3Api PrivateOrdersV3Api

  • Public PublicAggreBookTickerV3Api PublicAggreDealsV3Api PublicBookTickerV3Api …

2. FMZ پلیٹ فارم انٹیگریشن حل

2.1 ماحولیاتی تیاری

FMZ پلیٹ فارم پر MEXC protobuf WebSocket انٹرفیس کو لاگو کرنے کے لیے درج ذیل تیاریوں کی ضرورت ہے:

  1. MEXC API کلید حاصل کریں۔MEXC کی سرکاری ویب سائٹ سے API کلید اور خفیہ کلید کے لیے درخواست دیں (صرف نجی انٹرفیس کے لیے درکار ہے)
  2. پروٹوبف ڈیفینیشن فائل تیار کریں۔: MEXC کی طرف سے فراہم کردہ .proto فائل حاصل کریں۔

2.2 کنکشن کے قیام کا عمل

قائم کرناPublicAggreDealsV3Apiایک مثال کے طور پر چینل کنکشن لیں:

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 پروٹوبف ڈیٹا پارس کرنا

مطلوبہ .proto فائل تلاش کریں:

https://github.com/mexcdevelop // آپ ایکسچینج کی پروٹو فائلیں یہاں تلاش کر سکتے ہیں

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;                      
}

چونکہ FMZ پلیٹ فارم جاوا اسکرپٹ پر مبنی ہے، ہمیں بائنری ڈیٹا کو ہینڈل کرنے کے لیے protobuf.js لائبریری استعمال کرنے کی ضرورت ہے:

جے ایس لائبریری لوڈنگ ایڈریس:

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

2.4 ڈیٹا سبسکرپشن اور پروسیسنگ

WebSocket انٹرفیس کے ذریعہ دھکیل دیا گیا ڈیٹا بائنری ڈیٹا ہے اور اسے ڈی کوڈ کرنے کی ضرورت ہے:

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. مخصوص نفاذ کی مثال

3.1 PublicAggreDealsV3Api چینل ڈیٹا کو سبسکرائب کریں۔

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 لائیو ٹریڈنگ ٹیسٹ

ڈیٹا اسٹریم اسپیڈ اپ حکمت عملی: ایف ایم زیڈ پلیٹ فارم پر پروٹوبف ٹیکنالوجی پریکٹس

جیسا کہ آپ دیکھ سکتے ہیں، انٹرفیس کے ذریعے دھکیل دیا گیا بائنری ڈیٹا موصول ہوتا ہے، اور ڈی کوڈنگ کے بعد، پڑھنے کے قابل ڈیٹا کو پرنٹ کیا جاتا ہے:

{
    "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. نتیجہ اور آؤٹ لک

4.1 نفاذ کا اثر

FMZ پلیٹ فارم پر MEXC کے protobuf WebSocket انٹرفیس کو نافذ کرنے سے، ہم درج ذیل فوائد حاصل کرتے ہیں:

  1. ڈیٹا ٹرانسمیشن کی کارکردگی میں بہتری: JSON فارمیٹ کے مقابلے بینڈوڈتھ کے استعمال کو نمایاں طور پر کم کرتا ہے۔
  2. کم تاخیر: تیز تر بائنری پارسنگ، پروسیسنگ کا وقت کم کرنا
  3. وسائل کے استعمال کی اصلاح: CPU اور میموری کا کم استعمال

4.2 درخواست کے منظرنامے۔

یہ پروگرام خاص طور پر اس کے لیے موزوں ہے:

  • اعلی تعدد تجارتی حکمت عملی
  • ریئل ٹائم آربیٹریج سسٹم
  • مارکیٹ ڈیٹا تجزیہ
  • رسک مانیٹرنگ سسٹم

4.3 مستقبل کی اصلاح کی ہدایات

  1. مزید ڈیٹا کی اقسام کے لیے سپورٹ: مزید MEXC ڈیٹا اسٹریمز کے لیے سپورٹ کو وسیع کریں۔

حوالہ

  1. MEXC سرکاری API دستاویزات
  2. پروٹوکول بفرز سرکاری دستاویزات
  3. FMZ مقداری پلیٹ فارم ڈویلپمنٹ گائیڈ

یہ مضمون MEXC ایکسچینج کے تازہ ترین WebSocket protobuf انٹرفیس تفصیلات کی بنیاد پر لکھا گیا ہے۔ FMZ پلیٹ فارم پر کوڈ کی مثالوں کی جانچ اور تصدیق کی گئی ہے۔