[TOC]
9 वर्षों के तकनीकी पुनरावृत्ति के बाद, एफएमजेड क्वांट ट्रेडिंग प्लेटफ़ॉर्म को कई बार पुनर्निर्माण किया गया है, हालांकि उपयोगकर्ताओं के रूप में हमने इसे नोटिस नहीं किया हो सकता है। पिछले दो वर्षों में, प्लेटफ़ॉर्म ने उपयोगकर्ता अनुभव के मामले में बहुत सारे अनुकूलन और अपग्रेड किए हैं, जिसमें यूआई इंटरफ़ेस का व्यापक उन्नयन, आम तौर पर उपयोग किए जाने वाले मात्रात्मक ट्रेडिंग टूल का संवर्धन और अधिक बैकटेस्टिंग डेटा समर्थन शामिल है।
रणनीति डिजाइन को अधिक सुविधाजनक बनाने के लिए, ट्रेडिंग लॉजिक को स्पष्ट और शुरुआती लोगों के लिए शुरू करना आसान बनाने के लिए, मंच ने रणनीति द्वारा उपयोग किए जाने वाले एपीआई इंटरफ़ेस को अपग्रेड किया है। नवीनतम संस्करण का उपयोग करने वाले डॉकर इन नई सुविधाओं को सक्षम कर सकते हैं। मंच अभी भी सबसे बड़ी हद तक पुराने इंटरफ़ेस कॉल के साथ संगत है। एपीआई इंटरफ़ेस की नई सुविधाओं के बारे में जानकारी एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म के एपीआई दस्तावेज में अपडेट की गई हैः
सिंटैक्स गाइडःhttps://www.fmz.com/syntax-guideउपयोगकर्ता गाइडःhttps://www.fmz.com/user-guide
तो चलिए एक त्वरित नज़र डालते हैं कि कौन से इंटरफेस को अपग्रेड किया गया है और मौजूदा एपीआई के साथ संगत बनाने के लिए पुरानी रणनीतियों का उपयोग करने के लिए क्या बदलाव की आवश्यकता है।
बहु-उत्पाद रणनीतियों और पूर्ण बाजार निगरानी रणनीतियों के डिजाइन के लिए, समग्र बाजार इंटरफ़ेस आवश्यक है। रणनीति को विकसित करने में आसान बनाने और घटनाओं को फिर से आविष्कार करने से बचने के लिए, एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म इस प्रकार के एक्सचेंज एपीआई को शामिल करता है।
यदि एक्सचेंज में यह इंटरफेस नहीं है (व्यक्तिगत एक्सचेंज), तो कॉल करते समयexchange.GetTickers()
, एक त्रुटि संदेश प्रदर्शित होता हैः समर्थित नहीं है.
इस फ़ंक्शन में कोई पैरामीटर नहीं है और यह एक्सचेंज के एकत्रित बाजार इंटरफ़ेस में सभी किस्मों के वास्तविक समय के बाजार डेटा को लौटाएगा। इसे बस इस प्रकार समझा जा सकता हैः
exchange.GetTickers()
function के पूर्ण विशेषताओं के अनुरोध संस्करण हैexchange.GetTicker()
कार्य (ध्यान से देखो, इन दो कार्य नामों के बीच अंतर केवल एकवचन और बहुवचन है) ।
हम परीक्षण के लिए ओकेएक्स स्पॉट सिमुलेशन वातावरण का उपयोग करते हैंः
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
.
ओकेएक्स वायदा अनुकरण वातावरण का प्रयोग करके परीक्षणः
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)
}
इस तरह, केवल तीनexchange.CreateOrder()
विभिन्न किस्मों और दिशाओं के तीन वायदा आदेशों को रखने के लिए फ़ंक्शन कॉल का उपयोग किया गया था।
हाल ही में जोड़ा गयाexchange.GetHistoryOrders()
एक निश्चित प्रकार के ऐतिहासिक लेनदेन आदेश प्राप्त करने के लिए कार्य का उपयोग किया जाता है। कार्य को विनिमय इंटरफ़ेस के समर्थन की भी आवश्यकता होती है।
ऐतिहासिक आदेशों की क्वेरी के लिए, विभिन्न एक्सचेंजों द्वारा लागू इंटरफेस बहुत भिन्न होते हैंः
विस्तृत फ़ंक्शन विवरण यहाँ दोहराया नहीं है, आप एपीआई प्रलेखन में वाक्य रचना मैनुअल का संदर्भ ले सकते हैंः
https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders
बिनेंस स्पॉट ट्रेडिंग वातावरण का उपयोग करके परीक्षण किया गयाः
function main() {
var orders = exchange.GetHistoryOrders("ETH_USDT")
// Write to chart
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()
फ़ंक्शन के तीन कॉल रूप होते हैंः
विनिमय.GetPositions ((() जब कोई पैरामीटर पारित नहीं किया जाता है, वर्तमान आयाम में सभी किस्मों की स्थिति डेटा वर्तमान के सेटिंग्स के अनुसार अनुरोध किया जाता हैव्यापारिक जोड़ी / अनुबंध कोड.
exchange.GetPositions ((BTC_USD.swap
, ETH_USDT.swap
, ETH_USDT.quarter
आदि।
BTC_USD.swap: BTC
exchange.GetPositions ((
कुछ विशेष विनिमय अनुबंध आयाम विभागः
USDT.futures_combo: फ्यूचर्स_डेरबिट एक्सचेंज
ओकेएक्स वायदा अनुकरण वातावरण का प्रयोग करके परीक्षणः
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
जब पैरामीटरexchange.GetPositions()
कार्य में पारित नहीं होते हैं, एक्सचेंज पर सूचीबद्ध सभी यू-आधारित स्थायी अनुबंधों के स्थिति डेटा प्राप्त किया जा सकता है (क्योंकि वर्तमान ट्रेडिंग जोड़ी BTC_USDT है और अनुबंध स्वैप है, अनुरोध वर्तमान ट्रेडिंग जोड़ी और अनुबंध आयाम सीमा पर आधारित है) । यह कॉल करने के बराबर हैexchange.GetPositions("USDT.swap")
और अनुरोध सीमा निर्दिष्ट करें।
बाजार के कार्य का मुख्य उन्नयनexchange.GetTicker()
यह फ़ंक्शन को वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड के बिना पैरामीटर द्वारा निर्दिष्ट उत्पाद जानकारी के अनुसार सीधे बाजार डेटा का अनुरोध करने की अनुमति देता है। यह कोड लेखन प्रक्रिया को सरल बनाता है। साथ ही, यह अभी भी पैरामीटर पास किए बिना कॉल विधि के साथ संगत है, और पुराने प्लेटफॉर्म रणनीति के साथ सबसे अधिक हद तक संगत है।
पैरामीटरsymbol
एक्सचेंज ऑब्जेक्ट के लिए स्पॉट/फ्यूचर्स के लिए अलग-अलग प्रारूप हैंexchange
:
AAA_BBB
, एएए बेस करेंसी यानी ट्रेडिंग करेंसी और बीबीबी कोट करेंसी यानी प्राइसिंग करेंसी का प्रतिनिधित्व करता है। करेंसी के नाम सभी बड़े अक्षरों में लिखे गए हैं।
उदाहरण के लिएः BTC_USDT स्पॉट ट्रेडिंग जोड़ी।AAA_BBB.XXX
, एएए बेस करेंसी, यानी ट्रेडिंग करेंसी का प्रतिनिधित्व करता है, बीबीबी कोट करेंसी, यानी मूल्य निर्धारण करेंसी का प्रतिनिधित्व करता है, और XXX अनुबंध कोड का प्रतिनिधित्व करता है, जैसे कि स्थायी अनुबंध स्वैप। मुद्रा नाम सभी बड़े अक्षरों में हैं, और अनुबंध कोड छोटे अक्षरों में हैं।
उदाहरण के लिएः BTC_USDT.swap, BTCvar 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 भी एक प्रतीक पैरामीटर जोड़ता है. यह हमें गहराई डेटा का अनुरोध करते समय सीधे प्रतीक निर्दिष्ट करने की अनुमति देता है.
बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गयाः
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 एक प्रतीक पैरामीटर भी जोड़ता है। यह हमें बाजार लेनदेन डेटा का अनुरोध करते समय सीधे प्रतीक निर्दिष्ट करने की अनुमति देता है।
बिनेंस फ्यूचर्स लाइव वातावरण का उपयोग करके परीक्षण किया गयाः
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()
जब प्लेटफ़ॉर्म एपीआई इंटरफेस को एक साथ बुलाया जाता है।
GetRecords फ़ंक्शन को इस बार काफी समायोजित किया गया है। अनुरोधित K-लाइन डेटा की प्रकार जानकारी को सीधे निर्दिष्ट करने के लिए प्रतीक पैरामीटर का समर्थन करने के अलावा, मूल अवधि पैरामीटर को K-लाइन अवधि को निर्दिष्ट करने के लिए बरकरार रखा गया है, और अनुरोध करते समय अपेक्षित K-लाइन लंबाई को निर्दिष्ट करने के लिए एक सीमा पैरामीटर जोड़ा गया है। साथ ही, यह GetRecords फ़ंक्शन के पुराने संस्करण के साथ भी संगत है जो केवल अवधि पैरामीटर में गुजरता है।
कॉल करने की विधि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 time difference between adjacent bars:", r1[1].Time - r1[0].Time, "Milliseconds, Bar length:", r1.length)
Log("r2 time difference between adjacent bars:", r2[1].Time - r2[0].Time, "Milliseconds, Bar length:", r2.length)
Log("r3 time difference between adjacent bars:", r3[1].Time - r3[0].Time, "Milliseconds, Bar length:", r3.length)
Log("r4 time difference between adjacent bars:", r4[1].Time - r4[0].Time, "Milliseconds, Bar length:", r4.length)
Log("r5 time difference between adjacent bars:", r5[1].Time - r5[0].Time, "Milliseconds, Bar length:", r5.length)
}
GetOrders फ़ंक्शन भी जोड़ता हैsymbol
मापदंडों, जो एक विशिष्ट प्रतीक निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है और उस प्रतीक के अधूरे आदेशों (लंबित आदेशों) की क्वेरी; यह भी निर्दिष्ट आयाम सीमा में सभी प्रतीकों के अधूरे आदेशों (लंबित आदेशों) की क्वेरी का समर्थन करता है।
..exchange.GetOrders()
फ़ंक्शन को निम्नलिखित तरीकों से बुलाया जा सकता हैः
ओकेएक्स वायदा अनुकरण वातावरण का प्रयोग करके परीक्षणः
function main() {
exchange.IO("simulate", true)
exchange.SetCurrency("BTC_USDT")
exchange.SetContractType("swap")
// Write to chart
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) + "`")
}
जब कोई पैरामीटर पारित नहीं किया जाता है, तो वर्तमान ट्रेडिंग जोड़ी (BTC_USDT) और अनुबंध कोड (स्वैप) के आयाम सीमा में सभी किस्मों के अधूरे ऑर्डर (लंबित ऑर्डर) का अनुरोध किया जाता है।
जब पैरामीटरETH_USDT.swap
निर्दिष्ट किया गया है, तो ETH
जब स्ट्रिंग"USDT.swap"
पारित किया जाता है, तो सभी USDT-आधारित स्थायी अनुबंधों के अधूरे आदेशों (लंबित आदेशों) का अनुरोध किया जाता है।
यह अभी भी पुराने स्थिति अधिग्रहण फ़ंक्शन नामकरण के साथ संगत है, और प्रतीक पैरामीटर भी जोड़ता है, जो विशिष्ट अनुरोधित स्थिति डेटा की प्रकार जानकारी निर्दिष्ट कर सकता है।
इस फ़ंक्शन का उपयोग बिल्कुल वैसा ही है जैसा किexchange.GetPositions()
.
के लिएexchange.IO("api", ...)
फ़ंक्शन कॉल, सभी एक्सचेंज ऑब्जेक्ट्स को पूर्ण अनुरोध पते के प्रत्यक्ष पासिंग का समर्थन करने के लिए अपग्रेड किया गया है।
उदाहरण के लिए, यदि आप OKX इंटरफ़ेस कॉल करना चाहते हैंः
// प्राप्त करेंhttps://www.okx.com/api/v5/account/max-withdrawal ccy: BTC
आधार पते पर प्रत्यक्ष लेखन का समर्थन करता हैhttps://www.okx.com
बिना आधार पते को पहले स्विच करने और फिर IO फ़ंक्शन को कॉल करने के लिए।
ओकेएक्स वायदा अनुकरण वातावरण का प्रयोग करके परीक्षणः
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}
यह उन्नयन मुख्य रूप से पैरामीटर को प्रभावित करता हैid
केexchange.GetOrder(id)
id पैरामीटर को मूल विनिमय आदेश id से बदलकर स्ट्रींग प्रारूप में बदल दिया जाता है जिसमें ट्रेडिंग उत्पाद होता है।
एफएमजेड प्लेटफॉर्म पर सभी ऑर्डर आईडी इस प्रारूप में हैं।
उदाहरण के लिए:
123456
इस उन्नयन से पहले, यदि आप GetOrder फ़ंक्शन को कॉल करना चाहते हैं, तो आदेश आईडी में पारित किया जाता है123456
.BTC-USDT
.
ध्यान दें कि यह एक्सचेंज द्वारा नामित ट्रेडिंग उत्पाद कोड को संदर्भित करता है, FMZ प्लेटफॉर्म द्वारा परिभाषित ट्रेडिंग जोड़ी को नहीं।इस उन्नयन के बाद, पैरामीटर आईडी का प्रारूप जिसे पास करने की आवश्यकता हैexchange.GetOrder(id)
कार्य को निम्नानुसार समायोजित किया जाता हैःBTC-USDT,123456
.
सबसे पहले, मुझे यह समझाने दो कि यह डिजाइन क्यों किया गया है: क्योंकि CreateOrder फ़ंक्शन को ऑर्डर के प्रकार को सीधे निर्दिष्ट करने के लिए अपग्रेड किया गया है (आदेश का प्रकार वर्तमान में सेट ट्रेडिंग जोड़ी और अनुबंध कोड से अलग हो सकता है) । यदि लौटाए गए ऑर्डर आईडी में प्रकार की जानकारी नहीं है, तो यह ऑर्डर आईडी अनुपयोगी होगी। क्योंकि ऑर्डर की जांच करते समय, हमें नहीं पता कि ऑर्डर किस प्रकार (अनुबंध) के लिए है। अधिकांश एक्सचेंजों को ऑर्डर की जांच और रद्द करते समय प्रकार कोड का वर्णन करने वाले मापदंडों के विनिर्देश की आवश्यकता होती है।
इस प्रभाव के साथ संगत कैसे हो: यदि आपexchange.IOऑर्डर देने के लिए सीधे एक्सचेंज ऑर्डर इंटरफेस को कॉल करने के लिए फ़ंक्शन, रिटर्न वैल्यू में आम तौर पर एक्सचेंज का मूल प्रतीक (उत्पाद कोड) और मूल ऑर्डर आईडी होता है। फिर दोनों को अंग्रेजी अल्पविराम के साथ जोड़ना ऑर्डर आईडी होगा जो एफएमजेड प्लेटफॉर्म की परिभाषा का अनुपालन करता है। इसी प्रकार, यदि आप आदेश देने के लिए FMZ प्लेटफॉर्म कैप्सुलेटेड ऑर्डर इंटरफ़ेस का उपयोग करते हैं, क्योंकि ऑर्डर आईडी की शुरुआत ट्रेडिंग उत्पाद कोड है, यदि आपको मूल ऑर्डर आईडी का उपयोग करने की आवश्यकता है, तो बस उत्पाद कोड और अल्पविराम हटा दें।
इस उन्नयन का प्रभावexchange.CancelOrder()
कार्य के रूप में ही हैexchange.GetOrder()
function.
इस उन्नयन का प्रभावexchange.Buy()
कार्य के रूप में ही हैexchange.GetOrder()
कार्य।
आदेश आईडी द्वारा लौटायाexchange.Buy()
कार्य एक नई संरचना है, उदाहरण के लिए, OKX एक्सचेंज पर वायदा आदेश रखने पर लौटा दी गई आईडी हैःLTC-USDT-SWAP,1578360858053058560
.
इस उन्नयन का प्रभावexchange.Sell()
कार्य के रूप में ही हैexchange.GetOrder()
कार्य।
आदेश आईडी द्वारा लौटायाexchange.Sell()
कार्य एक नई संरचना है, उदाहरण के लिए, OKX एक्सचेंज पर वायदा आदेश रखने पर लौटा दी गई आईडी हैःETH-USDT-SWAP,1578360832820125696
.
केवल फ्यूचर्स एक्सचेंज ऑब्जेक्ट ही इस फ़ंक्शन का समर्थन करते हैं। स्थिति डेटा प्राप्त करने के लिए exchange.GetPosition() फ़ंक्शन के लिए, एक नया exchange.GetPositions() नाम जोड़ा जाता है, और दोनों व्यवहार बिल्कुल समान हैं।
पुरानी परिभाषाः exchange.GetPosition() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित विशिष्ट अनुबंध के स्थिति डेटा प्राप्त करता है। समायोजन और संशोधन के बाद, नई परिभाषाः exchange.GetPosition() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो वर्तमान सेट ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित आयाम सीमा में सभी किस्मों की स्थिति प्राप्त करता है।
उदाहरण के लिए, वर्तमान ट्रेडिंग जोड़ी BTC_USDT है और अनुबंध कोड स्वैप है। इस समय, कॉल करेंः
exchange.GetPosition() // Equivalent to calling exchange.GetPosition("USDT.swap")
यह फ़ंक्शन सभी मुद्राओं के यू-आधारित स्थायी अनुबंधों के स्थिति डेटा का अनुरोध करेगा।
पुरानी परिभाषाः exchange.GetOrders() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो वर्तमान ट्रेडिंग जोड़ी के सभी अधूरे आदेश प्राप्त करता है। समायोजन और संशोधन के बाद, नई परिभाषा हैः exchange.GetOrders() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो सभी स्पॉट ट्रेडिंग जोड़े के अधूरे आदेश प्राप्त करता है।
पुरानी परिभाषाः exchange.GetOrders() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित विशिष्ट अनुबंध के सभी अधूरे आदेश प्राप्त करता है। समायोजन और संशोधन के बाद, नई परिभाषा हैः exchange.GetOrders() फ़ंक्शन, जब किसी भी पैरामीटर को निर्दिष्ट किए बिना बुलाया जाता है, तो वर्तमान ट्रेडिंग जोड़ी और अनुबंध कोड द्वारा निर्धारित आयाम सीमा के सभी अधूरे आदेश प्राप्त करता है।
उदाहरण के लिए, वर्तमान ट्रेडिंग जोड़ी BTC_USD है और अनुबंध कोड तिमाही है। इस समय, कॉल करेंः
exchange.GetOrders() // Equivalent to calling exchange.GetOrders("USD.futures")
यह फ़ंक्शन सभी सिक्का आधारित वायदा अनुबंधों के बकाया ऑर्डर डेटा का अनुरोध करेगा।
यह अद्यतन टिकर संरचना में एक प्रतीक क्षेत्र जोड़ता है, जो वर्तमान टिकर संरचना की बाजार जानकारी को रिकॉर्ड करता है।
इस फ़ील्ड का प्रारूप प्रतीक पैरामीटर प्रारूप के समान ही हैexchange.GetTicker()
function.
यह अद्यतन आदेश संरचना के लिए एक प्रतीक क्षेत्र जोड़ता है, और इस क्षेत्र का प्रारूप प्रतीक पैरामीटर प्रारूप के समान हैexchange.GetTicker()
कार्य।
यह अद्यतन ऑर्डर संरचना के आईडी क्षेत्र को भी संशोधित करता है, नए ऑर्डर आईडी प्रारूप में उत्पाद जानकारी और मूल ऑर्डर जानकारी को रिकॉर्ड करता है।exchange.GetOrder()
कार्य, जो यहाँ दोहराया नहीं जाएगा।
यह अद्यतन स्थिति संरचना के लिए एक प्रतीक क्षेत्र जोड़ता है. इस क्षेत्र का प्रारूप प्रतीक पैरामीटर प्रारूप के समान ही हैexchange.GetTicker()
function.
प्लेटफ़ॉर्म रणनीति एपीआई इंटरफ़ेस अपग्रेड के अनुसार, प्लेटफ़ॉर्म
कृषि क्षेत्रAccount
संरचना द्वारा लौटायाGetAccount
फ्यूचर्स एक्सचेंज ऑब्जेक्ट के सदस्य समारोह का विस्तार किया गया है।
इक्विटी वर्तमान मार्जिन परिसंपत्ति मुद्रा की कुल इक्विटी। कुछ वायदा एक्सचेंजों को छोड़कर जो इस फ़ील्ड का समर्थन नहीं करते हैं, अधिकांश एक्सचेंजों का समर्थन करते हैं। इसका उपयोग मुख्य रूप से वास्तविक समय खाते के मार्जिन लाभ और हानि की गणना करने के लिए किया जाता है।
यूपीएनएल वर्तमान मार्जिन परिसंपत्ति मुद्रा में रखे गए सभी पदों का अव्यवस्थित लाभ और हानि। अधिकांश वायदा विनिमय इस क्षेत्र का समर्थन करते हैं, कुछ को छोड़कर जो नहीं करते हैं।
फ्यूचर्स एक्सचेंज ऑब्जेक्ट के सदस्य फ़ंक्शन SetMarginLevel को अपग्रेड किया गया है और पैरामीटर प्रतीक जोड़ा गया है।
परीक्षण उदाहरणः
function main() {
exchange.SetCurrency("ETH_USDT")
exchange.SetContractType("swap")
// The current trading pair is ETH_USDT, the contract code is swap, and the leverage value is set to 10
exchange.SetMarginLevel(10)
// Directly specify the trading pair BTC_USDT, contract code swap, and set the leverage value to 20
exchange.SetMarginLevel("BTC_USDT.swap", 20)
}
क्षेत्रCtValCcy
किसी अनुबंध की मूल्य इकाई दर्ज करता है। किसी अनुबंध की मूल्य इकाई हो सकती हैः BTC, USD, ETH, आदि।
क्षेत्रCtVal
एक्सचेंज पर ट्रेड किए जाने वाले उत्पाद के अनुबंध का मूल्य दर्ज करता है और इकाई मुद्रा है जोCtValCcy
उदाहरण के लिए:CtVal
0.01 है, औरCtValCcy