3
ध्यान केंद्रित करना
1444
समर्थक

कमोडिटी फ्यूचर्स और क्रिप्टोकरेंसी एक्सचेंज एपीआई के बीच समानताएं और अंतर

में बनाया: 2019-09-21 17:37:21, को अपडेट: 2024-12-17 20:41:43
comments   0
hits   2551

कमोडिटी फ्यूचर्स और क्रिप्टोकरेंसी एक्सचेंज एपीआई के बीच समानताएं और अंतर

कमोडिटी फ्यूचर्स CTP और डिजिटल करेंसी API के बीच महत्वपूर्ण अंतर हैं। जो लोग डिजिटल करेंसी प्रोग्रामेटिक ट्रेडिंग से परिचित हैं, लेकिन कमोडिटी फ्यूचर्स प्रोग्रामेटिक ट्रेडिंग से परिचित नहीं हैं, वे उनके अनुभव की आसानी से नकल नहीं कर सकते। इस पोस्ट में उनके बीच समानताओं और अंतरों का सारांश दिया जाएगा।

ऐतिहासिक डेटा

सीटीपी इंटरफ़ेस ऐतिहासिक बाज़ार जानकारी प्रदान नहीं करता है, जिसे बाज़ार सूचना प्रदाताओं के माध्यम से प्राप्त किया जाना चाहिए। यदि लॉग इन करने में विफलता या कनेक्शन कट जाने के कारण बाजार डेटा नष्ट हो जाता है, तो CTP बाजार डेटा पुनर्प्राप्ति तंत्र उपलब्ध नहीं कराता है। ऐतिहासिक बाजार की स्थिति केवल तीसरे पक्ष के डेटा के माध्यम से प्राप्त की जा सकती है। डिजिटल मुद्राएं आमतौर पर के-लाइन और लेनदेन इतिहास प्राप्त करने के लिए इंटरफेस प्रदान करती हैं।

विभिन्न प्रोटोकॉल

क्रिप्टोकरंसी एपीआई आम तौर पर REST और वेबसोकेट प्रोटोकॉल होते हैं। CTP आंतरिक रूप से नेटवर्क से संबंधित तर्क को समाहित करता है और CTP पृष्ठभूमि के साथ संचार करने के लिए TCP प्रोटोकॉल पर आधारित FTD प्रोटोकॉल का उपयोग करता है। इसमें तीन मोड हैं:

  • अनुरोध-प्रतिक्रिया मोड: क्लाइंट सक्रिय रूप से अनुरोध आरंभ करता है, और CTP बैकएंड अनुरोध प्राप्त करता है और उसका जवाब देता है
  • प्रसारण संचार मोड: ग्राहक द्वारा अनुबंध बाजार की सदस्यता लेने के बाद, सीटीपी प्रसारण के माध्यम से बाजार की जानकारी को बाहर तक पहुंचाता है।
  • निजी संचार मोड: ग्राहक द्वारा किसी अनुबंध को सौंपने के बाद, ऑर्डर की जानकारी, लेनदेन रिटर्न आदि को CTP द्वारा बिंदु-दर-बिंदु भेजा जाता है।

सीटीपी प्रोटोकॉल की सभी बाजार स्थितियों और ऑर्डर लेनदेन को केवल परिवर्तन के बाद ही अधिसूचित किया जाएगा, जबकि ऑर्डर, खातों और स्थितियों के बारे में पूछताछ सक्रिय पूछताछ हैं। उपरोक्त तीनों मोड डिजिटल मुद्रा एपीआई में समान रूप में पाए जा सकते हैं।

डेटा परिष्कार के विभिन्न स्तर

सीटीपी प्रोटोकॉल की गहराई केवल एक खरीद और एक बिक्री है, और पांच-स्तरीय बाजार शुल्क महंगे हैं। डिजिटल मुद्राएं आम तौर पर पूरी गहराई या 200 स्तर प्राप्त कर सकती हैं। सीटीपी वास्तविक लेनदेन को आगे नहीं बढ़ाता है और इसका अनुमान केवल स्थिति में परिवर्तन के माध्यम से लगाया जा सकता है, जबकि डिजिटल मुद्रा विनिमय एपीआई वास्तविक व्यक्तिगत लेनदेन प्राप्त कर सकता है। घरेलू सीटीपी प्लेटफॉर्म पर बाजार डेटा का टिक स्तर 2 टिक प्रति सेकंड है। अधिकांश डिजिटल मुद्रा विनिमय वेबसोकेट प्रति सेकंड 10 बार ऐसा कर सकते हैं।

विभिन्न पहुँच प्रतिबंध

