कमोडिटी फ्यूचर्स सीटीपी और डिजिटल मुद्रा एपीआई में महत्वपूर्ण अंतर है, जो कि डिजिटल मुद्राओं के साथ संसाधित लेनदेन से परिचित हैं और कमोडिटी फ्यूचर्स के साथ संसाधित नहीं हैं। यह पोस्ट उनके बीच के अंतर को संक्षेप में प्रस्तुत करेगी।
ऐतिहासिक आंकड़े
सीटीपी इंटरफेस ऐतिहासिक बाजारों को प्रदान नहीं करता है, जिन्हें व्यापारियों के माध्यम से हल किया जाना चाहिए। यदि कोई लैंडिंग या लैंडिंग लाइन टूटने के कारण बाजार डेटा खो जाता है, तो सीटीपी व्यापार पुनर्प्राप्ति तंत्र प्रदान नहीं करता है। केवल तीसरे पक्ष के डेटा के माध्यम से ऐतिहासिक बाजारों को प्राप्त किया जा सकता है, और डिजिटल मुद्राएं आमतौर पर के-लाइन और लेनदेन इतिहास तक पहुंचने के लिए इंटरफ़ेस प्रदान करती हैं।
समझौता अलग है
क्रिप्टोकरेंसी एपीआई आम तौर पर REST और वेबसॉकेट प्रोटोकॉल होते हैं, सीटीपी के अंदर नेटवर्क से संबंधित तर्क को शामिल किया जाता है, जो टीसीपी प्रोटोकॉल-आधारित एफटीडी प्रोटोकॉल का उपयोग करके सीटीपी पृष्ठभूमि के साथ संचार करने के लिए किया जाता है।
सीटीपी प्रोटोकॉल के सभी बाजारों और ऑर्डर लेनदेन में बदलाव के बाद ही सूचना दी जाती है, जबकि ऑर्डर, खाता और होल्डिंग का पता लगाने के लिए सक्रिय पूछताछ होती है। उपरोक्त तीन मोड डिजिटल मुद्रा एपीआई में समान रूप से पाए जाते हैं।
डेटा की सटीकता अलग-अलग है
सीटीपी प्रोटोकॉल की गहराई केवल एक खरीद-बिक्री है, पांच-स्तरीय बाजार शुल्क महंगा है, डिजिटल मुद्राएं आम तौर पर पूर्ण गहराई या 200-स्तरीय तक पहुंचती हैं। सीटीपी वास्तविक लेनदेन को आगे नहीं बढ़ाता है, केवल स्टॉक परिवर्तन को वापस करने के लिए, जबकि डिजिटल मुद्रा एक्सचेंज एपीआई वास्तविक भुगतान लेनदेन तक पहुंच सकता है। घरेलू सीटीपी प्लेटफॉर्म पर लेनदेन डेटा टिक स्तर 1 सेकंड 2 टिक है। डिजिटल मुद्रा एक्सचेंज वेबसॉकेट अधिकतम 1 सेकंड 10 बार कर सकता है।
प्रवेश प्रतिबंध अलग-अलग
क्रिप्टोकरेंसी एक्सचेंजों में आम तौर पर 1 सेकंड में 10 बार की सीमा होती है। ऑर्डर निकासी के लिए अधिकतर कोई विशेष आवश्यकता नहीं होती है। सीटीपी में सक्रिय रूप से जारी किए जाने वाले अनुरोधों के लिए सख्त सीमा होती है, आम तौर पर 2s में एक बार अपेक्षाकृत सुरक्षित होता है, निकासी की संख्या के लिए भी आवश्यकता होती है।
स्थिरता
सीटीपी प्रोटोकॉल बहुत स्थिर है और इसमें त्रुटियों और नेटवर्क समस्याओं का लगभग कोई खतरा नहीं है। डिजिटल मुद्राओं को कम प्रतिबंधों, लंबे लेनदेन समय, रखरखाव, डेटा देरी, नेटवर्क त्रुटियों आदि के लिए आम माना जाता है।
एफएमजेड क्वांटिफाइड प्लेटफॉर्म सीटीपी प्रोटोकॉल की सर्वोत्तम प्रथाएं
CTP के डिफ़ॉल्ट मोड में लेन-देन प्राप्त करने वाले इंटरफेस जैसे कि GetTicker, GetDepth, GetRecords में नवीनतम डेटा प्राप्त करने के लिए कैश किए गए डेटा होते हैं, इसलिए कोई डेटा नहीं होने पर डेटा का इंतजार किया जाता है, इसलिए नीति को स्लीप से बाहर रखा जा सकता है। जब लेन-देन में परिवर्तन होता है, तो टिकर, गहराई और रिकॉर्ड अपडेट किए जाते हैं, इस समय किसी भी इंटरफ़ेस को तुरंत वापस बुलाया जाता है, कॉल किए गए इंटरफेस की स्थिति को अपडेट के लिए प्रतीक्षा मोड में रखा जाता है, अगली बार उसी इंटरफ़ेस को बुलाया जाता है, नया डेटा वापस आने का इंतजार किया जाता है। कुछ ठंडे दरवाजे के अनुबंध या लंबे समय तक ट्रेडिंग बंद होने की स्थिति होती है, जो रणनीति को लंबे समय तक कैड किया जाता है और सामान्य है।
यदि आप चाहते हैं कि हर बार जब भी कोई लेन-देन प्राप्त किया जाए, तो डेटा प्राप्त किया जा सके, भले ही पुराने डेटा, आप लेन-देन के तुरंत अद्यतन मोड exchange.IO ((
एकल अनुबंधों का संचालन करते समय, डिफ़ॉल्ट मोड का उपयोग करना संभव है; लेकिन यदि कई अनुबंध हैं, तो एक अनुबंध के लिए कोई बाजार अद्यतन नहीं हो सकता है, जिससे बाजार इंटरफ़ेस को प्राप्त करने में बाधा आती है, और अन्य अनुबंध बाजार अद्यतन भी उपलब्ध नहीं होते हैं। इस समस्या को हल करने के लिए, तत्काल अद्यतन मोड का उपयोग किया जा सकता है, लेकिन उच्च आवृत्ति रणनीति लिखना असुविधाजनक है। इस मामले में, आप घटना पुश मोड का उपयोग कर सकते हैं, आदेश और बाजारों को प्राप्त कर सकते हैं।
लेन-देन टिक परिवर्तन पुशः {Event:
इस बिंदु पर रणनीति संरचना को इस तरह लिखा जा सकता हैः
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)
}
}
}