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

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

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

[TOC]

img

प्रस्तावना

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

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

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

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().......................................................................................................................................................................................................

ध्यान दें कि दो फ़ंक्शन नामों में केवल एक अंत वाला s होता है, क्योंकि GetPositions अधिक अर्थशास्त्रीय रूप से संगत है, इसलिए बाद के सभी के लिए GetPositions का उपयोग करने की सिफारिश की जाती है।

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

  • exchange.GetPositions ((() जब कोई पैरामीटर नहीं भेजा जाता है, तो वर्तमान के अनुसारसौदा सही / अनुबंध कोडकी सेटिंग, वर्तमान आयाम के सभी किस्मों के लिए भंडारण डेटा का अनुरोध करता है.

  • exchange.GetPositions ((ETH_USDT.swap बटन) जब किसी विशेष किस्म की जानकारी (ETH_USDT.swap के रूप में FMZ प्लेटफॉर्म द्वारा परिभाषित किया गया है) निर्दिष्ट की जाती है, तो उस विशेष किस्म के लिए स्टॉक डेटा का अनुरोध किया जाता है। उदाहरण के लिएःBTC_USD.swapETH_USDT.swapETH_USDT.quarterऔर इस तरह। BTC_USD.swap: बीटीसी के लिए मुद्रा प्रतिस्थापन अनुबंध। ETH_USDT.swap: ईटीएच के यू-बिट स्थायी अनुबंध। ETH_USDC.swap:ईटीएच के लिए यूएसडीसी आधारित स्थायी अनुबंध. (USDT के अलावा, एक अलग उद्धरण मुद्रा भी निर्दिष्ट की जा सकती है, आगे नहीं) ETH_USDT.quarter: ईटीएच का यू-बिट तिमाही विनिमय अनुपात लगभग है। BTC_USD.BTC-USD-201226-24250-C: BTC के लिए मुद्रा स्थान विकल्प अनुबंध.

  • exchange.GetPositions ((USDT.swap बटन) निर्दिष्ट आयाम सीमा के आधार पर, सभी किस्मों के लिए भंडारण डेटा का अनुरोध करें। USDT.swap: यू-बिट स्थायी अनुबंध का दायरा। USDT.futures: यू-बिट विनिमय दर अनुमानित सीमा। USDC.swap:USDC पर स्थायी अनुबंध का दायरा. (USDT के अलावा, अलग-अलग उद्धरण मुद्राएं भी निर्दिष्ट की जा सकती हैं, आगे नहीं) USDC.futures:USDDC स्थानिक विनिमय दर अनुमानित सीमाएँ. USD.swap: मुद्रा प्रतिस्थापन अनुबंध का दायरा। USD.futures: मुद्रा विनिमय दर की अनुमानित सीमा। USDT.option: यू-बिट विकल्प अनुबंध का दायरा। USD.option: मुद्रा विकल्प अनुबंध का दायरा।

    कुछ विशेष एक्सचेंजों के लिए अनुबंध आयामों का विभाजनः USDT.futures_combo:Futures_Deribit एक्सचेंज के लिए अंतर पोर्टफोलियो अनुबंध। USD.futures_ff:Futures_Kraken एक्सचेंज का मिश्रित प्रतिभूति लेनदेन अनुपात लगभग है। USD.swap_pf:Futures_Kraken एक्सचेंज का मिश्रित प्रतिभूति स्थायी अनुबंध।

    एक्सचेंज एपीआई इंटरफेस द्वारा समर्थित नहीं किए गए आयामों के लिए, कॉल करने पर एक त्रुटि लौटाई जाएगी।

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

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

img

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

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

exchange.GetFundings函数

नया GetFundings फ़ंक्शन फ्यूचर्स एक्सचेंजों पर स्थायी अनुबंधों के लिए पूंजीगत दर प्राप्त करता है। फ़ंक्शन में एक पैरामीटर प्रतीक है। फ़ंक्शन एक फंडिंग संरचना सरणी लौटाता है।

  • प्रतीक पैरामीटर निर्दिष्ट करेंः निर्दिष्ट किस्म के लिए धन की दर सूचना संरचना पैरामीटर (फंडिंग पैरामीटर) लौटाता है। प्रतीक पैरामीटर एक सीमा सेट कर सकता है, जैसे कि GetOrders/GetPositions फ़ंक्शन के लिए प्रतीक पैरामीटर।
  • कोई प्रतीक पैरामीटर निर्दिष्ट नहीं किया गयाः वर्तमान लेनदेन जोड़े के अनुसार, अनुबंध कोड के आयाम के अनुसार वर्तमान आयाम में सभी किस्मों का डेटा लौटाता है, जैसे कि GetOrders/GetPositions फ़ंक्शन।
  • यदि एक्सचेंजों को विशिष्ट किस्मों को निर्दिष्ट करना होगा, तो प्रतीक पैरामीटर, अर्थात विशिष्ट किस्मों के कोड को पारित करना होगा, जैसेःBTC_USDT.swap⇒ कोई पैरामीटर नहीं भेजा गया या प्रवेश सीमा फ़ंक्शन में त्रुटि होगी symbol पैरामीटर समर्थित नहीं है.

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 बटन) या exchange.GetOrders (BTC_USDT बटन) एक्सचेंज.गेटऑर्डर्स के लिए, BTC के USDT स्थायी अनुबंधों के लिए सभी अधूरे आदेशों के लिए पूछताछ करें। एक्सचेंज.गेटऑर्डर्स के लिए, सभी अधूरे ऑर्डर (पेंडिंग ऑर्डर) की जांच करें।
  • केवल फ्यूचर्स एक्सचेंजों के लिए समर्थन exchange.GetOrders ((USDT.swap) सभी किस्मों के लिए अनुरोध किए गए लंबित ऑर्डर (पेंडिंग सूचियों) के लिए आयाम सीमा निर्दिष्ट करें आयाम विभाजन का दायरा GetPositions फ़ंक्शन के दायरे से मेल खाता है. उदाहरण के लिएः exchange.GetOrders ((USDT.swap) U के लिए स्थायी अनुबंध के दायरे में सभी किस्मों के लिए लंबित आदेशों का अनुरोध करता है।

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

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) +  "`")
}
  • जब कोई पैरामीटर नहीं भेजा जाता है, तो वर्तमान ट्रेडिंग जोड़ी (BTC_USDT), कॉन्ट्रैक्ट कोड (swap) के आयाम के दायरे में सभी किस्मों के अधूरे ऑर्डर (पेंडिंग ऑर्डर) का अनुरोध किया जाता है।
  • पैरामीटर निर्दिष्ट करेंETH_USDT.swapपैरामीटर में, ईटीएच के लिए USDT के लिए अनुरोधित स्थायी अनुबंध के लिए अधूरे ऑर्डर ("पेंडिंग ऑर्डर") ।
  • स्ट्रिंग भेजें"USDT.swap"जब USDT ने अपने स्थायी अनुबंध के सभी अधूरे आदेशों का अनुरोध किया, तो USDT ने अपने स्थायी अनुबंध के सभी अधूरे आदेशों का अनुरोध किया।

exchange.GetPosition函数

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

exchange.IO函数

के लिएexchange.IO("api", ...)फ़ंक्शन कॉल मोड, सभी एक्सचेंज ऑब्जेक्ट्स के लिए अपग्रेड किए गए हैं, जो सीधे पूर्ण अनुरोध पते की सुविधा का समर्थन करते हैं।

उदाहरण के लिए, OKX के इंटरफ़ेस को कॉल करने के लिएः

GEThttps://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 पैरामीटर को मूल एक्सचेंज ऑर्डर आईडी से एक स्ट्रिंग प्रारूप में बदल दिया गया है जिसमें लेनदेन की विविधता शामिल है। 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

exchange.GetPosition函数

केवल फ्यूचर्स एक्सचेंज ऑब्जेक्ट इस फ़ंक्शन का समर्थन करते हैं, और स्टॉक में डेटा प्राप्त करने के लिए exchange.GetPosition ()) और नए exchange.GetPositions ()) नाम दिए गए हैं, दोनों व्यवहार पूरी तरह से समान हैं।

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

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

