एक आविष्कारक ने क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का निर्माण कियारणनीतिक चौकऔर एक बहुत ही दिलचस्प रणनीति है कि डिजिटल मुद्रा एक्सचेंजों का उपयोग किया जाता है.rest
प्रोटोकॉल के एपीआई, कई रणनीतियों के आधार परrest
कुछ एक्सचेंजों ने हाल ही में भी कुछ एक्सचेंजों को अपडेट किया है।rest
इंटरफ़ेस विफलता, जिसके कारण नीति का उपयोग नहीं किया जा सकता है। यदि नीति को संशोधित किया जाता है, तोwebsocket
इंटरफेस का समर्थन करने के लिए नीति कोड में कुछ बदलाव करना आवश्यक है, जो आमतौर पर तुलनात्मक रूप से कठिन होता है (नीति को बदलने की कठिनाई फिर से लिखने से कहीं अधिक होती है) ।
कैसे रणनीति नहीं बदल सकते हैं, लेकिन फिर भी उपयोग कर सकते हैं?websocket
क्या आप एक इंटरफेस के बारे में सोच रहे हैं?
यह एक अच्छा उदाहरण है कि आविष्कारकों के लिए क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म का उपयोग करने के लिए कितना लचीला है।
exchange.GetTicker
फ़ंक्शन को हुक ऑपरेशन के साथ प्राप्त करें।इस प्रकार, नीति को कोड की एक पंक्ति को बदलने के बिना लागू किया जा सकता है, और नीति को कोड की एक पंक्ति को बदलने के बिना लागू किया जा सकता है।websocket
इस प्रकार, एक डेटा ड्राइव, जो कि व्यापार इंटरफेस द्वारा प्रेरित किया जाता है, चालू हो जाता है।
कोडिंग भाषा का उपयोगJavaScript
भाषाएँ ।
उदाहरण के लिए, हम एक क्लासिक पुरानी रणनीति को बदलना चाहते हैं, "आइसब्रेकर"।
हम पहले रणनीति कोड को देखते हैं और पता चलता है कि रणनीति टिक बाजार द्वारा संचालित है, मुख्य रूप से इस्तेमाल किया जाता हैticker
डेटा मेंBuy
、Sell
、Last
ये विशेषताएंticker
एफएमजेड प्लेटफॉर्म के एपीआई फ़ंक्शन से डेटाःexchange.GetTicker
यह एक बहुत ही अच्छा तरीका है कि हम अपने लक्ष्य को प्राप्त कर सकते हैं।exchange.GetTicker
फ़ंक्शनHook
आप इसे एक अलग संस्करण में बदल सकते हैं।
लेकिन हम इसे आइसब्रेकर की रणनीति में नहीं बदल सकते हैं, यह रणनीति को प्रभावित करेगा, हम एक निर्बाध जुड़ाव चाहते हैं!
इसलिए, अगले मुख्य पात्र को मैदान में उतरना होगा।
init
फ़ंक्शन का सहयोगहमने एक "टेम्पलेट लाइब्रेरी" बनाई है जिसका नाम हैःसीमलेस CONWS, रिक्त प्रारंभिक कोड ।
और फिरसीमलेस CONWSटेम्पलेट 2 पैरामीटर सेट करता है
उपयोग को चालू करने या नहीं करने के लिए नियंत्रण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
यह एक बहुत अच्छा तरीका है।
यह बहुत आसान है!सीमलेस CONWSटेम्पलेट को अपनी नीति संग्रह में कॉपी करने के बाद, यह केवल "आइसब्रेकर" नीति के संदर्भ के लिए काम करता है, जैसा कि नीचे दिखाया गया हैः
इस तरह से, आप अपने जीवन को बदल सकते हैं।
"आइसब्रेकर" रणनीति बनाने के लिए वास्तविक रोबोट, एक्सचेंजों ने बिआन का चयन किया.. चालू करेंसीमलेस CONWSटेम्पलेट पर नियंत्रण पैरामीटर।
चल रहा है:
यह देखने के लिए कि क्या डेटा भेजा गया है, मैंने विशेष रूप से 157 पंक्तियों के साथ एक कोड जोड़ा है, जो एक प्रिंट लॉग के लिए है, जो एक्सचेंज द्वारा भेजे गए डेटा को आउटपुट करता है।
रोबोट लॉग में दिखाया गयाः
इस प्रकार नीति कोड की एक पंक्ति को संशोधित किए बिना, वेबसॉकेट बाज़ार इंटरफ़ेस और नीति निर्बाध जुड़ाव का उपयोग करने के लिए संभव है।
यह केवल उपयोग के लिए हैexchange.GetTicker
बाज़ार इंटरफेस फ़ंक्शन के लिए रणनीति की व्याख्या, अन्य बाज़ार इंटरफेस जैसेexchange.GetDepth
、exchange.GetTrades
、exchange.GetRecords
उदाहरण के लिए टेम्पलेट्स के लिए!सीमलेस CONWSइस लेख में, हम आपको कुछ और जानकारी देते हैं।
टेम्पलेट में विशिष्ट लिंकwebsocket
के कार्यान्वयन, उपयोगDial
फ़ंक्शन (एपीआई दस्तावेज़ में डायल फ़ंक्शन देखें) को आवश्यकता के अनुसार अनुकूलित किया जा सकता है; उदाहरण के लिए,read()
फ़ंक्शन पैरामीटर निर्दिष्ट करता है-2
यह सिर्फ वापस आ रहा हैwebsocket
डेटा प्राप्त करने के लिए कनेक्ट किए गए बफ़र क्षेत्र में नवीनतम डेटा।
पढ़ने के लिए धन्यवाद
congcong009मोंगो, क्या आप एक और पायथन संस्करण दे सकते हैं?
मंगेतर भीयह एक अच्छी बात है, इसे पहले साझा किया जाना चाहिए।
आविष्कारक मात्रा - छोटे सपनेअच्छा, सुझाव के लिए धन्यवाद।