आप कैसे एक पुरानी रणनीति वेबसॉकेट उद्धरण इंटरफेस डॉकिंग जाने के लिए सिखाना

लेखक:अच्छाई, बनाया गयाः 2019-10-08 14:56:58, अद्यतन किया गयाः 2023-11-06 19:41:28

img

स्क्वायर पेज पर कई रोचक रणनीतियाँ हैं (https://www.fmz.com/squareउस समय, अधिकांश क्रिप्टोक्यूरेंसी एक्सचेंजों एपीआई इंटरफ़ेस का उपयोग कर रहे थेrestप्रोटोकॉल, कई रणनीतियाँrestइसलिए कभी-कभी बाजार उद्धरण अद्यतन धीमा होता है। इसके अलावा कुछ मामले ऐसे भी आए हैं जिनमें एक्सचेंजrestइंटरफ़ेस निकट भविष्य में विफल हो गया है, जिसके परिणामस्वरूप एक रणनीति है कि ठीक से प्रदर्शन नहीं कर सकता है।

जब तक रणनीति को संशोधित किया जाता है, तब तक वेबसॉकेट इंटरफ़ेस के लिए समर्थन जोड़ने के लिए रणनीति कोड में कुछ परिवर्तन की आवश्यकता होती है, जो आमतौर पर काफी परेशानी भरा होता है (नीति को बदलने की कठिनाई इसे फिर से लिखने से बहुत अधिक होती है) ।

कैसे हम रणनीति कोड नहीं बदल सकते हैं, लेकिन वेबसॉकेट बाजार बोली इंटरफ़ेस का उपयोग करें?

यहाँ एफएमजेड क्वांट प्लेटफॉर्म की पूरी लचीलापन है, हम उपयोग कर सकते हैंः

  • रणनीति टेम्पलेट क्लास लाइब्रेरी का प्रयोग करें.

  • विनिमय बाजार में उद्धरण प्राप्त करने के लिए हुक संचालन करना जैसे किexchange.GetTicker.

इस प्रकार, रणनीति कोड को बदलने के बिना, डेटा का उपयोग करने वाली रणनीति को डेटा द्वारा संचालित और धक्का दिया जाता हैwebsocketबाज़ार इंटरफेस।

कोड लेखन भाषा जावास्क्रिप्ट प्रोग्रामिंग भाषा का उपयोग करती है।

विश्लेषण रणनीति

उदाहरण के लिए, जब हमें एक क्लासिक रणनीति को संशोधित करने की आवश्यकता होती है आइसब्रेकर

रणनीतिक पता:https://www.fmz.com/strategy/9929

आइए रणनीति कोड पर एक नज़र डालें और देखें कि रणनीतिtickयह मुख्य रूप से के गुणों का उपयोग करता हैBuy, Sell, औरLastमेंtickerडेटा।tickerडेटा FMZ क्वांट प्लेटफॉर्म के एपीआई फ़ंक्शन द्वारा प्राप्त किया जाता हैःexchange.GetTicker. लक्ष्य अब स्पष्ट है, हम बदल सकते हैंexchange.GetTickerकार्य के साथHookऑपरेशन (यानी इसे दूसरे संस्करण से प्रतिस्थापित करें) ।

हालाँकि, हम इसे आइसब्रेकर रणनीति कोड में फिर से नहीं लिख सकते, यह रणनीति तर्क को प्रभावित करेगा, हम वेबसॉकेट के लिए निर्बाध डॉकिंग चाहते हैं!

तो हमें अगले नायक को डेब्यू करने की जरूरत है।

टेम्पलेट क्लास लाइब्रेरी फ़ंक्शन और init फ़ंक्शन एक साथ काम करते हैं

हम एक टेम्पलेट वर्ग पुस्तकालय बनाया नामितः SeamlessConnWS

img

फिर 2 पैरामीटर सेट करने के लिएSeamlessConnWS template.

  • IsUsedWebSocket का उपयोग करें
  • Hook_GetTicker@IsUsedWebSocket

img

इन दोनों का उपयोग नियंत्रण करने के लिए किया जाता है कि क्या उपयोग करने के लिएwebsocketइंटरफ़ेस समारोह, और नियंत्रण एक विशिष्ट बाजार बोली इंटरफ़ेस खोलने के लिए निर्दिष्ट करता है। इस लेख की सीमा के कारण, हम केवल पूर्वhookके लिए ऑपरेशनexchange.GetTickerइंटरफ़ेस. इसलिए हम पैरामीटर सक्षम करने की जरूरत है ((Hook_GetTicker) केGetTickerइंटरफेसwebsocket mode.

एक बार टेम्पलेट बनाया है, हम एक्सचेंजs के लिए एक विशिष्ट पहुँच लिख सकते हैंwebsocketटेम्पलेट में इंटरफ़ेस, कुछ उद्धरणों की सदस्यता लें, और फिर एक्सचेंज के फ़ंक्शन कोड के लिए डेटा को धक्का देने के लिए प्रतीक्षा करें। विशिष्ट कोड यहाँ वर्णित नहीं है, आप संदर्भित कर सकते हैंSeamlessConnWSकोड (पहले से ही ओपन सोर्स) और एफएमजेड क्वांट आधिकारिक एपीआई दस्तावेज।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दो एक्सचेंजों के बाजार इंटरफ़ेस, जो कि Binance और 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फ़ंक्शन (डायल फ़ंक्शन के बारे में एपीआई प्रलेखन देखें), जिसे आवश्यकता के अनुसार समायोजित किया जा सकता है। उदाहरण के लिए आप पैरामीटर -2 को निर्दिष्ट कर सकते हैंread()फ़ंक्शन, जो बफर में केवल नवीनतम डेटा लौटाता हैwebsocketकनेक्शन स्वीकार करता है।

पढ़ने के लिए धन्यवाद


संबंधित

अधिक