उदाहरण के लिए, वर्तमान ट्रेडिंग जोड़ी BTC_USDT है और अनुबंध कोड swap है। इस समय कॉल करेंः

exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")

यह फ़ंक्शन सभी मुद्राओं के लिए यू-बिट स्थायी अनुबंधों के लिए भंडारण डेटा का अनुरोध करता है।

exchange.GetOrders函数

1। नकदी एक्सचेंजों के लिएः

पुरानी परिभाषाः exchange.GetOrders () फ़ंक्शन, जब कोई पैरामीटर निर्दिष्ट नहीं किया जाता है, तो वर्तमान लेनदेन जोड़ी के सभी अधूरे आदेशों को प्राप्त करता है।

विनिमय.GetOrders () फ़ंक्शन, जब कोई पैरामीटर निर्दिष्ट नहीं किया जाता है, तो सभी अनंतिम ऑर्डर प्राप्त किए जाते हैं।

2. वायदा एक्सचेंजों के लिएः

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

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

उदाहरण के लिए, वर्तमान ट्रेडिंग जोड़ी BTC_USD है, और अनुबंध कोड एक चौथाई है। इस समय कॉल करेंः

exchange.GetOrders()   // 等价于调用 exchange.GetOrders("USD.futures")

यह फ़ंक्शन सभी मुद्राओं के लिए मुद्रा विनिमय दर के बारे में अधूरे ऑर्डर डेटा का अनुरोध करता है।

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

