हाथ से हाथ मिलाओ सिखाता है कि कैसे एक पुराने पुराने रणनीति वेबसॉकेट बाजार इंटरफेस के लिए निर्बाध रूप से जोड़ने

लेखक:छोटे सपने, बनाया गयाः 2019-09-26 15:47:53, अद्यतन किया गयाः 2023-10-18 19:54:36

img

हाथ से हाथ मिलाओ सिखाता है कि कैसे एक पुराने पुराने रणनीति वेबसॉकेट बाजार इंटरफेस के लिए निर्बाध रूप से जोड़ने

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

  • 1. "टेम्पलेट लाइब्रेरी" नीति का उपयोग करें.
  • दो, हाँ।exchange.GetTickerफ़ंक्शन को हुक ऑपरेशन के साथ प्राप्त करें।

इस प्रकार, नीति को कोड की एक पंक्ति को बदलने के बिना लागू किया जा सकता है, और नीति को कोड की एक पंक्ति को बदलने के बिना लागू किया जा सकता है।websocketइस प्रकार, एक डेटा ड्राइव, जो कि व्यापार इंटरफेस द्वारा प्रेरित किया जाता है, चालू हो जाता है। कोडिंग भाषा का उपयोगJavaScriptभाषाएँ ।

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

उदाहरण के लिए, हम एक क्लासिक पुरानी रणनीति को बदलना चाहते हैं, "आइसब्रेकर"।

रणनीतिक पते

हम पहले रणनीति कोड को देखते हैं और पता चलता है कि रणनीति टिक बाजार द्वारा संचालित है, मुख्य रूप से इस्तेमाल किया जाता हैtickerडेटा मेंBuySellLastये विशेषताएंtickerएफएमजेड प्लेटफॉर्म के एपीआई फ़ंक्शन से डेटाःexchange.GetTickerयह एक बहुत ही अच्छा तरीका है कि हम अपने लक्ष्य को प्राप्त कर सकते हैं।exchange.GetTickerफ़ंक्शनHookआप इसे एक अलग संस्करण में बदल सकते हैं। लेकिन हम इसे आइसब्रेकर की रणनीति में नहीं बदल सकते हैं, यह रणनीति को प्रभावित करेगा, हम एक निर्बाध जुड़ाव चाहते हैं! इसलिए, अगले मुख्य पात्र को मैदान में उतरना होगा।

"टेम्पलेट लाइब्रेरी" औरinitफ़ंक्शन का सहयोग

हमने एक "टेम्पलेट लाइब्रेरी" बनाई है जिसका नाम हैःसीमलेस CONWS, रिक्त प्रारंभिक कोड ।

img

और फिरसीमलेस CONWSटेम्पलेट 2 पैरामीटर सेट करता है

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

img

उपयोग को चालू करने या नहीं करने के लिए नियंत्रणwebsocketइंटरफेस फ़ंक्शन, नियंत्रण निर्दिष्ट उद्योग इंटरफ़ेस खोलने के लिए. इस मामले में, क्योंकि विस्तार सीमित है, केवलexchange.GetTickerइंटरफेस हुक ऑपरेशन करता है. इसलिए पैरामीटर केवल चालू है.GetTickerइंटरफ़ेस वेबसॉकेट मोड के लिए नियंत्रण पैरामीटर हैः Hook_GetTicker.

टेम्पलेट बनाया गया है, आप टेम्पलेट में विशिष्ट एक्सचेंजों का उपयोग कर सकते हैंwebsocketइंटरफेस, कुछ बाजारों के लिए सदस्यता लें, और फिर एक्सचेंजों के डेटा को आगे बढ़ाने के लिए इन सुविधाओं के कोड का इंतजार करें। विशिष्ट कोड अब अवर्गीकृत नहीं हैं, सीमलेस कॉनडब्ल्यूएस कोड ((सार्वजनिक है) / एपीआई दस्तावेज देखें। टेम्पलेट में एक नज़र डालने की आवश्यकता है।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("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
        }
        var isFound = false 
        for (var name in _DictConnectCreater) {
            if (exchange.GetName() == name) {
                connectCreater = _DictConnectCreater[name]
                isFound = true
            }
        }

        if (!isFound) {
            throw "没有找到实现"
        }
        
        if (Hook_GetTicker) {
            var symbol = exchange.GetCurrency()
            _ConnMap.GetTicker = connectCreater("GetTicker", symbol)
            exchange.GetTicker = function () {
                return _C(_ConnMap.GetTicker.Read)
            }
        }
        // ... 
        
    }
}

