संसाधन लोड हो रहा है... लोड करना...

आविष्कारकों द्वारा क्वांटिफाइड ट्रेडिंग प्लेटफॉर्म एपीआई उन्नयनः रणनीतिक डिजाइन अनुभव को बढ़ाना

लेखक:आविष्कारक मात्रा - छोटे सपने, बनाया गयाः 2024-06-28 09:08:29, अद्यतनः 2024-07-24 12:00:40

[TOC]

img

प्रस्तावना

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

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

व्याकरण पुस्तिकाःhttps://www.fmz.com/syntax-guideउपयोगकर्ता गाइडःhttps://www.fmz.com/user-guide

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

1। एपीआई इंटरफेस

新增exchange.GetTickers函数

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

यदि एक्सचेंज में ऐसा इंटरफ़ेस नहीं है (किसी भी एक्सचेंज के लिए), तो कॉल करेंexchange.GetTickers()यह गलत है: समर्थन नहीं।

यह फ़ंक्शन बिना किसी पैरामीटर के, एक्सचेंज को सभी किस्मों के वास्तविक समय के बाजार डेटा को बाजार इंटरफ़ेस में एकत्रित करता है। इसे सरल तरीके से समझा जा सकता हैः

exchange.GetTickers()यह हैexchange.GetTicker()फ़ंक्शन के पूर्ण विविधता अनुरोध संस्करण ((ध्यान दें, इन दो फ़ंक्शन नामों के बीच अंतर केवल एकल बहुलक है) ।) ।

हम OKX Live Simulator का उपयोग करके पर्यावरण परीक्षण करते हैंः

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
}

img

新增exchange.CreateOrder函数

नई वृद्धिexchange.CreateOrder()फ़ंक्शन को इस उन्नयन का मुख्य बिंदु माना जा सकता है।exchange.CreateOrder()फ़ंक्शन की सबसे बड़ी कार्यक्षमता यह है कि फ़ंक्शन के पैरामीटर में सीधे ऑर्डर की किस्म या दिशा निर्दिष्ट की जाती है। इस प्रकार सिस्टम वर्तमान में सेट किए गए लेनदेन जोड़े, अनुबंध कोड, लेनदेन दिशा आदि पर निर्भर नहीं होता है।

बहुविकल्पीय लेन-देन के तहत एकल परिदृश्य में, डिजाइन जटिलता को बहुत कम किया जाता है।exchange.CreateOrder()और यह है कि यह है.symbolsidepriceamount

ओकेएक्स फ्यूचर्स एनालॉग का उपयोग करके पर्यावरण परीक्षणः

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)
}

img

यह केवल तीन बार किया गया था.exchange.CreateOrder()फ़ंक्शन कॉल तीन अलग-अलग किस्मों के, अलग-अलग दिशाओं के फ्यूचर्स ऑर्डर के लिए आते हैं।

新增exchange.GetHistoryOrders函数

नई वृद्धिexchange.GetHistoryOrders()फ़ंक्शन का उपयोग किसी प्रकार के ऐतिहासिक लेनदेन के आदेशों को प्राप्त करने के लिए किया जाता है, जिसे एक्सचेंज इंटरफ़ेस समर्थन की आवश्यकता होती है।

ऐतिहासिक ऑर्डर की जांच के लिए, एक्सचेंजों द्वारा लागू किए गए इंटरफेस में बहुत अंतर हैः

  • कुछ पृष्ठ विभाजन के लिए पूछताछ का समर्थन करते हैं, कुछ नहीं।
  • कुछ लेन-देन सभी पूछताछ खिड़की अवधि, यानी N दिनों से अधिक के आदेशों के लिए नहीं पूछ सकते हैं;
  • अधिकांश एक्सचेंजों ने समय-निर्धारित पूछताछ का समर्थन किया, कुछ ने नहीं।

इस प्रकार के इंटरफेस को अधिकतम संगतता के लिए पैक करने के लिए, वास्तविक उपयोग में ध्यान देने की आवश्यकता है कि क्या यह रणनीति की आवश्यकताओं, अपेक्षाओं के अनुरूप है।