टिकर संरचना

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

आदेश संरचना

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

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

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

वित्त पोषण संरचना

GetFundings फ़ंक्शन एक Funding संरचनात्मक सरणी देता है।

{
    "Info": {...},               // 交易所资金费率接口原始应答数据
    "Symbol": "BTC_USDT.swap",   // FMZ平台定义的品种名称
    "Interval": 28800000,        // 8小时间隔,单位毫秒
    "Time": 1729728000000,       // 本期资金费率收取时间
    "Rate": 0.0001,              // 资金费率,即 0.01 %
}

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

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

इस प्लेटफॉर्म की रणनीति एपीआई इंटरफ़ेस उन्नयन के अनुसार, प्लेटफॉर्म के रीसेट सिस्टम में सभी एपीआई इंटरफेस को सिंक्रनाइज़ किया गया है।

  • अधिक एक्सचेंजों के लिए समर्थन।
  • एक्सचेंजों के लिए सभी प्रकार के पुनः परीक्षण डेटा का समर्थन करें।
  • यू-बिट, मुद्रा-बिट वितरण, स्थायी अनुबंध मिश्रित लेनदेन।
  • पुनरीक्षण अवधि के दौरान वस्तुओं के एक्सचेंजों ने स्वैप लेनदेन जोड़े का समर्थन किया।
  • पुनः परीक्षण प्रणाली ने GetTickers फ़ंक्शन, GetMarkets फ़ंक्शन और अन्य नए फ़ंक्शनों के लिए समर्थन जोड़ा है।

पूरक अद्यतन

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

3. GetMarkets फ़ंक्शन द्वारा लौटाए गए Market Structure में CtValCcy फ़ील्ड जोड़ा गया

  • फ़ील्डCtValCcyएक अनुबंध के मूल्य की इकाई दर्ज करें, एक अनुबंध के मूल्य की इकाई हो सकती हैः BTC, USD, ETH आदि।
  • फ़ील्डCtValएक्सचेंज पर एक अनुबंध के अनुरूप मूल्य को रिकॉर्ड करें, एक इकाई मेंCtValCcyफ़ील्ड में दर्ज की गई मुद्राएं। उदाहरण के लिएःCtValयह 0.01 है।CtValCcy"बीटीसी" के लिए, एक अनुबंध का मूल्य 0.01 बीटीसी है।

अधिक

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

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

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

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

वा-emmnn_ठीक है

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

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

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

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

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

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

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