आप देख सकते हैं कि यह टेम्पलेट केवल दो एक्सचेंजों को लागू करता है।websocketइस तरह के लेन-देन के लिए एक इंटरफेस है, जो कि सिक्का और टोकन के बीच है।initफ़ंक्शन का उद्देश्य है, "आइसब्रेकर" रणनीति को संदर्भित करना।सीमलेस CONWSटेम्पलेट के बाद, वास्तविक डिस्क चलाने पर, यह पहले किया जाता हैinitफ़ंक्शन, स्वचालित रूप से बंद कर सकते हैंexchange.GetTickerफ़ंक्शन सामग्री को उपयोग के लिए प्रतिस्थापित करेंwebsocketइंटरफेस का कोड कार्यान्वयन, जिससे निर्बाध जुड़ाव संभव होwebsocketयह एक बहुत अच्छा तरीका है।

SeamlessConnWS टेम्पलेट पता

इसका उपयोग कैसे करें

यह बहुत आसान है!सीमलेस CONWSटेम्पलेट को अपनी नीति संग्रह में कॉपी करने के बाद, यह केवल "आइसब्रेकर" नीति के संदर्भ के लिए काम करता है, जैसा कि नीचे दिखाया गया हैः

img

इस तरह से, आप अपने जीवन को बदल सकते हैं।

"आइसब्रेकर" रणनीति बनाने के लिए वास्तविक रोबोट, एक्सचेंजों ने बिआन का चयन कियाimg.. चालू करेंसीमलेस CONWSटेम्पलेट पर नियंत्रण पैरामीटर।img

चल रहा है:img

यह देखने के लिए कि क्या डेटा भेजा गया है, मैंने विशेष रूप से 157 पंक्तियों के साथ एक कोड जोड़ा है, जो एक प्रिंट लॉग के लिए है, जो एक्सचेंज द्वारा भेजे गए डेटा को आउटपुट करता है।img

रोबोट लॉग में दिखाया गयाःimg

इस प्रकार नीति कोड की एक पंक्ति को संशोधित किए बिना, वेबसॉकेट बाज़ार इंटरफ़ेस और नीति निर्बाध जुड़ाव का उपयोग करने के लिए संभव है।

यह केवल उपयोग के लिए हैexchange.GetTickerबाज़ार इंटरफेस फ़ंक्शन के लिए रणनीति की व्याख्या, अन्य बाज़ार इंटरफेस जैसेexchange.GetDepthexchange.GetTradesexchange.GetRecordsउदाहरण के लिए टेम्पलेट्स के लिए!सीमलेस CONWSइस लेख में, हम आपको कुछ और जानकारी देते हैं।

टेम्पलेट में विशिष्ट लिंकwebsocketके कार्यान्वयन, उपयोगDialफ़ंक्शन (एपीआई दस्तावेज़ में डायल फ़ंक्शन देखें) को आवश्यकता के अनुसार अनुकूलित किया जा सकता है; उदाहरण के लिए,read()फ़ंक्शन पैरामीटर निर्दिष्ट करता है-2यह सिर्फ वापस आ रहा हैwebsocketडेटा प्राप्त करने के लिए कनेक्ट किए गए बफ़र क्षेत्र में नवीनतम डेटा।

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


संबंधित

अधिक

congcong009मोंगो, क्या आप एक और पायथन संस्करण दे सकते हैं?

मंगेतर भीयह एक अच्छी बात है, इसे पहले साझा किया जाना चाहिए।

छोटे सपनेअच्छा, सुझाव के लिए धन्यवाद।