ایجاد کنندہ ڈیجیٹل کرنسی کی مقدار سازی کے پلیٹ فارم websocket استعمال کرنے کا گائیڈ ((ڈائل فنکشن اپ گریڈ کے بعد تفصیلات)

مصنف:گھاس, تخلیق: 2019-04-01 11:06:09, تازہ کاری: 2019-12-04 10:41:25

بنیادی طور پر تمام ڈیجیٹل کرنسی تبادلے ویب ساکٹ بھیجنے کی تجارت کی حمایت کرتے ہیں ، اور کچھ تبادلے ویب ساکٹ کو اکاؤنٹ کی معلومات کو اپ ڈیٹ کرنے کی حمایت کرتے ہیں۔ ویب ساکٹ عام طور پر کم تاخیر ، اعلی تعدد ، پلیٹ فارم کی حد سے آزاد ہے ، اس کے ساتھ ساتھ آپ کے ساتھ ہے۔https://zhuanlan.zhihu.com/p/22693475

اس مضمون میں بنیادی طور پر ایف ایم زیڈ کے موجد کی کوانٹائزنگ پلیٹ فارم ، جاوا اسکرپٹ زبان کا استعمال کرتے ہوئے ، پلیٹ فارم کے احاطہ کردہ ڈائل فنکشن کا استعمال کرتے ہوئے ، دستاویزات میں تفصیلات اور پیرامیٹرز ، ڈائل کی تلاش ، مختلف افعال کو حاصل کرنے کے لئے ، ڈائل فنکشن کو کئی بار اپ ڈیٹ کیا گیا ہے ، اس مضمون میں اس کا احاطہ کیا جائے گا ، اور اس میں واٹس ایپ پر مبنی ایونٹ ڈرائیونگ کی حکمت عملی ، اور ملٹی ایکسچینج کو مربوط کرنے کے مسائل کا ذکر کیا گیا ہے۔

1.websocket连接:

عام طور پر ، براہ راست رابطہ قائم کرنا ممکن ہے ، جیسے کہ سکے کی سیکیورٹی ٹکر کو آگے بڑھانا:

var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")

واپسی کے اعداد و شمار کے لئے کمپریسڈ فارمیٹ ہے، جو کنکشن میں مخصوص ہے، کمپریسڈ کمپریسڈ فارمیٹ کی وضاحت کرتا ہے، موڈ کا مطلب ہے کہ واپسی کے اعداد و شمار کو جوڑنے کی ضرورت ہے، جیسے کنکشن OKEX:

var client = Dial("wss://real.okex.com:10441/websocket?compress=true|compress=gzip_raw&mode=recv")

ڈائل فنکشن دوبارہ رابطہ قائم کرنے کی حمایت کرتا ہے ، جو بنیادی Go زبان کے ذریعہ کیا جاتا ہے ، جس کا پتہ لگانے والا رابطہ منقطع ہوجاتا ہے ، جو درخواست کے اعداد و شمار کے مواد کو پہلے سے ہی یو آر ایل میں ہے ، جیسے کہ ابھی بنان کی مثال ، بہت آسان ہے ، اس کا استعمال کرنے کی سفارش کی جاتی ہے۔ اگر آپ کو آرڈر بھیجنے کی ضرورت ہے تو ، آپ خود ہی دوبارہ رابطہ قائم کرسکتے ہیں۔

var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr|reconnect=true")

کچھ تبادلے کی درخواستیں یو آر ایل میں ہیں ، اور کچھ چینلز بھی ہیں جن کے لئے آپ کو اپنے آپ کو سبسکرائب کرنے کی ضرورت ہوتی ہے ، جیسے سکے بیس:

client = Dial("wss://ws-feed.pro.coinbase.com", 60)
client.write('{"type": "subscribe","product_ids": ["BTC-USD"],"channels": ["ticker","heartbeat"]}')

2.websocket读取:

عام طور پر موت کے دور میں پڑھنا جاری رہتا ہے ، کوڈ مندرجہ ذیل ہے:

function main() {
    var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
    while (true) {
        var msg = client.read()
        var data = JSON.parse(msg) //把json字符串解析为可引用的object
// 处理data数据
    }
}

ڈبلیو ایس ایس ڈیٹا کی رفتار بہت تیز ہے، گو کے نچلے حصے میں تمام ڈیٹا کو قطار میں رکھا جاتا ہے، جب پروگرام پڑھتا ہے، تو پھر واپس آ جاتا ہے؛ اور روبوٹ کی ترتیب وغیرہ کی کارروائیوں میں تاخیر ہوتی ہے، جس سے ڈیٹا کی جمع ہوسکتی ہے. ٹرانزیکشن کو آگے بڑھانے، اکاؤنٹ کو آگے بڑھانے، گہرائی میں ڈالنے کے لئے، ہم تاریخی ڈیٹا کی ضرورت ہوتی ہے، مارکیٹ کے اعداد و شمار کے لئے، ہم زیادہ تر معاملات میں صرف تازہ ترین اور تاریخی اعداد و شمار کی پرواہ نہیں کرتے ہیں.

اگر کوئی پیرامیٹر شامل نہیں کیا جاتا ہے تو ، یہ سب سے پرانا ڈیٹا واپس کرتا ہے ، جب کوئی ڈیٹا نہیں ہوتا ہے تو اسے واپس کرنے کے لئے بلاک کرتا ہے۔ اگر آپ تازہ ترین ڈیٹا چاہتے ہیں تو ، آپ کلائنٹ.read ((-2) کا استعمال کرکے تازہ ترین ڈیٹا کو فوری طور پر واپس کرسکتے ہیں ، لیکن جب کوئی ڈیٹا نہیں ہوتا ہے تو ، یہ null واپس آجاتا ہے ، جس کا فیصلہ کرنے کی ضرورت ہے۔

اس بات پر منحصر ہے کہ کیشے میں موجود پرانے اعداد و شمار کے ساتھ کیا سلوک کیا جاتا ہے ، اور جب کوئی ڈیٹا نہیں ہوتا ہے تو یہ رک جاتا ہے یا نہیں ، پڑھنے کے مختلف پیرامیٹرز ہوتے ہیں ، خاص طور پر مندرجہ ذیل گراف میں ، جو پیچیدہ نظر آتے ہیں ، لیکن پروگرام کو زیادہ لچکدار بناتے ہیں۔img

3۔ ایک سے زیادہ ایکسچینج ویب سوکٹ کو مربوط کریں:

واضح طور پر اس صورت حال کے لئے ایک آسان طریقہ کار استعمال نہیں کیا جاسکتا ہے ، کیونکہ ایک تبادلے میں انتظار کے پیغامات کو روک دیا جاتا ہے ، اس وقت دوسری تبادلے میں کوئی نیا پیغام نہیں ملتا ہے۔ عام طریقہ کار یہ ہے:

function main() {
    var binance = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
    var coinbase = Dial("wss://ws-feed.pro.coinbase.com", 60)
    coinbase.write('{"type": "subscribe","product_ids": ["BTC-USD"],"channels": ["ticker","heartbeat"]}')
    while (true) {
        var msgBinance = binance.read(-1) // 参数-1代表无数据立即返回null,不会阻塞到有数据返回
        var msgCoinbase = coinbase.read(-1)
        if(msgBinance){
            // 此时币安有数据返回
        }
        if(msgCoinbase){
            // 此时coinbase有数据返回
        }
        Sleep(1) // 可以休眠1ms
    }
}

4.断线重连问题:

اس حصے کو سنبھالنا مشکل ہے ، کیونکہ پش ڈیٹا میں رکاوٹ آسکتی ہے ، یا پش میں بہت زیادہ تاخیر ہوتی ہے ، یہاں تک کہ اگر دل کی دھڑکن وصول کرنے کے قابل بھی نہیں ہے تو ، اس کا مطلب یہ نہیں ہے کہ ڈیٹا آگے بڑھ رہا ہے ، ایک واقعہ وقفہ مقرر کیا جاسکتا ہے ، اگر وقفہ سے زیادہ کوئی تازہ کاری موصول نہیں ہوتی ہے تو دوبارہ رابطہ قائم کیا جاسکتا ہے ، اور یہ بہتر ہے کہ کچھ عرصے کے بعد اور rest کے نتائج کا موازنہ کیا جائے تاکہ یہ دیکھا جاسکے کہ آیا اعداد و شمار درست ہیں۔

5.使用websocket的一般程序框架:

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

var tradeTime = Date.now()
var accountTime = Date.now()
function trade(data){
    if(Date.now() - tradeTime > 2000){//这里即限制了2s内只交易一次
        tradeTime = Date.now()
        //交易逻辑
    }
}
function GetAccount(){
    if(Date.now() - accountTime > 5000){//这里即限制了5s内只获取账户一次
        accountTime = Date.now()
        return exchange.GetAccount()
    }
}
function main() {
    var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr|reconnect=true");
    while (true) {
        var msg = client.read()
        var data = JSON.parse(msg)
        var account = GetAccount()
        trade(data)
    }
}

6.总结:

مختلف تبادلے کے ویب ساکٹ کے کنکشن کا طریقہ ، ڈیٹا بھیجنے کا طریقہ ، سبسکرائب کرنے کے قابل مواد ، ڈیٹا فارمیٹ اکثر مختلف ہوتے ہیں ، لہذا پلیٹ فارم کو پیک نہیں کیا جاتا ہے اور اسے خود ہی ڈائل فنکشن کے ذریعہ مربوط کرنے کی ضرورت ہوتی ہے۔ اس مضمون میں بنیادی طور پر کچھ بنیادی احتیاطی تدابیر کا احاطہ کیا گیا ہے ، اگر آپ کے سوالات ہیں تو ، آپ کا استقبال ہے۔

پی ایس۔ کچھ تبادلے اگرچہ ویب ساکٹ مارکیٹ کی پیش کش نہیں کرتے ہیں ، لیکن اصل میں لینڈنگ ویب سائٹ پر ٹیوننگ کی خصوصیت کا استعمال کرتے ہوئے ، ویب ساکٹ کو آگے بڑھانے کے لئے استعمال کیا جاتا ہے ، تحقیق کرنے پر ، آپ کو سبسکرپشن فارمیٹ اور واپسی کی شکل مل جاتی ہے۔ کچھ ایسا لگتا ہے کہ انکرپٹڈ ہے ، جسے بیس 64 کوڈ کو دوبارہ کھولنے کے ساتھ دیکھا جاسکتا ہے۔


متعلقہ

مزید

xaifer48wss کنکشن چلنے کے کچھ عرصے بعد ، جے ایس این. ڈیکوڈر. جے ایس این ڈیکوڈ ایرر: متوقع قیمت: لائن 1 کالم 1 (چار 0) جے ایس این کی خرابی ، براہ کرم پوچھیں کہ اس کے ساتھ کیا کرنا ہے۔ خودکار دوبارہ رابطہ قائم کیا گیا ہے ، دوبارہ دستی طور پر ایک بار پھر لکھنا ضروری ہے۔

ہاؤہاؤبِیَنَن مستقل معاہدہ کیوں؟ ایک منٹ کے بعد بِیَنَن کے اکاؤنٹ کی معلومات تبدیل ہو جاتی ہیں، اور ایک منٹ کے بعد بِیَنَن خالی ہو جاتا ہے۔

xaifer48موصول ہوا، شکریہ

گھاسغلطیوں کو حل کریں، پیغامات کو پرنٹ کریں اور کوشش کریں، غلطیوں کو قبول کریں.

کوانٹیٹیشنچونکہ بائنن کے قواعد کے مطابق ، صرف تبھی پیغام بھیجا جاتا ہے جب اکاؤنٹ کی معلومات میں تبدیلی آتی ہے۔ کیا یہ سچ ہے؟