4
ध्यान केंद्रित करना
1271
समर्थक

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

में बनाया: 2024-06-28 09:08:29, को अपडेट: 2024-11-01 10:08:12
comments   12
hits   2053

[TOC]

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

प्रस्तावना

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

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

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

1. नया API इंटरफ़ेस

एक्सचेंज.GetTickers फ़ंक्शन

बहु-विविधता रणनीतियों और पूर्ण बाजार स्थिति निगरानी रणनीतियों को डिजाइन करने के लिए। यह समेकित बाजार इंटरफेस रणनीतियों को विकसित करना आसान बनाने और पहिये का पुनःआविष्कार करने से बचने के लिए आवश्यक है। आविष्कारक का मात्रात्मक ट्रेडिंग प्लेटफॉर्म एक्सचेंजों के ऐसे 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
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

एक्सचेंज.क्रिएटऑर्डर फ़ंक्शन

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

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

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

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

इसमें केवल 3 बार समय लगाexchange.CreateOrder()फ़ंक्शन कॉल विभिन्न किस्मों और दिशाओं के तीन फ्यूचर ऑर्डर देता है।

एक्सचेंज.GetHistoryOrders फ़ंक्शन

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

ऐतिहासिक आदेशों की जानकारी प्राप्त करने के लिए, विभिन्न एक्सचेंजों द्वारा क्रियान्वित इंटरफेस बहुत भिन्न होते हैं:

  • कुछ पृष्ठांकित प्रश्नों का समर्थन करते हैं, जबकि अन्य नहीं करते हैं;
  • कुछ एक्सचेंजों में क्वेरी विंडो अवधि होती है, अर्थात, N दिनों से पुराने ऑर्डर की क्वेरी नहीं की जा सकती;
  • अधिकांश एक्सचेंज निर्दिष्ट समय पर क्वेरी करने का समर्थन करते हैं, लेकिन कुछ नहीं करते हैं;

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

विस्तृत फ़ंक्शन विवरण यहां दोहराया नहीं गया है, आप 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) +  "`")
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

एक्सचेंज.गेटपोसिशन्स फ़ंक्शन

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

ध्यान दें कि दोनों फ़ंक्शन नाम केवल अंतिम 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: 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) +  "`")
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

आने परexchange.GetPositions()फ़ंक्शन के पैरामीटर हैंETH_USDT.swapजब आप ETH U-आधारित सतत अनुबंध का उपयोग करते हैं, तो आप ETH U-आधारित सतत अनुबंध का स्थिति डेटा प्राप्त कर सकते हैं।

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

एक्सचेंज.गेटफंडिंग्स फ़ंक्शन

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

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

2. एपीआई इंटरफ़ेस अपग्रेड

एक्सचेंज.GetTicker फ़ंक्शन

बाजार कार्य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
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

किसी निर्दिष्ट प्रतीक के लिए बाज़ार डेटा के बैच का अनुरोध करना बहुत सरल हो गया है।

एक्सचेंज.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"))
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

एक्सचेंज.गेटट्रेड्स फ़ंक्शन

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

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

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

exchange.GetRecords फ़ंक्शन

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

exchange.GetRecords()फ़ंक्शन को कैसे कॉल करें:

  • exchange.GetRecords() यदि कोई पैरामीटर निर्दिष्ट नहीं है, तो वर्तमान ट्रेडिंग जोड़ी/अनुबंध कोड के अनुरूप उत्पाद का K-लाइन डेटा अनुरोधित है। K-लाइन अवधि रणनीति बैकटेस्टिंग इंटरफ़ेस या वास्तविक ट्रेडिंग में सेट की गई डिफ़ॉल्ट K-लाइन अवधि है।
  • 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-लाइन लंबाई निर्दिष्ट करें। ध्यान दें कि जब सीमा पैरामीटर एक्सचेंज से एकल अनुरोध की अधिकतम लंबाई से अधिक हो जाता है, तो एक पेजिंग अनुरोध उत्पन्न होगा (अर्थात एक्सचेंज 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)
}

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

एक्सचेंज.GetOrders फ़ंक्शन

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

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

  • exchange.GetOrders() वायदा एक्सचेंजों के लिए: जब कोई पैरामीटर पारित नहीं किया जाता है, तो वर्तमानट्रेडिंग जोड़े / अनुबंध कोडवर्तमान आयाम सीमा में सभी प्रतीकों के लिए सभी खुले ऑर्डर (लंबित ऑर्डर) का अनुरोध करें।
    स्पॉट एक्सचेंजों के लिए: जब कोई पैरामीटर पारित नहीं किया जाता है, तो सभी स्पॉट उत्पादों के सभी बकाया ऑर्डर (लंबित ऑर्डर) के लिए अनुरोध किया जाता है।
  • exchange.GetOrders(“BTC_USDT.swap”) या exchange.GetOrders(“BTC_USDT”) वायदा एक्सचेंजों के लिए: exchange.GetOrders(“BTC_USDT.swap”) BTC के USDT-मार्जिन वाले सतत अनुबंध के लिए सभी अपूर्ण ऑर्डर (लंबित ऑर्डर) की जानकारी प्राप्त करने के लिए। स्पॉट एक्सचेंजों के लिए: exchange.GetOrders(“BTC_USDT”), BTC_USDT स्पॉट ट्रेडिंग जोड़ी के लिए सभी अपूर्ण ऑर्डर (लंबित ऑर्डर) की क्वेरी करें।
  • केवल वायदा एक्सचेंजों के लिए समर्थित है exchange.GetOrders(“USDT.swap”) निर्दिष्ट आयाम सीमा में सभी किस्मों के अपूर्ण ऑर्डर (लंबित ऑर्डर) का अनुरोध करें आयाम विभाजन श्रेणी GetPositions फ़ंक्शन की श्रेणी के अनुरूप है। उदाहरण के लिए: exchange.GetOrders(“USDT.swap”) USDT-मार्जिन वाले सतत अनुबंध श्रेणी में सभी किस्मों के सभी अधूरे ऑर्डर (लंबित ऑर्डर) का अनुरोध करता है।

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

एक्सचेंज.गेटपोजिशन फ़ंक्शन

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

exchange.IO फ़ंक्शन

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

इन्वेंटर क्वांटिटेटिव ट्रेडिंग प्लेटफ़ॉर्म API अपग्रेड का विस्तृत विवरण: रणनीति डिज़ाइन अनुभव में सुधार

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

एक्सचेंज.GetOrder फ़ंक्शन

यह अपग्रेड मुख्य रूप से प्रभावित करता है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")

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

एक्सचेंज.GetOrders फ़ंक्शन

  1. स्पॉट एक्सचेंज के लिए:

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

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

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

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

समायोजन और संशोधन के बाद, नई परिभाषा है: एक्सचेंज.गेटऑर्डर्स() फ़ंक्शन। जब किसी पैरामीटर को निर्दिष्ट किए बिना कॉल कि