[TOC]

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म 9 वर्षों के तकनीकी पुनरावर्तन से गुजरा है और कई बार इसका पुनर्निर्माण किया गया है, हालांकि उपयोगकर्ताओं के रूप में हमने इस पर ध्यान नहीं दिया होगा। पिछले दो वर्षों में, प्लेटफ़ॉर्म ने उपयोगकर्ता अनुभव के संदर्भ में बहुत सारे अनुकूलन और उन्नयन किए हैं, जिसमें यूआई इंटरफ़ेस का व्यापक उन्नयन, आमतौर पर उपयोग किए जाने वाले मात्रात्मक ट्रेडिंग टूल को समृद्ध करना और अधिक बैकटेस्टिंग डेटा समर्थन जोड़ना शामिल है।
रणनीति डिजाइन को अधिक सुविधाजनक बनाने, ट्रेडिंग तर्क को स्पष्ट करने, तथा शुरुआती लोगों के लिए शुरुआत करना आसान बनाने के लिए, प्लेटफॉर्म ने रणनीति द्वारा उपयोग किए जाने वाले API इंटरफ़ेस को उन्नत किया। इन नई सुविधाओं को सक्षम करने के लिए अपने होस्ट के नवीनतम संस्करण का उपयोग करें। यह प्लेटफॉर्म पुराने इंटरफेस पर कॉल के साथ यथासंभव अधिकतम सीमा तक संगत बना हुआ है। इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफॉर्म के API दस्तावेज़ में नई API इंटरफ़ेस सुविधाओं के बारे में जानकारी अपडेट कर दी गई है:
तो आइए एक नज़र डालते हैं कि किन इंटरफेस को अपग्रेड किया गया है और पुरानी रणनीतियों को वर्तमान API के साथ संगत बनाने के लिए किन बदलावों की आवश्यकता है।
बहु-विविधता रणनीतियों और पूर्ण बाजार स्थिति निगरानी रणनीतियों को डिजाइन करने के लिए। यह समेकित बाजार इंटरफेस रणनीतियों को विकसित करना आसान बनाने और पहिये का पुनःआविष्कार करने से बचने के लिए आवश्यक है। आविष्कारक का मात्रात्मक ट्रेडिंग प्लेटफॉर्म एक्सचेंजों के ऐसे API को समाहित करता है।
यदि एक्सचेंज में यह इंटरफ़ेस नहीं है (व्यक्तिगत एक्सचेंज), तो कॉल करेंexchange.GetTickers()एक त्रुटि संदेश रिपोर्ट किया जाएगा: समर्थित नहीं है.
इस फ़ंक्शन में कोई पैरामीटर नहीं है और यह एक्सचेंज के समेकित बाज़ार इंटरफ़ेस में सभी किस्मों का वास्तविक समय बाज़ार डेटा लौटाएगा। इसे सरलता से इस प्रकार समझा जा सकता है:
exchange.GetTickers()यह कार्य हैexchange.GetTicker()फ़ंक्शन का पूर्ण संस्करण (दोनों फ़ंक्शन नामों के बीच अंतर एकवचन और बहुवचन है)।
हम परीक्षण के लिए OKX स्पॉट सिमुलेशन वातावरण का उपयोग करते हैं:
function main() {
exchange.IO("simulate", true)
var tickers = exchange.GetTickers()
if (!tickers) {
throw "tickers error"
}
var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var i in tickers) {
var ticker = tickers[i]
tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
return tickers.length
}

नयाexchange.CreateOrder()इस उन्नयन का केन्द्र बिन्दु कार्य हैं।exchange.CreateOrder()फ़ंक्शन का सबसे महत्वपूर्ण कार्य फ़ंक्शन के पैरामीटर में ऑर्डर के प्रकार और दिशा को सीधे निर्दिष्ट करना है। इस तरह, यह अब मौजूदा सिस्टम सेटिंग्स जैसे ट्रेडिंग जोड़े, अनुबंध कोड, ट्रेडिंग निर्देश आदि पर निर्भर नहीं करता है।
बहु-उत्पाद ट्रेडिंग ऑर्डर परिदृश्यों और समवर्ती परिदृश्यों में डिज़ाइन की जटिलता बहुत कम हो जाती है।exchange.CreateOrder()फ़ंक्शन के चार पैरामीटर हैंsymbol、side、price、amount。
OKX फ्यूचर्स सिमुलेशन वातावरण का उपयोग करके परीक्षण करें:
function main() {
exchange.IO("simulate", true)
var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)
Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

