Type/to search
8
Follow
1364
Followers
आपको चरण दर चरण सिखाएंगे कि पुरानी रणनीति को वेबसॉकेट मार्केट इंटरफ़ेस से कैसे सहजता से जोड़ा जाए
Original
Created 2019-09-26 15:47:53  Updated 2024-12-17 20:38:08
 3
 3806

img

आपको चरण दर चरण सिखाएंगे कि पुरानी रणनीति को वेबसॉकेट मार्केट इंटरफ़ेस से कैसे सहजता से जोड़ा जाए

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

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

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

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

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

नीति पता

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

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

हम एक "टेम्पलेट लाइब्रेरी" बनाते हैं और उसका नाम रखते हैं:SeamlessConnWS, प्रारंभिक कोड साफ़ करें.

img

तो फिर देSeamlessConnWSटेम्पलेट 2 पैरामीटर सेट करता है

  • IsUsedWebSocket
  • Hook_GetTicker@IsUsedWebSocket

img

सक्षम या अक्षम करना है या नहीं, इसे नियंत्रित करने के लिए उपयोग किया जाता हैwebsocketइंटरफ़ेस फ़ंक्शन, नियंत्रण और विशिष्ट बाजार इंटरफ़ेस के उद्घाटन को निर्दिष्ट करें। इस उदाहरण में, सीमित स्थान के कारण, केवलexchange.GetTickerइंटरफ़ेस हुक ऑपरेशन निष्पादित करता है. इसलिए पैरामीटर केवल सक्षम हैंGetTickerइंटरफ़ेस वेबसोकेट मोड का नियंत्रण पैरामीटर है: Hook_GetTicker.

एक बार टेम्पलेट बन जाने के बाद, आप टेम्पलेट में एक्सेस करने के लिए विशिष्ट एक्सचेंज लिख सकते हैं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("切换为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) } } // ... } }

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

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

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

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

img

जाँचें, सहेजें, और आपका काम पूरा हो गया।

एक "आइसब्रेकर" रणनीति वास्तविक समय रोबोट बनाएं और एक्सचेंज के रूप में Binance का चयन करें img
खुलाSeamlessConnWSटेम्पलेट पर पैरामीटर नियंत्रित करें.
img

इसे चलाने के लिए:
img

पुश किए गए डेटा को देखना आसान बनाने के लिए, मैंने लाइन 157 में एक प्रिंट लॉग कोड जोड़ा, जो एक्सचेंज द्वारा पुश किए गए डेटा को आउटपुट करेगा।
img

रोबोट लॉग दिखाता है:
img

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

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

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

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

Related Recommendations
Comment
All comments (3)

    梦哥,能多一点python版本的么?

    7 years ago

    好的 感谢建议。

    7 years ago

    好东西,应该早点分享嘛。。。

    7 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)