डिजिटल मुद्रा एक्सचेंज आमतौर पर प्रति सेकंड 10 बार लेनदेन की सीमा तय करते हैं। आमतौर पर ऑर्डर रद्द करने के लिए कोई विशेष आवश्यकताएं नहीं होती हैं। सीटीपी में उन अनुरोधों पर सख्त प्रतिबंध हैं जिन्हें सक्रिय रूप से जारी करने की आवश्यकता है। आम तौर पर, इसे हर 2 सेकंड में एक बार करना सुरक्षित होता है। ऑर्डर रद्द करने की संख्या के लिए भी आवश्यकताएँ हैं।

स्थिरता

सीटीपी प्रोटोकॉल बहुत स्थिर है और इसमें कोई त्रुटि या नेटवर्क समस्या नहीं होती। डिजिटल मुद्राओं पर कम प्रतिबंध और अधिक समय तक लेन-देन होना चाहिए, तथा रखरखाव, डेटा विलंब, नेटवर्क त्रुटियां आदि बहुत आम हैं।

FMZ क्वांटिटेटिव प्लेटफॉर्म पर CTP प्रोटोकॉल के सर्वोत्तम अभ्यास

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

यदि आप हर बार बाजार से डेटा प्राप्त करना चाहते हैं, यहां तक ​​कि पुराना डेटा भी, तो आप बाजार अपडेट मोड एक्सचेंज.आईओ (“मोड”, 0) पर स्विच कर सकते हैं। इस समय, रणनीति को इवेंट-संचालित के रूप में नहीं लिखा जा सकता है। तेज़ अनंत लूप से बचने के लिए स्लीप इवेंट को जोड़ना होगा। कम आवृत्ति वाली कुछ रणनीतियाँ इस मोड का उपयोग कर सकती हैं, और रणनीति का डिज़ाइन सरल है। डिफ़ॉल्ट कैश मोड पर वापस जाने के लिए exchange.IO(“mode”, 1) का उपयोग करें।

एकल अनुबंध संचालित करते समय, डिफ़ॉल्ट मोड का उपयोग करें। हालाँकि, यदि कई अनुबंध हैं, तो यह संभव है कि एक अनुबंध ने बाजार की जानकारी को अपडेट नहीं किया हो, जिसके परिणामस्वरूप बाजार की जानकारी अधिग्रहण इंटरफ़ेस में रुकावट आती है, और अन्य अनुबंधों की बाजार जानकारी अपडेट प्राप्त नहीं की जा सकती है। इस समस्या को हल करने के लिए, आप तत्काल अद्यतन मोड का उपयोग कर सकते हैं, लेकिन उच्च आवृत्ति रणनीति लिखना असुविधाजनक है। इस समय, आप ऑर्डर और बाजार सूचना पुश प्राप्त करने के लिए इवेंट पुश मोड का उपयोग कर सकते हैं। सेटिंग विधि exchange.IO(“wait”) है। यदि एकाधिक एक्सचेंज ऑब्जेक्ट जोड़े जाते हैं, जो कमोडिटी फ्यूचर्स में दुर्लभ है, तो आप exchange.IO(“wait_any”) का उपयोग कर सकते हैं, और लौटाया गया इंडेक्स लौटाए गए एक्सचेंज इंडेक्स को इंगित करेगा।

बाजार टिक परिवर्तन पुश: {घटना:“टिक”, सूचकांक:एक्सचेंज सूचकांक (जिस क्रम में रोबोट एक्सचेंज जोड़ा जाता है), नैनो:घटना का नैनोसेकंड समय, प्रतीक:अनुबंध का नाम} ऑर्डर पुश: {ईवेंट:“ऑर्डर”, इंडेक्स:एक्सचेंज इंडेक्स, नैनो:ईवेंट नैनोसेकंड समय, ऑर्डर:ऑर्डर जानकारी (GetOrder के समान)}

इस बिंदु पर रणनीति संरचना इस प्रकार लिखी जा सकती है:

function on_tick(symbol){
    Log("symbol update")
    exchange.SetContractType(symbol)
    Log(exchange.GetTicker())
}

function on_order(order){
    Log("order update", order)
}

function main(){
    while(true){
        if(exchange.IO("status")){ //判断链接状态
            exchange.IO("mode", 0)
            _C(exchange.SetContractType, "MA888")//订阅MA,只有第一次是真正的发出订阅请求,接下来都是程序切换,不耗时间。
            _C(exchange.SetContractType, "rb888")//订阅rb
            while(True){
                var e = exchange.IO("wait")
                if(e){
                    if(e.event == "tick"){
                        on_tick(e.Symbol)
                    }else if(e.event == "order"){
                        on_order(e.Order)
                    }
                }
           }
        }else{
            Sleep(10*1000)
        }
    }
}