अधिक जानकारी के लिए, आप एपीआई दस्तावेज़ में सिंटेक्स मैनुअल देख सकते हैंः

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) +  "`")
}

img

新增exchange.GetPositions函数

पुराने संस्करणों में, प्राप्त करने के लिए भंडारण डेटा फ़ंक्शनexchange.GetPosition()इस अपग्रेड में फ़ंक्शन के नामकरण के अर्थ को बेहतर ढंग से फिट करने के लिए एक नया एक्सेस होल्डिंग फ़ंक्शन जोड़ा गया हैःexchange.GetPositions().......................................................................................................................................................................................................

exchange.GetPositions()फ़ंक्शन को तीन प्रकार से बुलाया जा सकता हैः

  • exchange.GetPositions ((() जब कोई पैरामीटर नहीं भेजा जाता है, तो वर्तमान लेन-देन जोड़ी / अनुबंध कोड सेटिंग के अनुसार भंडारण डेटा का अनुरोध करें।
  • exchange.GetPositions ((ETH_USDT.swap बटन) जब किसी विशेष किस्म की जानकारी (ETH_USDT.swap के रूप में FMZ प्लेटफॉर्म द्वारा परिभाषित किया गया है) निर्दिष्ट की जाती है, तो उस विशेष किस्म के लिए स्टॉक डेटा का अनुरोध किया जाता है।
  • exchange.GetPositions (("") विनिमय के लिए स्टॉक इंटरफ़ेस के लिए उपलब्ध वर्तमान आयामों के सभी स्टॉक डेटा का अनुरोध करें.

ओकेएक्स फ्यूचर्स एनालॉग का उपयोग करके पर्यावरण परीक्षणः

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    var p1 = exchange.GetPositions()
    var p2 = exchange.GetPositions("")

    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) +  "`")
}

img

जब प्रवेशexchange.GetPositions()फ़ंक्शन का पैरामीटर हैETH_USDT.swapऔर फिर, ईटीएच के यू-बिट के स्थायी अनुबंधों के लिए स्टॉक डेटा प्राप्त करें।

img

जब प्रवेशexchange.GetPositions()फ़ंक्शन का पैरामीटर एक खाली स्ट्रिंग है""यह बहुत सुविधाजनक है कि आप अपने सभी अनुबंधों के लिए स्टॉक डेटा प्राप्त कर सकते हैं।

2. एपीआई इंटरफ़ेस उन्नयन

升级exchange.GetTicker函数

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

पैरामीटरsymbolएक्सचेंजों के लिएexchangeयह एक अलग प्रारूप में उपलब्ध है:

  • वस्तुओं का विनिमय यह प्रारूप हैःAAA_BBBएएए बेस करेंसी को ट्रेडिंग करेंसी के रूप में दर्शाता है, बीबीबी को उद्धरण करेंसी के रूप में दर्शाता है। मुद्राओं के नाम बड़े अक्षरों में हैं। उदाहरण के लिएः BTC_USDT नकदी व्यापार जोड़ी।
  • फ्यूचर्स एक्सचेंज का उद्देश्य यह प्रारूप हैःAAA_BBB.XXXएएए बेस करेंसी, बीबीबी कोट करेंसी और एक्सएक्सएक्स को कॉन्ट्रैक्ट कोड के लिए संदर्भित करता है, जैसे कि स्थायी अनुबंध स्वैप। मुद्राओं के नाम बड़े अक्षरों में लिखे जाते हैं और कॉन्ट्रैक्ट कोड छोटे अक्षरों में लिखे जाते हैं। उदाहरण के लिएः BTC_USDT.swap, BTC के यू-बिट स्थायी अनुबंध।

यह एक बहुत ही अच्छा तरीका है कि हम अपने ग्राहकों को एक अच्छी तरह से तैयार की गई सामग्री प्रदान करने में मदद कर सकते हैं।

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
}

img

एक समूह के विनिर्दिष्ट किस्मों के लिए बाजार डेटा डिजाइन का अनुरोध करना सरल हो गया है।