इसमें केवल 3 बार समय लगाexchange.CreateOrder()फ़ंक्शन कॉल विभिन्न किस्मों और दिशाओं के तीन फ्यूचर ऑर्डर देता है।
नयाexchange.GetHistoryOrders()इस फ़ंक्शन का उपयोग किसी निश्चित उत्पाद के ऐतिहासिक लेनदेन ऑर्डर प्राप्त करने के लिए किया जाता है। इस फ़ंक्शन को एक्सचेंज इंटरफ़ेस के समर्थन की भी आवश्यकता होती है।
ऐतिहासिक आदेशों की जानकारी प्राप्त करने के लिए, विभिन्न एक्सचेंजों द्वारा क्रियान्वित इंटरफेस बहुत भिन्न होते हैं:
ऐसे इंटरफेस को उच्चतम स्तर की अनुकूलता के साथ समाहित किया जाता है, तथा वास्तविक उपयोग में इस बात पर ध्यान दिया जाना चाहिए कि क्या वे रणनीति की आवश्यकताओं और अपेक्षाओं को पूरा करते हैं।
विस्तृत फ़ंक्शन विवरण यहां दोहराया नहीं गया है, आप API दस्तावेज़ में सिंटैक्स मैनुअल का संदर्भ ले सकते हैं:
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
बिनेंस स्पॉट ट्रेडिंग वातावरण का उपयोग करके परीक्षण किया गया:
function main() {
var orders = exchange.GetHistoryOrders("ETH_USDT")
// 写入图表
var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) + "`")
}

