آپ کو سکھانے کے لئے کس طرح ایک پرانے حکمت عملی ڈاکنگ ویب ساکٹ حوالہ جات انٹرفیس کی اجازت دیتے ہیں

مصنف:نیکی, تخلیق: 2019-10-08 14:56:58, تازہ کاری: 2023-11-06 19:41:28

img

مربع صفحہ پر بہت سے دلچسپ حکمت عملی ہیں (https://www.fmz.com/squareاس وقت، زیادہ تر cryptocurrency تبادلے API انٹرفیس کا استعمال کر رہے تھےrestپروٹوکول، بہت سی حکمت عملیوں پر مبنی ہیںrestلہذا ، بعض اوقات مارکیٹ کی قیمتوں کی تازہ کاری سست ہوتی ہے۔ اس کے علاوہ ، کچھ ایسے معاملات بھی ہوئے ہیں جن میں ایکسچینج restانٹرفیس مستقبل قریب میں ناکام ہو گیا ہے، جس کے نتیجے میں ایک حکمت عملی ہے کہ مناسب طریقے سے preforming نہیں کر سکتے ہیں.

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

کس طرح ہم حکمت عملی کوڈ کو تبدیل نہیں کر سکتے ہیں، لیکن ویب ساکٹ مارکیٹ کوٹ انٹرفیس استعمال کرتے ہیں؟

یہاں FMZ کوانٹ پلیٹ فارم کی مکمل لچک ہے، ہم استعمال کر سکتے ہیں:

  • حکمت عملی template class library استعمال کریں۔

  • ایکسچینج مارکیٹ کی قیمتوں کا تعین کرنے کے لئے ایک ہک آپریشن انجام دیناexchange.GetTicker.

اس طرح، حکمت عملی کوڈ کو تبدیل کرنے کے بغیر، ڈیٹا کی طرف سے کارفرما اور دھکا استعمال کرتے ہوئے حکمت عملی کی اجازتwebsocketمارکیٹ انٹرفیس.

کوڈ لکھنے کی زبان جاوا اسکرپٹ پروگرامنگ زبان کا استعمال کرتی ہے۔

تجزیہ کی حکمت عملی

مثال کے طور پر، جب ہمیں کلاسیکی حکمت عملی آئس بریکر میں ترمیم کرنے کی ضرورت ہو

حکمت عملی کا پتہ:https://www.fmz.com/strategy/9929

آئیے اسٹریٹیجی کوڈ پر ایک نظر ڈالتے ہیں اور دیکھتے ہیں کہ یہ حکمت عملیtickیہ بنیادی طور پر کی خصوصیات کا استعمال کرتا ہےBuy, Sell، اورLastمیںtickerاعداد و شمارtickerاعداد و شمار FMZ Quant پلیٹ فارم کے API فنکشن سے حاصل کیے جاتے ہیں:exchange.GetTicker. مقصد اب واضح ہے، ہم کو تبدیل کر سکتے ہیںexchange.GetTickerکے ساتھ کامHookآپریشن (یعنی اسے کسی اور ورژن سے تبدیل کریں) ۔

تاہم، ہم آئس بریکر حکمت عملی کوڈ میں اسے دوبارہ نہیں لکھ سکتے، یہ حکمت عملی منطق کو متاثر کرے گا، ہم ہموار ویب ساکٹ سے ڈاکنگ چاہتے ہیں!

تو ہمیں اگلے مرکزی کردار کی ضرورت ہے کہ وہ پہلی بار دکھائی دے۔

ٹیمپلیٹ کلاس لائبریری فنکشن اور init فنکشن ایک ساتھ کام کرتے ہیں

ہم template class library بناتے ہیں جس کا نام ہے: SeamlessConnWS

img

پھر 2 پیرامیٹرز کو مقرر کریںSeamlessConnWS template.

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

یہ دونوں کنٹرول کرنے کے لئے استعمال کیا جاتا ہےwebsocketانٹرفیس کی تقریب، اور کنٹرول ایک مخصوص مارکیٹ کوٹ انٹرفیس کھولنے کے لئے وضاحت کرتا ہے. اس مضمون کی حد کی وجہ سے، ہم صرف preformhookکے لئے آپریشنexchange.GetTickerانٹرفیس. اس وجہ سے ہم پیرامیٹر کو چالو کرنے کی ضرورت ہے ((Hook_GetTicker) کےGetTickerکے ساتھ انٹرفیسwebsocket mode.

ایک بار ٹیمپلیٹ تخلیق کیا جاتا ہے، ہم تبادلہs کے لئے ایک مخصوص رسائی لکھ سکتے ہیںwebsocketٹیمپلیٹ میں انٹرفیس، کچھ قیمت درج کرنے کے لئے سبسکرائب کریں، اور پھر تبادلے کے فنکشن کوڈ کے اعداد و شمار کو آگے بڑھانے کے لئے انتظار کریں. مخصوص کوڈ یہاں بیان نہیں کیا جاتا ہے، آپ کو حوالہ دے سکتے ہیںSeamlessConnWSکوڈ (پہلے سے ہی اوپن سورس) اور ایف ایم زیڈ کوانٹ سرکاری API دستاویزات.initٹیمپلیٹ میں فنکشن اور عالمی متغیرات_DictConnectCreater, _ConnMap:

کوڈ کا حصہ:

var _DictConnectCreater = {
    "Huobi" : WSConnecter_Huobi,
    "Binance" : WSConnecter_Binance,
}

var _ConnMap = {}

function init () {
    if (IsUsedWebSocket) {
        var connectCreater = null
        if (exchanges.length != 1) {
            Log("Switching to the ws interface only for the "exchange" exchange object (ie, the first added exchange object)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "Did not find an implementation"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

یہ دیکھا جا سکتا ہے کہ یہ ٹیمپلیٹ صرفwebsocketدو تبادلے، جو بائننس اور Huobi ہیں کے مارکیٹ انٹرفیس.initآئس بریکر حکمت عملی کو کال کرنے کے لئے جب اس بات کا یقین کرنے کے لئے ہےSeamlessConnWSسانچے،initفنکشن کو پہلے حقیقی مارکیٹ چلانے کی ترقی کے دوران انجام دیا جائے گا.

ہم مواد کی جگہ لے سکتے ہیںexchange.GetTickerکوڈ کے ساتھ فنکشنwebsocketانٹرفیس، اس طرح ویب ساکٹ مارکیٹ کے لئے ہموار ڈاکنگ حاصل کرنے.

SeamlessConnWSٹیمپلیٹ کا پتہ:https://www.fmz.com/strategy/167755

اس کا استعمال کیسے کریں

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

img

کلک کرنے کے لئے اس بات کا یقین چیک کریں ٹیمپلیٹ، اور محفوظ کریں بٹن.

ایک آئس بریکر حکمت عملی حقیقی وقت روبوٹ بنائیں، تبادلے ٹریڈنگ جوڑی کا انتخاب کرتا ہے.

img

پر کنٹرول پیرامیٹرز کھولیںSeamlessConnWS template.

img

اسے چلائیں:

img

آسانی سے دھکا ڈیٹا کو دیکھنے کے لئے، لائن 157 پر، ہم خاص طور پر ایک پرنٹ لاگ کوڈ شامل، یہ تبادلے کی طرف سے دھکا ڈیٹا آؤٹ پٹ کرے گا.

img

روبوٹ لاگ میں دکھائیں:

img

اس طرح، ہم حکمت عملی کوڈ کی کسی بھی لائن کو تبدیل کرنے کی ضرورت نہیں ہے، اور ہموار کے ساتھ ڈاکنگ حاصل کرتا ہےwebsocketمارکیٹ انٹرفیس.

یہ مثال صرف حکمت عملی کا استعمال کرنے کے لئے ہےexchange.GetTickerمارکیٹ انٹرفیس فنکشن، دیگر مارکیٹ انٹرفیس جیسےexchange.GetDepth, exchange.GetTradesاورexchange.GetRecordsایک ہی معمول ہیں! معیاری ٹیمپلیٹ کے لئےSeamlessConnWS، آپ اسے مزید بڑھانے کی کوشش کر سکتے ہیں.

خصوصی لنک کے نفاذ کے لئےwebsocketٹیمپلیٹ میں، استعمال کریںDialفنکشن (ڈائل فنکشن کے بارے میں API دستاویزات ملاحظہ کریں) ، جو ضرورت کے مطابق ایڈجسٹ کیا جا سکتا ہے. مثال کے طور پر آپ پیرامیٹر -2 کوread()تقریب، صرف تازہ ترین اعداد و شمار کی واپسی کرتا ہے جس میں بفرwebsocketکنکشن قبول کرتا ہے.

پڑھنے کے لئے شکریہ


متعلقہ

مزید