升级exchange.GetDepth函数

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"))
}

img

升级exchange.GetTrades函数

GetTicker के समान हैexchange.GetTrades()फ़ंक्शन में इस बार symbol पैरामीटर भी जोड़ा गया है. बाजार लेनदेन डेटा का अनुरोध करते समय सीधे किस्मों को निर्दिष्ट करना संभव है.

यह एक बहुत ही अच्छा तरीका है कि हम अपने ग्राहकों को एक अच्छी तरह से तैयार की गई सामग्री प्रदान करने में मदद कर सकते हैं।

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) +  "`")
}

img

यह उन्नयन भी संगत पारित किया गया है।exchange.Go()फ़ंक्शन को एक साथ कॉल करने के लिए प्लेटफ़ॉर्म एपीआई इंटरफ़ेस पर प्रतीक पैरामीटर विशिष्ट किस्म की जानकारी भेजता है।

升级exchange.GetRecords函数

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

exchange.GetRecords()फ़ंक्शन का उपयोग कैसे करें:

  • exchange.GetRecords ((() बिना किसी पैरामीटर का निर्दिष्ट किए वर्तमान लेन-देन जोड़ी/अनुबंध कोड के अनुरूप किस्म के के-लाइन डेटा का अनुरोध करते समय, के-लाइन चक्र एक नीतिगत पुनरीक्षण इंटरफ़ेस या वास्तविक समय पर सेट किया गया डिफ़ॉल्ट के-लाइन चक्र है।
  • exchange.GetRecords ((60 * 15) जब केवल K-लाइन चक्र पैरामीटर निर्दिष्ट किया जाता है, तो वर्तमान लेन-देन जोड़ी / अनुबंध कोड के अनुरूप किस्म के K-लाइन डेटा का अनुरोध करें।
  • exchange.GetRecords ((BTC_USDT.swap)) जब केवल प्रजाति की जानकारी निर्दिष्ट की जाती है, तो प्रजाति निर्दिष्ट करने के लिए K-लाइन डेटा का अनुरोध किया जाता है, और K-लाइन चक्र रणनीतिक पुनरीक्षण इंटरफ़ेस या वास्तविक डिस्क पर सेट किए गए डिफ़ॉल्ट K-लाइन चक्र होते हैं।
  • exchange.GetRecords ((BTC_USDT.swap बटन, 60 * 60) किस्म की जानकारी निर्दिष्ट करें, विशिष्ट K-लाइन चक्र निर्दिष्ट करें और K-लाइन डेटा का अनुरोध करें।
  • exchange.GetRecords (( BTC_USDT.swap, 60, 1000) किस्म की जानकारी निर्दिष्ट करें, विशिष्ट K-लाइन चक्र निर्दिष्ट करें, नियमित रूप से प्राप्त किए जाने वाले K-लाइन लंबाई के लिए K-लाइन डेटा का अनुरोध करें। ध्यान दें कि जब सीमा पैरामीटर एक्सचेंज द्वारा एक बार अनुरोध की अधिकतम लंबाई से अधिक हो जाता है, तो एक विभाजन अनुरोध उत्पन्न होता है (यानी एक्सचेंज के लाइन इंटरफ़ेस को कई बार बुलाया जाता है) ।

यह एक बहुत ही अच्छा तरीका है कि हम अपने ग्राहकों को एक अच्छी तरह से तैयार की गई सामग्री प्रदान करने में मदद कर सकते हैं।

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)
}

img

升级exchange.GetOrders函数

GetOrders फ़ंक्शन भी जोड़ा गया हैsymbolपैरामीटर, जो सीधे उन किस्मों की क्वेरी को निर्दिष्ट कर सकता है जिनकी वर्तमान में ऑर्डर (लिस्टिंग) पूरी नहीं हुई है; यह भी सभी लिस्टिंग (लिस्टिंग) के लिए क्वेरी का समर्थन करता है; मूल कॉल के साथ संगत है।

exchange.GetOrders()फ़ंक्शन को निम्नलिखित तरीकों से बुलाया जा सकता हैः

  • exchange.GetOrders ((() सभी अधूरे आदेशों के लिए वर्तमान लेन-देन जोड़े / अनुबंध कोड का पता लगाएं।
  • exchange.GetOrders ((BTC_USDT.swap) बीटीसी के लिए USDT के स्थायी अनुबंध के सभी अधूरे आदेशों का पता लगाएं।
  • exchange.GetOrders (("") एक्सचेंज में सभी अधूरे आदेशों के लिए वर्तमान आयाम विभाजन (एक्सचेंज एपीआई इंटरफ़ेस आयाम विभाजन के आधार पर) ।

ओकेएक्स फ्यूचर्स एनालॉग का उपयोग करके पर्यावरण परीक्षणः

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    // 写入图表
    var tbls = []
    for (var symbol of ["null", "ETH_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) +  "`")
}

img

जब कोई पैरामीटर नहीं भेजा जाता है, तो डिफ़ॉल्ट रूप से वर्तमान BTC_USDT लेनदेन जोड़े, स्वैप स्थायी अनुबंध के सभी अधूरे पेंडिंग सूचियों का अनुरोध करता है।

img

पैरामीटर निर्दिष्ट करेंETH_USDT.swapजब पैरामीटर, अनुरोधित ETH_USDT व्यापार जोड़ी के लिए सभी अधूरे पेंडिंग अनुबंध।

img

रिक्त स्ट्रिंग भेजें""जब हम सभी USDT स्थानीय अनुबंधों के लिए सभी अधूरे पेंडिंग सूचियों का अनुरोध करते हैं।

升级exchange.GetPosition函数

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

升级exchange.IO函数

के लिए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")
}

img

3. एपीआई इंटरफ़ेस प्रभाव

影响exchange.GetOrder函数

इस उन्नयन ने मुख्य रूप से प्रभावित कियाexchange.GetOrder(id)फ़ंक्शन के पैरामीटरid,id पैरामीटर को मूल एक्सचेंज ऑर्डर id से एक स्ट्रिंग प्रारूप में बदल दिया गया है जिसमें लेनदेन की विविधता शामिल है। FMZ प्लेटफॉर्म पर सभी पैक किए गए ऑर्डर आईडी इस प्रारूप में हैं।

उदाहरण के लिएः

  • एक्सचेंज ऑर्डर में परिभाषित एक्सचेंज मूल ऑर्डर आईडी हैः123456इस उन्नयन से पहले, यदि आप GetOrder फ़ंक्शन को कॉल करते हैं, तो आपके द्वारा भेजे गए ऑर्डर आईडी123456
  • एक्सचेंज ऑर्डर में परिभाषित एक्सचेंज नामित उत्पाद कोडःBTC-USDT.. ध्यान दें कि यह एक्सचेंज द्वारा नामित ट्रेडिंग किस्म कोड है, और एफएमजेड प्लेटफॉर्म द्वारा परिभाषित ट्रेडिंग जोड़े नहीं हैं।

इस बार के अपग्रेड के बाद,exchange.GetOrder(id)फ़ंक्शन के लिए आवश्यक पैरामीटर id का प्रारूप इस प्रकार है:BTC-USDT,123456

इस तरह के डिजाइन के बारे में पहले बताएंः क्योंकि इस बार CreateOrder फ़ंक्शन को अपग्रेड किया गया है, जो सीधे ऑर्डर की किस्मों को निर्दिष्ट करता है (ऑर्डर की किस्म और वर्तमान सेट किए गए लेनदेन जोड़े, अनुबंध कोड अलग हो सकते हैं), यदि लौटे हुए ऑर्डर आईडी में किस्म की जानकारी नहीं है, तो यह ऑर्डर आईडी उपयोग करने में असमर्थ होगी। क्योंकि यह ज्ञात नहीं है कि यह ऑर्डर किस किस्म का है (अनुबंध) जब तक यह विशिष्ट सूची में नहीं आता है। अधिकांश एक्सचेंजों में, इनवॉइसिंग और विलोपन को उस पैरामीटर को निर्दिष्ट करने की आवश्यकता होती है जो किस्म कोड का वर्णन करता है।

इस प्रभाव को कैसे मिलाया जाएः यदि ऑर्डर करने के लिए एक्सचेंज.आईओ फ़ंक्शन का उपयोग किया जाता है, जो सीधे एक्सचेंज ऑर्डर इंटरफ़ेस को कॉल करता है, तो रिटर्न मान में आमतौर पर एक्सचेंज का मूल प्रतीक (प्रजाति कोड) और मूल ऑर्डर आईडी होता है। फिर दोनों को अंग्रेजी कॉमा के साथ जोड़ना एफएमजेड प्लेटफॉर्म द्वारा परिभाषित ऑर्डर आईडी के अनुरूप है। इसी तरह, यदि एफएमजेड प्लेटफ़ॉर्म के साथ पैक किए गए ऑर्डर इंटरफेस का उपयोग किया जाता है, तो ऑर्डर आईडी के शुरुआती भाग में लेनदेन की किस्म का कोड होता है, इसलिए ऑर्डर के मूल आईडी का उपयोग करने की आवश्यकता होने पर, केवल किस्म कोड और अल्पविराम को हटाने की आवश्यकता होती है।

影响exchange.CancelOrder函数

यह उन्नयनexchange.CancelOrder()फ़ंक्शन का प्रभावexchange.GetOrder()फ़ंक्शन समान है.

影响exchange.Buy函数

यह उन्नयनexchange.Buy()फ़ंक्शन का प्रभावexchange.GetOrder()फ़ंक्शन समान है.exchange.Buy()फ़ंक्शन द्वारा लौटाए गए ऑर्डर आईडी एक नई संरचना है, जैसे कि ओकेएक्स एक्सचेंज में वायदा ऑर्डर करते समय लौटाए गए आईडीःLTC-USDT-SWAP,1578360858053058560

影响exchange.Sell函数

यह उन्नयनexchange.Sell()फ़ंक्शन का प्रभावexchange.GetOrder()फ़ंक्शन समान है.exchange.Sell()फ़ंक्शन द्वारा लौटाए गए ऑर्डर आईडी एक नई संरचना है, जैसे कि ओकेएक्स एक्सचेंज में वायदा ऑर्डर करते समय लौटाए गए आईडीःETH-USDT-SWAP,1578360832820125696

4. संरचनात्मक समायोजन

टिकर संरचना

इस अद्यतन में टिकर संरचनाओं के लिए एक प्रतीक क्षेत्र जोड़ा गया है, जो वर्तमान टिकर संरचनाओं के लिए बाजार जानकारी दर्ज करता है। इस फ़ील्ड का प्रारूपexchange.GetTicker()फ़ंक्शन का प्रतीक पैरामीटर प्रारूप पूरी तरह से एक जैसा है.

आदेश संरचना

इस अद्यतन ने ऑर्डर स्ट्रक्चर में प्रतीक फ़ील्ड जोड़ा है, जो फ़ील्ड प्रारूप के साथ मेल खाता है।exchange.GetTicker()फ़ंक्शन का प्रतीक पैरामीटर प्रारूप पूरी तरह से समान है. इस अद्यतन में ऑर्डर संरचना के Id फ़ील्ड में भी बदलाव किए गए हैं, जो कि नए ऑर्डर आईडी प्रारूप के साथ किस्म की जानकारी, मूल ऑर्डर जानकारी और संदर्भ दर्ज करता है।exchange.GetOrder()फ़ंक्शन में ऑर्डर आईडी का वर्णन, यहाँ और नहीं।

स्थिति संरचना

इस अद्यतन में स्थिति संरचनाओं के लिए प्रतीक क्षेत्र जोड़ा गया है, जो क्षेत्र के प्रारूप के साथ मेल खाता है।exchange.GetTicker()फ़ंक्शन का प्रतीक पैरामीटर प्रारूप पूरी तरह से एक जैसा है.

5. रीटेस्टिंग सिस्टम

यह उन्नयन उपयोगकर्ताओं की जरूरतों को पूरा करने के लिए किया गया है, पहले वास्तविक डिस्क संगतता के लिए, और रीसेट सिस्टम एक सप्ताह के भीतर अनुकूलन पूरा हो जाएगा। यदि व्यक्तिगत नीति कोड प्रभावित है, तो कृपया इस लेख के अनुसार परिवर्तन अनुकूलन करें।

पूरक अद्यतन

1, खाता संरचना नए फ़ील्ड इक्विटी, यूपीएनएल

फ्यूचर्स एक्सचेंज ऑब्जेक्ट के लिए सदस्य फ़ंक्शनGetAccountवापस आ गयाAccountसंरचना में फ़ील्ड का विस्तार किया गया है।

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

  • UPnL वर्तमान में सभी संपार्श्विक परिसंपत्ति मुद्राओं में रखे गए पदों के अवांछित लाभ और हानि, बहुत ही विशिष्ट वायदा एक्सचेंजों को छोड़कर, ज्यादातर इस क्षेत्र का समर्थन करते हैं।

2, सेट मार्जिन लेवल फ़ंक्शन के लिए प्रतीक पैरामीटर उन्नयन समर्थन

फ्यूचर्स एक्सचेंज ऑब्जेक्ट के सदस्य फ़ंक्शन सेटमार्जिन लेवल को अपग्रेड किया गया है, जिसमें पैरामीटर प्रतीक जोड़ा गया है।

परीक्षण उदाहरणः

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
    exchange.SetMarginLevel(10)
    
    // 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

अधिक

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

चांग लिओर/upload/asset/2ffc0f961149326b78aed.png क्या यह समस्या इस इंटरफ़ेस अपडेट के कारण है?

इक्नेम्यूस 希望exchange.Buy函数能增加开止损单的功能。。

नैनसेगसामने की पंक्ति का परिदृश्य

वा-emmnn_ठीक है

आविष्कारक मात्रा - छोटे सपनेठीक है, इसे यहाँ पर टेस्ट करिए. धन्यवाद आपका सवाल पूछने के लिए. इसे जल्द ही हल कर दिया जाएगा.

वा-emmnn_सही है, extMsg1, extMsg2 नहीं दिख रहा है.

आविष्कारक मात्रा - छोटे सपनेनमस्कार, ऑर्डर आईडी यह एक अपरिहार्य परिवर्तन है, क्योंकि सीधे ऑर्डर करने के लिए किस्मों को निर्दिष्ट करने के लिए अपग्रेड किया गया है, ऑर्डर आईडी में किस्म की जानकारी शामिल होनी चाहिए, अन्यथा यह निर्धारित नहीं किया जा सकता है कि यह ऑर्डर किस किस्म का है, और रद्द करने के समय कॉल नहीं किया जा सकता है ((क्योंकि अधिकांश एक्सचेंजों को रद्द करने के लिए किस्मों को निर्दिष्ट करने की आवश्यकता होती है और आईडी निर्दिष्ट करें) । आप जो कहते हैं कि आपके आदेश के बाद की जानकारी दिखाई नहीं दे रही है, इसका मतलब हैः exchange.Buy ((price, amount, extMsg1, extMsg2) कॉल पर, extMsg1, extMsg2 लॉग में दिखाई नहीं दे रहा है?

आविष्कारक मात्रा - छोटे सपनेनमस्ते, आप वर्तमान एक्सचेंज सेटिंग्स, ट्रेडिंग जोड़े, अनुबंध कोड सेटिंग्स भेज सकते हैं।

आविष्कारक मात्राकृपया परीक्षण कोड और कॉन्फ़िगरेशन विवरण को कार्यपत्र पर भेजें, इंजीनियर आपको पहले समय में जवाब देंगे।

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

आविष्कारक मात्रा - छोटे सपनेधन्यवाद समर्थन के लिए, यदि कोई समस्या है, तो आप आवेदन पत्र भेज सकते हैं या टिप्पणी कर सकते हैं।