स्थिति डेटा अधिग्रहण फ़ंक्शन का पुराना संस्करण है:exchange.GetPosition(). फ़ंक्शन नामकरण शब्दार्थ से बेहतर मिलान के लिए, यह अपग्रेड स्थिति प्राप्त करने के लिए एक नया फ़ंक्शन जोड़ता है:exchange.GetPositions(). साथ ही, यह अभी भी GetPosition फ़ंक्शन के साथ संगत/उन्नत है।
ध्यान दें कि दोनों फ़ंक्शन नाम केवल अंतिम s से भिन्न हैं। चूँकि GetPositions अर्थपूर्ण रूप से अधिक सही है, इसलिए यह अनुशंसा की जाती है कि आप भविष्य में GetPositions का उपयोग करें।
exchange.GetPositions()फ़ंक्शन कॉल के तीन प्रकार हैं:
exchange.GetPositions() जब कोई पैरामीटर पारित नहीं किया जाता है, तो वर्तमानट्रेडिंग जोड़े / अनुबंध कोडवर्तमान आयाम में सभी किस्मों की स्थिति डेटा का अनुरोध करें।
exchange.GetPositions(“ETH_USDT.swap”)
विशिष्ट उत्पाद जानकारी निर्दिष्ट करते समय (ETH_USDT.swap प्रारूप FMZ प्लेटफ़ॉर्म द्वारा परिभाषित किया गया है), विशिष्ट उत्पाद के स्थिति डेटा का अनुरोध करें।
उदाहरण:BTC_USD.swap、ETH_USDT.swap、ETH_USDT.quarterइंतज़ार।
BTC_USD.swap: BTC का मुद्रा-आधारित सतत अनुबंध।
ETH_USDT.swap: ETH का U-आधारित सतत अनुबंध।
ETH_USDC.swap: ETH के लिए USDC-मार्जिन वाला सतत अनुबंध। (USDT के अतिरिक्त, आप अलग-अलग quoteCurrency भी निर्दिष्ट कर सकते हैं, जिसे यहां दोहराया नहीं जाएगा)
ETH_USDT.quarter: ETH का U-आधारित त्रैमासिक डिलीवरी अनुबंध।
BTC_USD.BTC-USD-201226-24250-C: बीटीसी सिक्का-मार्जिन विकल्प अनुबंध।
exchange.GetPositions(“USDT.swap”) निर्दिष्ट आयाम सीमा के अनुसार सभी प्रतीकों के लिए स्थिति डेटा का अनुरोध करें। USDT.swap: यू-आधारित सतत अनुबंध रेंज। USDT.futures: यू-आधारित डिलीवरी अनुबंधों की श्रेणी। USDC.swap: USDC-मार्जिन सतत अनुबंध रेंज। (USDT के अतिरिक्त, आप अलग-अलग quoteCurrency भी निर्दिष्ट कर सकते हैं, जिसे यहां दोहराया नहीं जाएगा) USDC.futures: USDC-मार्जिन वाले वायदा अनुबंधों की श्रेणी। USD.swap: मुद्रा-आधारित सतत अनुबंध रेंज। यूएसडी.फ्यूचर्स: मुद्रा-आधारित वायदा अनुबंधों की श्रेणी। USDT.option: यू-आधारित विकल्प अनुबंध श्रेणी। USD.option: मुद्रा-आधारित विकल्प अनुबंध श्रेणी।
कुछ विशेष विनिमय अनुबंध आयाम प्रभाग: USDT.futures_combo: Futures_Deribit एक्सचेंज का CFD संयोजन। USD.futures_ff: फ्यूचर्स_क्रैकेन एक्सचेंज का मिश्रित मार्जिन डिलीवरी अनुबंध। USD.swap_pf: फ्यूचर्स_क्रैकेन एक्सचेंज पर एक हाइब्रिड-मार्जिन सतत अनुबंध।
उन आयामों के लिए जो एक्सचेंज API इंटरफ़ेस द्वारा समर्थित नहीं हैं, कॉल करते समय एक त्रुटि रिपोर्ट की जाएगी और एक शून्य मान लौटाया जाएगा।
OKX फ्यूचर्स सिमुलेशन वातावरण का उपयोग करके परीक्षण करें:
function main() {
exchange.IO("simulate", true)
exchange.SetCurrency("BTC_USDT")
exchange.SetContractType("swap")
var p1 = exchange.GetPositions()
var p2 = exchange.GetPositions("BTC_USDT.swap")
var tbls = []
for (var positions of [p1, p2]) {
var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
for (var p of positions) {
tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}

आने परexchange.GetPositions()फ़ंक्शन के पैरामीटर हैंETH_USDT.swapजब आप ETH U-आधारित सतत अनुबंध का उपयोग करते हैं, तो आप ETH U-आधारित सतत अनुबंध का स्थिति डेटा प्राप्त कर सकते हैं।
जब आयातित न होexchange.GetPositions()जब फ़ंक्शन को पैरामीटर के रूप में उपयोग किया जाता है, तो एक्सचेंज पर सूचीबद्ध सभी यू-मार्जिन सतत अनुबंधों का स्थिति डेटा प्राप्त किया जा सकता है (क्योंकि वर्तमान ट्रेडिंग जोड़ी BTC_USDT है और अनुबंध स्वैप है, अनुरोध वर्तमान ट्रेडिंग जोड़ी पर आधारित है और अनुबंध आयाम सीमा)। यह कॉल करने के बराबर हैexchange.GetPositions("USDT.swap"), अनुरोध क्षेत्र निर्दिष्ट करें.
नव जोड़ा गया GetFundings फ़ंक्शन वायदा एक्सचेंजों पर सतत अनुबंधों की फंडिंग दर प्राप्त कर सकता है। फ़ंक्शन एक पैरामीटर प्रतीक लेता है. यह फ़ंक्शन फंडिंग संरचनाओं की एक सरणी लौटाता है।
BTC_USDT.swap. यदि कोई पैरामीटर पास नहीं किया जाता है या फ़ंक्शन में कोई रेंज पास की जाती है, तो एक त्रुटि संदेश प्रदर्शित होगा जिसमें कहा जाएगा कि प्रतीक पैरामीटर समर्थित नहीं है।बाजार कार्यexchange.GetTicker()यह अपग्रेड मुख्य रूप से प्रतीक पैरामीटर जोड़ता है। इस फ़ंक्शन का उपयोग वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड की परवाह किए बिना, मापदंडों द्वारा निर्दिष्ट उत्पाद जानकारी के अनुसार सीधे बाजार डेटा का अनुरोध करने के लिए किया जा सकता है। कोड लेखन प्रक्रिया को सरल बनाता है. साथ ही, यह अभी भी पैरामीटर पास किए बिना कॉलिंग विधि के साथ संगत है, और सबसे बड़ी सीमा तक पुरानी प्लेटफ़ॉर्म रणनीतियों के साथ संगत है।
पैरामीटरsymbolविनिमय वस्तुओं के लिएexchangeस्पॉट/वायदा के लिए अलग-अलग प्रारूप हैं:
AAA_BBBAAA आधार मुद्रा, अर्थात् लेनदेन मुद्रा, का प्रतिनिधित्व करता है, तथा BBB उद्धरण मुद्रा, अर्थात् मूल्य निर्धारण मुद्रा का प्रतिनिधित्व करता है। सभी मुद्राओं के नाम बड़े अक्षरों में हैं।
उदाहरण के लिए: BTC_USDT स्पॉट ट्रेडिंग जोड़ी।AAA_BBB.XXX, AAA आधार मुद्रा, अर्थात् लेनदेन मुद्रा को दर्शाता है, BBB उद्धरण मुद्रा, अर्थात् मूल्य निर्धारण मुद्रा को दर्शाता है, तथा XXX अनुबंध कोड को दर्शाता है, जैसे कि सतत अनुबंध स्वैप। सभी मुद्रा नाम बड़े अक्षरों में हैं और अनुबंध कोड छोटे अक्षरों में हैं।
उदाहरण के लिए: BTC_USDT.swap, BTC का U-आधारित सतत अनुबंध।बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गया:
var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]
function main() {
exchange.SetCurrency("ETH_USD")
exchange.SetContractType("swap")
var arr = []
var t = exchange.GetTicker()
arr.push(t)
for (var symbol of symbols) {
var ticker = exchange.GetTicker(symbol)
arr.push(ticker)
}
var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of arr) {
tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
return arr
}

किसी निर्दिष्ट प्रतीक के लिए बाज़ार डेटा के बैच का अनुरोध करना बहुत सरल हो गया है।
GetTicker फ़ंक्शन के समानexchange.GetDepth()इस बार फ़ंक्शन एक प्रतीक पैरामीटर भी जोड़ता है। गहराई डेटा का अनुरोध करते समय सीधे प्रकार निर्दिष्ट करना संभव है।
बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गया:
function main() {
exchange.SetCurrency("LTC_USD")
exchange.SetContractType("swap")
Log(exchange.GetDepth())
Log(exchange.GetDepth("ETH_USDT.quarter"))
Log(exchange.GetDepth("BTC_USD.swap"))
}

GetTicker फ़ंक्शन के समानexchange.GetTrades()इस बार फ़ंक्शन एक प्रतीक पैरामीटर भी जोड़ता है। बाजार लेनदेन डेटा का अनुरोध करते समय उत्पाद को सीधे निर्दिष्ट करना संभव है।
बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गया:
function main() {
var arr = []
var arrR = []
var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]
for (var symbol of symbols) {
var r = exchange.Go("GetTrades", symbol)
arrR.push(r)
}
for (var r of arrR) {
arr.push(r.wait())
}
var tbls = []
for (var i = 0; i < arr.length; i++) {
var trades = arr[i]
var symbol = symbols[i]
var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
for (var trade of trades) {
tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}

यह अपग्रेड इसके साथ भी संगत हैexchange.Go()जब फ़ंक्शन प्लेटफ़ॉर्म API इंटरफ़ेस को समवर्ती रूप से कॉल करता है, तो उत्पाद जानकारी निर्दिष्ट करने के लिए symbol पैरामीटर पास किया जाता है।
इस बार GetRecords फ़ंक्शन को महत्वपूर्ण रूप से समायोजित किया गया है, साथ ही अनुरोधित K-लाइन डेटा की प्रकार जानकारी को सीधे निर्दिष्ट करने के लिए प्रतीक पैरामीटर का समर्थन भी किया गया है। K-लाइन अवधि निर्दिष्ट करने के लिए मूल अवधि पैरामीटर को बनाए रखा जाता है, और अनुरोध करते समय अपेक्षित K-लाइन लंबाई निर्दिष्ट करने के लिए एक सीमा पैरामीटर जोड़ा जाता है। यह GetRecords फ़ंक्शन के पुराने संस्करण के साथ भी संगत है जो केवल period पैरामीटर को पास करता है।
exchange.GetRecords()फ़ंक्शन को कैसे कॉल करें:
बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गया:
function main() {
exchange.SetCurrency("ETH_USDT")
exchange.SetContractType("swap")
var r1 = exchange.GetRecords()
var r2 = exchange.GetRecords(60 * 60)
var r3 = exchange.GetRecords("BTC_USDT.swap")
var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)
Log("r1相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

GetOrders फ़ंक्शन भी जोड़ता हैsymbolपैरामीटर्स, आप एक विशिष्ट उत्पाद निर्दिष्ट कर सकते हैं और उत्पाद के अधूरे ऑर्डर (लंबित ऑर्डर) की क्वेरी कर सकते हैं; आप निर्दिष्ट आयाम सीमा में सभी उत्पादों के अधूरे ऑर्डर (लंबित ऑर्डर) की भी क्वेरी कर सकते हैं।
exchange.GetOrders()फ़ंक्शन को निम्नलिखित तरीकों से बुलाया जा सकता है:
OKX फ्यूचर्स सिमुलेशन वातावरण का उपयोग करके परीक्षण करें:
function main() {
exchange.IO("simulate", true)
exchange.SetCurrency("BTC_USDT")
exchange.SetContractType("swap")
// 写入图表
var tbls = []
for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
var orders = null
if (symbol == "null") {
orders = exchange.GetOrders()
} else {
orders = exchange.GetOrders(symbol)
}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
}
ETH_USDT.swapपैरामीटर, ETH के USDT-मार्जिन वाले सतत अनुबंध के अपूर्ण ऑर्डर (लंबित ऑर्डर) का अनुरोध करें।"USDT.swap"USDT-मार्जिन वाले सतत अनुबंधों के सभी बकाया ऑर्डर (लंबित ऑर्डर) का अनुरोध करें।यह अभी भी पुराने स्थिति अधिग्रहण फ़ंक्शन नामकरण के साथ संगत है, और प्रतीक पैरामीटर भी जोड़ता है, जो विशिष्ट अनुरोधित स्थिति डेटा की प्रकार जानकारी निर्दिष्ट कर सकता है। फ़ंक्शन उपयोग औरexchange.GetPositions()पूर्णतया सुसंगत.
के लिएexchange.IO("api", ...)सभी एक्सचेंज ऑब्जेक्ट्स के लिए संपूर्ण अनुरोध पते को सीधे पास करने में सहायता के लिए फ़ंक्शन कॉलिंग विधि को उन्नत किया गया है।
उदाहरण के लिए, यदि आप OKX इंटरफ़ेस को कॉल करना चाहते हैं:
GET https://www.okx.com /api/v5/account/max-withdrawal ccy: BTC
आधार पते पर सीधे लेखन का समर्थन करेंhttps://www.okx.com, IO फ़ंक्शन को कॉल करने से पहले आधार पता स्विच करने की कोई आवश्यकता नहीं है।
OKX फ्यूचर्स सिमुलेशन वातावरण का उपयोग करके परीक्षण करें:
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

यह अपग्रेड मुख्य रूप से प्रभावित करता हैexchange.GetOrder(id)फ़ंक्शन पैरामीटरidआईडी पैरामीटर को मूल एक्सचेंज ऑर्डर आईडी से ट्रेडिंग विविधता वाले स्ट्रिंग प्रारूप में बदल दिया जाता है। FMZ प्लेटफॉर्म पर सभी पैकेज्ड ऑर्डर आईडी इसी प्रारूप में हैं।
उदाहरण के लिए:
123456
इस अपग्रेड से पहले, यदि आप GetOrder फ़ंक्शन को कॉल करना चाहते हैं, तो इसमें दिया गया ऑर्डर आईडी है123456。BTC-USDT。
कृपया ध्यान दें कि यहां जो उल्लेख किया गया है वह एक्सचेंज द्वारा नामित ट्रेडिंग उत्पाद कोड है, न कि FMZ प्लेटफॉर्म द्वारा परिभाषित ट्रेडिंग जोड़ी।इस उन्नयन के बाद,exchange.GetOrder(id)फ़ंक्शन को पास करने के लिए आवश्यक पैरामीटर आईडी का प्रारूप इस प्रकार समायोजित किया जाता है:BTC-USDT,123456。
सबसे पहले मैं आपको बता दूं कि यह डिज़ाइन क्यों किया गया है: क्योंकि इस बार CreateOrder फ़ंक्शन को अपग्रेड किया गया है ताकि ऑर्डर देने के लिए सीधे उत्पाद को निर्दिष्ट किया जा सके (ऑर्डर किया गया उत्पाद वर्तमान में सेट किए गए ट्रेडिंग जोड़े और अनुबंध कोड से भिन्न हो सकता है), यदि लौटाए गए ऑर्डर आईडी में उत्पाद की जानकारी शामिल नहीं है। तब यह ऑर्डर आईडी उपलब्ध नहीं होगी. क्योंकि जब आप ऑर्डर की जांच करते हैं, तो आपको पता नहीं होता कि ऑर्डर किस प्रकार (अनुबंध) के लिए है। अधिकांश एक्सचेंजों को ऑर्डर की जांच और रद्द करते समय उत्पाद कोड का वर्णन करने वाले पैरामीटर निर्दिष्ट करने की आवश्यकता होती है।
इस प्रभाव को कैसे समायोजित करें: यदि आप ऑर्डर देने के लिए एक्सचेंज के ऑर्डर इंटरफेस को सीधे कॉल करने के लिए एक्सचेंज.आईओ फ़ंक्शन का उपयोग करते हैं, तो वापसी मूल्य में आमतौर पर एक्सचेंज का मूल प्रतीक (उत्पाद कोड) और मूल ऑर्डर आईडी शामिल होती है। फिर दोनों को अंग्रेजी अल्पविरामों से संयोजित करने पर आपको FMZ प्लेटफॉर्म द्वारा परिभाषित ऑर्डर आईडी मिल जाएगी। इसी तरह, यदि आप ऑर्डर देने के लिए FMZ प्लेटफ़ॉर्म द्वारा एनकैप्सुलेट किए गए ऑर्डर इंटरफ़ेस का उपयोग करते हैं, तो चूंकि ऑर्डर आईडी की शुरुआत ट्रेडिंग उत्पाद कोड है, यदि आपको मूल ऑर्डर आईडी का उपयोग करने की आवश्यकता है, तो आपको केवल उत्पाद कोड को हटाने की आवश्यकता है और अल्पविराम.
यह अपग्रेड निम्न के लिए हैexchange.CancelOrder()कार्यों का प्रभाव औरexchange.GetOrder()कार्य समान हैं।
यह अपग्रेड निम्न के लिए हैexchange.Buy()कार्यों का प्रभाव औरexchange.GetOrder()कार्य समान हैं।exchange.Buy()फ़ंक्शन द्वारा लौटाई गई ऑर्डर आईडी एक नई संरचना है, उदाहरण के लिए, OKX एक्सचेंज पर फ्यूचर्स ऑर्डर देते समय लौटाई गई आईडी:LTC-USDT-SWAP,1578360858053058560。
यह अपग्रेड निम्न के लिए हैexchange.Sell()कार्यों का प्रभाव औरexchange.GetOrder()कार्य समान हैं।exchange.Sell()फ़ंक्शन द्वारा लौटाई गई ऑर्डर आईडी एक नई संरचना है, उदाहरण के लिए, OKX एक्सचेंज पर फ्यूचर्स ऑर्डर देते समय लौटाई गई आईडी:ETH-USDT-SWAP,1578360832820125696。
केवल फ्यूचर्स एक्सचेंज ऑब्जेक्ट ही इस फ़ंक्शन का समर्थन करते हैं। पोजीशन डेटा प्राप्त करने के लिए फ़ंक्शन एक्सचेंज.गेटपोसिशन() के लिए, एक नया नाम एक्सचेंज.गेटपोसिशन() जोड़ा गया है, और उनका व्यवहार बिल्कुल समान है।
पुरानी परिभाषा: exchange.GetPosition() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल किया जाता है, तो यह वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित विशिष्ट अनुबंध का स्थिति डेटा प्राप्त करता है।
समायोजन और संशोधन के बाद, नई परिभाषा है: एक्सचेंज.गेटपोजिशन() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल किया जाता है, तो यह वर्तमान में सेट किए गए ट्रेडिंग जोड़े और अनुबंध कोड द्वारा निर्धारित आयाम सीमा में सभी किस्मों की स्थिति प्राप्त करता है।
उदाहरण के लिए, वर्तमान ट्रेडिंग जोड़ी BTC_USDT है और अनुबंध कोड स्वैप है। इस समय कॉल करें:
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
यह फ़ंक्शन सभी मुद्राओं के यू-मार्जिन सतत अनुबंधों की स्थिति डेटा का अनुरोध करेगा।
पुरानी परिभाषा: exchange.GetOrders() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल किया जाता है, तो यह वर्तमान ट्रेडिंग जोड़ी के लिए सभी बकाया ऑर्डर प्राप्त करता है।
समायोजन और संशोधन के बाद, नई परिभाषा है: एक्सचेंज.गेटऑर्डर्स() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल किया जाता है, तो यह सभी स्पॉट ट्रेडिंग जोड़े के अधूरे ऑर्डर प्राप्त करता है।
पुरानी परिभाषा: exchange.GetOrders() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल किया जाता है, तो यह वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित विशिष्ट अनुबंध के सभी अधूरे ऑर्डर को पुनः प्राप्त करता है।
समायोजन और संशोधन के बाद, नई परिभाषा है: एक्सचेंज.गेटऑर्डर्स() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल कि