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

एफएमजेड क्वांट एपीआई उन्नयन का विस्तृत विवरणः रणनीति डिजाइन अनुभव में सुधार

लेखक:FMZ~Lydia, बनाया गयाः 2024-07-05 09:44:08, अद्यतनः 2024-07-25 15:15:03

[TOC]

img

एफएमजेड क्वांट एपीआई उन्नयन का विस्तृत विवरणः रणनीति डिजाइन अनुभव में सुधार

प्रस्तावना

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

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

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

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

1. नया एपीआई इंटरफ़ेस

एक्सचेंज.GetTickers फ़ंक्शन जोड़ा गया

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

यदि एक्सचेंज में यह इंटरफेस नहीं है (व्यक्तिगत एक्सचेंज), तो कॉल करते समय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
}

img

एक्सचेंज.CreateOrder फ़ंक्शन जोड़ा गया

हाल ही में जोड़ा गया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)
}

img

इस तरह, केवल तीनexchange.CreateOrder()विभिन्न किस्मों और दिशाओं के तीन वायदा आदेशों को रखने के लिए फ़ंक्शन कॉल का उपयोग किया गया था।

एक्सचेंज.GetHistoryOrders फ़ंक्शन जोड़ा गया

हाल ही में जोड़ा गया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) +  "`")
}

img

एक्सचेंज.GetPositions फ़ंक्शन जोड़ा गया

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

..exchange.GetPositions()फ़ंक्शन के तीन कॉल रूप होते हैंः

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

img

जब पैरामीटर पारित किया गया थाexchange.GetPositions()function एक खाली स्ट्रिंग है , सभी U- आधारित अनुबंधों के स्थिति डेटा प्राप्त किया जा सकता है. यह सुविधाजनक नहीं है?

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

अद्यतन विनिमय.GetTicker फ़ंक्शन

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

पैरामीटरsymbolएक्सचेंज ऑब्जेक्ट के लिए स्पॉट/फ्यूचर्स के लिए अलग-अलग प्रारूप हैंexchange:

  • स्पॉट विनिमय वस्तु प्रारूप इस प्रकार हैःAAA_BBB, एएए बेस करेंसी यानी ट्रेडिंग करेंसी और बीबीबी कोट करेंसी यानी प्राइसिंग करेंसी का प्रतिनिधित्व करता है। करेंसी के नाम सभी बड़े अक्षरों में लिखे गए हैं। उदाहरण के लिएः BTC_USDT स्पॉट ट्रेडिंग जोड़ी।
  • फ्यूचर्स एक्सचेंज का उद्देश्य प्रारूप इस प्रकार हैःAAA_BBB.XXX, एएए बेस करेंसी, यानी ट्रेडिंग करेंसी का प्रतिनिधित्व करता है, बीबीबी कोट करेंसी, यानी मूल्य निर्धारण करेंसी का प्रतिनिधित्व करता है, और 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
}

img

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

अद्यतन विनिमय.GetDepth फ़ंक्शन

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

img

अद्यतन विनिमय.GetTrades फ़ंक्शन

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

img

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

अद्यतन विनिमय.GetRecords फ़ंक्शन

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

कॉल करने की विधिexchange.GetRecords()कार्य है:

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

img

अद्यतन विनिमय.GetOrders फ़ंक्शन

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

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

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

अद्यतन विनिमय.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 फ़ंक्शन को प्रभावित करता है

यह उन्नयन मुख्य रूप से पैरामीटर को प्रभावित करता है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.

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

टिकर संरचना

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

आदेश संरचना

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

पद संरचना

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

5. बैकटेस्टिंग प्रणाली

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

अतिरिक्त अद्यतन

1. खाता संरचना में नए क्षेत्र इक्विटी और यूपीएनएल

कृषि क्षेत्रAccountसंरचना द्वारा लौटायाGetAccountफ्यूचर्स एक्सचेंज ऑब्जेक्ट के सदस्य समारोह का विस्तार किया गया है।

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

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

2. SetMarginLevel फ़ंक्शन को प्रतीक पैरामीटर का समर्थन करने के लिए उन्नत किया गया

फ्यूचर्स एक्सचेंज ऑब्जेक्ट के सदस्य फ़ंक्शन 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)
}

अधिक