রিসোর্স লোড হচ্ছে... লোডিং...

ইনভেন্টর কোয়ালিফাইড ট্রেডিং প্ল্যাটফর্ম এপিআই আপগ্রেডঃ কৌশলগত নকশা অভিজ্ঞতা উন্নত

লেখক:উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্ন, তৈরিঃ ২০২৪-০৬-২৮ ০৯:০৮ঃ২৯, আপডেটঃ ২০২৪-০৭-২৪ ১২ঃ০০ঃ৪০

[TOC]

img

উপস্থাপনা

উদ্ভাবক কুইন্টিফাইড ট্রেডিং প্ল্যাটফর্মটি 9 বছরের প্রযুক্তিগত পুনরাবৃত্তির পরে বহুবার পুনর্নির্মাণ করা হয়েছে, যদিও ব্যবহারকারী হিসাবে আমরা এটি লক্ষ্য করতে পারি নি। গত দুই বছরে, প্ল্যাটফর্মটি ব্যবহারকারীর অভিজ্ঞতার ক্ষেত্রে ব্যাপক অপ্টিমাইজেশন এবং আপগ্রেড করেছে, যার মধ্যে রয়েছে একটি সম্পূর্ণ আপগ্রেড ইউআই ইন্টারফেস, প্রচুর পরিমাণে ব্যবহৃত কুইন্টিফাইড ট্রেডিং সরঞ্জাম এবং আরও বেশি পুনরাবৃত্তি ডেটা সমর্থন যুক্ত করা।

নীতির নকশা সহজতর করার জন্য, লেনদেনের যুক্তি আরও স্পষ্ট এবং নতুনদের জন্য আরও সহজ করার জন্য, প্ল্যাটফর্মটি নীতির জন্য ব্যবহৃত এপিআই ইন্টারফেসটি আপগ্রেড করেছে। সর্বশেষতম সংস্করণটি ব্যবহার করে হোস্টগুলি এই নতুন বৈশিষ্ট্যগুলি সক্ষম করতে পারে। প্ল্যাটফর্মটি পুরানো ইন্টারফেসগুলির সাথে সর্বাধিক সামঞ্জস্যপূর্ণ কলগুলি বজায় রাখে। এপিআই ইন্টারফেসগুলির নতুন বৈশিষ্ট্য সম্পর্কিত তথ্যগুলি উদ্ভাবকদের দ্বারা পরিমাণযুক্ত লেনদেনের প্ল্যাটফর্মের এপিআই ডকুমেন্টেশনে সিঙ্ক আপডেট করা হয়েছেঃ

অনুবাদঃhttps://www.fmz.com/syntax-guideব্যবহারকারী নির্দেশিকাঃhttps://www.fmz.com/user-guide

তাহলে চলুন এই পোস্টের মাধ্যমে জেনে নেওয়া যাক কোন কোন ইন্টারফেস আপগ্রেড আপডেট আছে এবং কোন কোন পরিবর্তন পুরনো পলিসি ব্যবহার করার সময় বর্তমান এপিআই এর সাথে সামঞ্জস্যপূর্ণ হতে হবে।

১। নতুন এপিআই ইন্টারফেস

新增exchange.GetTickers函数

এই সমষ্টিগত মার্কেট ইন্টারফেসটি কৌশলগুলিকে আরও সহজভাবে বিকাশ করতে এবং চাকা পুনরাবৃত্তি এড়াতে অপরিহার্য। উদ্ভাবকরা পরিমাণগত ট্রেডিং প্ল্যাটফর্মগুলিকে এক্সচেঞ্জের মতো এপিআই প্যাকেজ করে।

যদি এক্সচেঞ্জের কাছে এই ইন্টারফেসটি না থাকে (ব্যক্তিগত এক্সচেঞ্জ), তাহলে কল করুনexchange.GetTickers()এই সময় ভুল রিপোর্ট করা হয়ঃ সমর্থন না করা।

এই ফাংশনটি কোন প্যারামিটার ছাড়াই এক্সচেঞ্জকে বাজারের ইন্টারফেসের সমস্ত জাতের রিয়েল-টাইম বাজারের ডেটা ফিরিয়ে দেয়। এটি সহজভাবে বোঝা যায়ঃ

exchange.GetTickers()ফাংশনটি হল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

新增exchange.CreateOrder函数

নতুন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)
}

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()│এখনও GetPosition ফাংশনকে সামঞ্জস্যপূর্ণ/উন্নত করে।

exchange.GetPositions()ফাংশনগুলিকে তিনটি উপায়ে কল করা যায়ঃ

  • exchange.GetPositions ((() যখন কোন প্যারামিটার পাঠানো হয় না, তখন বর্তমান লেনদেনের জোড়া/চুক্তি কোড সেটিং অনুসারে স্টক ডেটা অনুরোধ করা হয়।
  • exchange.GetPositions ((ETH_USDT.swap ট্যাব) যখন নির্দিষ্ট জাতের তথ্য (ETH_USDT.swap এই ফর্ম্যাটটি FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত করা হয়) নির্দিষ্ট জাতের জন্য স্টক ডেটা অনুরোধ করা হয়।
  • exchange.GetPositions (("") এক্সচেঞ্জের হোল্ডিং ইন্টারফেসের বর্তমান মাত্রার জন্য সমস্ত হোল্ডিং ডেটা অনুরোধ করুন.

OKX ফিউচার সিমুলেটর ব্যবহার করে পরিবেশ পরীক্ষাঃ

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 এর U-বিট স্থায়ী চুক্তির হোল্ডিং ডেটা পেতে পারে।

img

যখন প্রবেশexchange.GetPositions()ফাংশনের প্যারামিটার হল একটি ফাঁকা স্ট্রিং""ইউটিউবের সকল চুক্তির হিসাব-নিকাশের তথ্য পাওয়া সহজ।

২। এপিআই ইন্টারফেস আপগ্রেড

升级exchange.GetTicker函数

ফাংশনexchange.GetTicker()এই আপগ্রেডটি মূলত একটি প্রতীক প্যারামিটার যুক্ত করেছে; যা এই ফাংশনটিকে বর্তমান লেনদেনের জোড়া থেকে বিচ্ছিন্ন করতে দেয়; চুক্তি কোডটি প্যারামিটার দ্বারা নির্দিষ্ট জাতের তথ্য অনুসারে সরাসরি বাজার তথ্যের জন্য অনুরোধ করে; কোড লেখার প্রক্রিয়াটিকে সরল করে তোলে; তবে এখনও অপ্রচলিত কলিংয়ের সাথে সামঞ্জস্যপূর্ণ, পুরানো প্ল্যাটফর্মের পুরানো কৌশলগুলির সাথে সর্বাধিক সামঞ্জস্যপূর্ণ।

প্যারামিটারsymbolএক্সচেঞ্জের জন্যexchangeএটি বিভিন্ন ফরম্যাটে উপলব্ধঃ

  • অবিলম্বে বিনিময় বস্তু ফর্ম্যাটঃAAA_BBBএএএ বেস মুদ্রা, বিবিবি কোট মুদ্রা এবং মুদ্রা নাম বড় আকারে লেখা। উদাহরণস্বরূপঃ বিটিসি_ইউএসডিটি।
  • ফিউচার এক্সচেঞ্জের বস্তু ফর্ম্যাটঃAAA_BBB.XXXAAA হল বেস মুদ্রা, BBB হল কোট মুদ্রা, এবং XXX হল চুক্তির কোড, যেমন স্থায়ী চুক্তির বিনিময়। মুদ্রার নামগুলি বড় আকারে লেখা হয় এবং চুক্তির কোডগুলি ছোট আকারে লেখা হয়। উদাহরণস্বরূপঃ BTC_USDT.swap, বিটিসির ইউ বিট স্থায়ী চুক্তি।

বাংলাদেশের বিভিন্ন দেশে, বিশেষ করে বাংলাদেশে, কমিউনিটি ট্রাভেল সার্ভিস চালু করা হয়েছে।

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()ফাংশনটি symbol প্যারামিটার যোগ করেছে। গভীরতার তথ্য অনুরোধ করার সময় সরাসরি জাতটি নির্দিষ্ট করা সম্ভব।

বাংলাদেশের বিভিন্ন দেশে, বিশেষ করে বাংলাদেশে, কমিউনিটি ট্রাভেল সার্ভিস চালু করা হয়েছে।

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-রেখা পিরিয়ড নির্দিষ্ট করার জন্য মূল period প্যারামিটারটি বজায় রেখেছে, এবং একটি limit প্যারামিটার যুক্ত করেছে যা অনুরোধের সময়কালের জন্য পছন্দসই K-রেখা দৈর্ঘ্য নির্দিষ্ট করতে ব্যবহৃত হয়। এটি পুরানো সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ।

exchange.GetRecords()ফাংশন কল করার পদ্ধতিঃ

  • exchange.GetRecords ((() কোন প্যারামিটার নির্দিষ্ট না করে বর্তমান লেনদেনের জোড়া/চুক্তি কোড সংশ্লিষ্ট জাতের জন্য অনুরোধ করা হলে, K-লাইন চক্র হল কৌশল পুনরাবৃত্তি ইন্টারফেস বা বাস্তব সময় সেট করা ডিফল্ট K-লাইন চক্র।
  • exchange.GetRecords ((60 * 15) যখন শুধুমাত্র K-line cycle parameter নির্দিষ্ট করা হয়, তখন বর্তমান লেনদেন জোড়া/কন্ট্রাক্ট কোড সংশ্লিষ্ট জাতের K-line data অনুরোধ করা হয়।
  • exchange.GetRecords ((BTC_USDT.swap)) কেবলমাত্র জাতের তথ্য নির্দিষ্ট করার সময়, জাতের জন্য অনুরোধ করা K-line ডেটা, K-line cycle হল কৌশল পুনরুদ্ধার ইন্টারফেস বা বাস্তব ডিস্কের সময় সেট করা ডিফল্ট K-line cycle।
  • exchange.GetRecords ((BTC_USDT.swap ট্যাব, ৬০ * ৬০) প্রজাতির তথ্য নির্দিষ্ট করুন, নির্দিষ্ট কে-লাইন চক্রের জন্য কে-লাইন ডেটা অনুরোধ করুন।
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) প্রজাতির তথ্য নির্দিষ্ট করুন, নির্দিষ্ট কে-লাইন চক্র নির্দিষ্ট করুন, নিয়মিতভাবে প্রত্যাশিত কে-লাইন দৈর্ঘ্যের জন্য কে-লাইন ডেটা অনুরোধ করুন। মনে রাখবেন যে যখন limit প্যারামিটারটি এক্সচেঞ্জের একক অনুরোধের সর্বাধিক দৈর্ঘ্য অতিক্রম করে, তখন একটি page split request (অর্থাৎ এক্সচেঞ্জের K-line interface কে একাধিকবার কল করা) তৈরি হয়।

বাংলাদেশের বিভিন্ন দেশে, বিশেষ করে বাংলাদেশে, কমিউনিটি ট্রাভেল সার্ভিস চালু করা হয়েছে।

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 (("") এক্সচেঞ্জের বর্তমান মাত্রাভিত্তিক বিভাগে সমস্ত অপূর্ণ অর্ডার অনুসন্ধান করুন (এক্সচেঞ্জের এপিআই ইন্টারফেসের ভিত্তিতে মাত্রাভিত্তিক বিভাগ) ।

OKX ফিউচার সিমুলেটর ব্যবহার করে পরিবেশ পরীক্ষাঃ

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 লেনদেনের জোড়া, সমস্ত অসম্পূর্ণ pending lists swap perpetual contracts এর জন্য অনুরোধ করা হয়।

img

প্যারামিটার উল্লেখ করুনETH_USDT.swapপ্যারামিটারটি যখন অনুরোধ করে তখন ETH_USDT ট্রেডিং জোড়ার জন্য সমস্ত অসমাপ্ত প্যাকেজিংয়ের জন্য স্থায়ী চুক্তি।

img

শূন্য স্ট্রিং প্রেরণ করুন""ইউএসডিটি-র সকল স্থানীয় চুক্তির জন্য সমস্ত অসম্পূর্ণ তালিকাগুলির জন্য অনুরোধ করা হয়।

升级exchange.GetPosition函数

এটি এখনও পুরানো সঞ্চয়ী সংগ্রহ ফাংশন নামকরণের সাথে সামঞ্জস্যপূর্ণ, এবং একইভাবে একটি প্রতীক প্যারামিটার যুক্ত করেছে যা নির্দিষ্ট অনুরোধের জন্য সঞ্চয়ী ডেটার বিভিন্ন ধরণের তথ্য নির্দিষ্ট করতে পারে। ফাংশন ব্যবহার এবংexchange.GetPositions()এই ছবিটি একটি ভিডিও।

升级exchange.IO函数

জন্যexchange.IO("api", ...)ফাংশন কলিং পদ্ধতি, সমস্ত এক্সচেঞ্জ অবজেক্টের জন্য আপগ্রেড করা হয়েছে যা সরাসরি সম্পূর্ণ অনুরোধ ঠিকানা ফাংশন সমর্থন করে। উদাহরণস্বরূপ, OKX এর ইন্টারফেসটি কল করতে চাইলেঃ

// GEThttps://www.okx.com/api/v5/account/max-withdrawal ccy: বিটিসি

সরাসরি ডাটাবেস ঠিকানা লিখতে সহায়তা করেhttps://www.okx.comআপনি যদি আপনার আইও ফাংশনটি কল করতে চান তবে আপনাকে অবশ্যই এটি করতে হবে।

OKX ফিউচার সিমুলেটর ব্যবহার করে পরিবেশ পরীক্ষাঃ

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

    return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

img

৩। এপিআই ইন্টারফেসের প্রভাব

影响exchange.GetOrder函数

এই আপগ্রেডটি মূলত প্রভাবিত করেছে।exchange.GetOrder(id)ফাংশনের পরামিতিidআইডি প্যারামিটারটি মূল এক্সচেঞ্জ অর্ডার আইডি থেকে একটি স্ট্রিং ফর্ম্যাটে পরিবর্তিত হয়েছে যা লেনদেনের বৈচিত্র্য ধারণ করে। এফএমজেড প্ল্যাটফর্মে সমস্ত প্যাকেজড অর্ডার আইডি এই ফর্ম্যাটে রয়েছে।

উদাহরণস্বরূপঃ

  • এক্সচেঞ্জ অর্ডারে সংজ্ঞায়িত এক্সচেঞ্জের প্রাথমিক অর্ডারের আইডি হলঃ123456এই আপগ্রেডের আগে, যদি GetOrder ফাংশনটি কল করা হয়, তাহলে ইনপুট করা অর্ডার ID হল123456
  • এক্সচেঞ্জ অর্ডারে সংজ্ঞায়িত এক্সচেঞ্জের নামকরণের পণ্য কোডঃBTC-USDT❖ মনে রাখবেন যে এখানে এক্সচেঞ্জের নামকরণ করা ট্রেডিং জাতের কোডগুলি উল্লেখ করা হয়েছে, এটি এফএমজেড প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত ট্রেডিং জোড়া নয়।

এই আপগ্রেডের পরে,exchange.GetOrder(id)ফাংশনটি যে প্যারামিটার id পাঠাতে চায় তার বিন্যাসটি এইভাবে সামঞ্জস্য করা হয়ঃBTC-USDT,123456

এই ছবিটি কেন ডিজাইন করা হয়েছে তা ব্যাখ্যা করার আগেঃ যেহেতু CreateOrder ফাংশনটি উন্নত করা হয়েছে, তাই এটি সরাসরি অর্ডারের ধরন নির্দিষ্ট করে (অর্ডারের ধরন এবং বর্তমান সেট করা লেনদেনের জোড়া, চুক্তি কোডগুলি ভিন্ন হতে পারে), যদি প্রত্যাবর্তিত অর্ডার আইডিতে জাতের তথ্য না থাকে তবে এই অর্ডার আইডিটি ব্যবহার করা যাবে না। কারণ নির্দিষ্ট চার্টে অর্ডারটি কী ধরণের (চুক্তি) তা জানা যায় না। বেশিরভাগ এক্সচেঞ্জের চার্টে, প্রত্যাহারের জন্য একটি প্যারামিটার নির্দিষ্ট করা প্রয়োজন যা জাতের কোডটি বর্ণনা করে।

কিভাবে এই প্রভাবকে সামঞ্জস্য করা যায়ঃ যদি exchange.IO ফাংশনটি সরাসরি exchange.IO ইন্টারফেসে কল করে, তবে এটি সাধারণত exchange.IO এর প্রারম্ভিক প্রতীক (বৈচিত্র্য কোড) এবং প্রারম্ভিক অর্ডার আইডি প্রদান করে। সুতরাং এগুলিকে ইংরেজি কমা দিয়ে একত্রিত করা হয় যা FMZ প্ল্যাটফর্মের সংজ্ঞা অনুযায়ী অর্ডার আইডি। একইভাবে, যদি FMZ প্ল্যাটফর্মের প্যাকেজযুক্ত অর্ডার ইন্টারফেসটি ব্যবহার করা হয় তবে অর্ডারটি ডাউনলোড করা হয়, কারণ অর্ডার আইডি এর শুরু অংশটি লেনদেনের জাতের কোড, যদি অর্ডারের প্রাথমিক আইডি ব্যবহার করা হয় তবে কেবল জাতের কোড এবং কমা সরিয়ে ফেলা দরকার।

影响exchange.CancelOrder函数

এই আপগ্রেডটিexchange.CancelOrder()ফাংশন প্রভাব এবংexchange.GetOrder()ফাংশনটি একই।

影响exchange.Buy函数

এই আপগ্রেডটিexchange.Buy()ফাংশন প্রভাব এবংexchange.GetOrder()ফাংশনটি একই।exchange.Buy()ফাংশনটি নতুন কাঠামোর জন্য অর্ডার আইডি ফেরত দেয়, যেমন OKX এক্সচেঞ্জের ফিউচার অর্ডার দেওয়ার সময় ফিরে আসা আইডিঃLTC-USDT-SWAP,1578360858053058560

影响exchange.Sell函数

এই আপগ্রেডটিexchange.Sell()ফাংশন প্রভাব এবংexchange.GetOrder()ফাংশনটি একই।exchange.Sell()ফাংশনটি নতুন কাঠামোর জন্য অর্ডার আইডি ফেরত দেয়, যেমন OKX এক্সচেঞ্জের ফিউচার অর্ডার দেওয়ার সময় ফিরে আসা আইডিঃETH-USDT-SWAP,1578360832820125696

৪। কাঠামোগত পরিবর্তন

টিকার গঠন

এই আপডেটে টিকার কাঠামোর জন্য একটি প্রতীক ক্ষেত্র যুক্ত করা হয়েছে, যা বর্তমান টিকার কাঠামোর জন্য বাজারের তথ্য রেকর্ড করে। এই ক্ষেত্রের বিন্যাসexchange.GetTicker()ফাংশনের প্রতীক পরামিতি বিন্যাস সম্পূর্ণরূপে একমত।

অর্ডার কাঠামো

এই আপডেটটি অর্ডার স্ট্রাক্টরের জন্য একটি Symbol ক্ষেত্র যুক্ত করেছে, যা ক্ষেত্রের বিন্যাসেexchange.GetTicker()ফাংশনের প্রতীক পরামিতি বিন্যাস সম্পূর্ণরূপে একমত। এই আপডেটটি অর্ডার স্ট্রাক্টরের আইডি ক্ষেত্রটিও পরিবর্তন করেছে, যা নতুন অর্ডার আইডি ফর্ম্যাটে জাতের তথ্য, মূল অর্ডার তথ্য এবং রেফারেন্স রেকর্ড করে।exchange.GetOrder()ফাংশনে অর্ডার আইডি এর বিবরণ, এখানে আর আলোচনা করা হবে না।

অবস্থান গঠন

এই আপডেটটি পজিশন স্ট্রাক্টরের জন্য একটি Symbol ফিল্ড যুক্ত করেছে, যা ফিল্ডের বিন্যাসকেexchange.GetTicker()ফাংশনের প্রতীক পরামিতি বিন্যাস সম্পূর্ণরূপে একমত।

৫, রিট্রেসিং সিস্টেম

এই আপগ্রেডটি ব্যবহারকারীর চাহিদা মেটাতে, প্রথমে বাস্তব ডিস্কের সাথে সামঞ্জস্যপূর্ণ, এবং রিসেট সিস্টেমটি এক সপ্তাহের মধ্যে সামঞ্জস্যপূর্ণ হবে। যদি পৃথক নীতি কোডগুলি প্রভাবিত হয় তবে দয়া করে এই নিবন্ধের নির্দেশাবলী অনুসারে পরিবর্তনগুলি সামঞ্জস্য করুন।

অতিরিক্ত আপডেট

১, অ্যাকাউন্ট কাঠামো নতুন ক্ষেত্র ইক্যুইটি, ইউপিএনএল

ফিউচার এক্সচেঞ্জের অবজেক্টের জন্য সদস্য ফাংশনGetAccountফিরে আসাAccountএই কাঠামোটি একটি ক্ষেত্র সম্প্রসারণ করেছে।

  • ইক্যুইটি বর্তমান গ্যারান্টিযুক্ত সম্পদ মুদ্রার মোট অধিকার লাভ, খুব নির্দিষ্ট ফিউচার এক্সচেঞ্জগুলি ব্যতীত, বেশিরভাগই এই ক্ষেত্রটি সমর্থন করে। এটি মূলত রিয়েল-টাইম অ্যাকাউন্ট গ্যারান্টিযুক্ত মুদ্রার লাভ এবং ক্ষতির হিসাবের জন্য ব্যবহৃত হয়।

  • ইউপিএনএল বর্তমান গ্যারান্টিযুক্ত সম্পদ মুদ্রার ধারাবাহিকতার সমস্ত পজিশনের অকার্যকর লাভ এবং ক্ষতি, খুব স্বতন্ত্র ফিউচার এক্সচেঞ্জগুলি ব্যতীত, বেশিরভাগই এই ক্ষেত্রটিকে সমর্থন করে।

২, সেট মার্জিন লেভেল ফাংশন আপগ্রেড করুন symbol প্যারামিটার সমর্থন

ফিউচার এক্সচেঞ্জের অবজেক্টের সদস্য ফাংশন সেটমার্জিন লেভেল আপগ্রেড করা হয়েছে, এতে প্যারামিটার প্রতীক যুক্ত করা হয়েছে।

পরীক্ষামূলক উদাহরণঃ

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

আরো

ওয়া-এমএমএন_আমি বললাম, আমার নতুন বোটের কি হয়েছে, রিটার্ন আইডিতেও নামের সাথে লেনদেন রয়েছে, আমি অনেক সময় ধরে গবেষণা করেছি, এবং অর্ডার দেওয়ার পরে লগ ইন করা তথ্য এখন প্রদর্শিত হচ্ছে না, হোস্টের আপডেটের কারণে?

চ্যাং লিওলি/upload/asset/2ffc0f961149326b78aed.png এই সমস্যা কি ইন্টারফেস আপডেটের কারণে হয়েছে?

ইকনেমিউস 希望exchange.Buy函数能增加开止损单的功能。。

ন্যানসেগসামনের সারি

ওয়া-এমএমএন_ভাল.

উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নঠিক আছে, এখানে পরীক্ষা করে দেখুন। ধন্যবাদ আপনার প্রশ্নের জন্য। যত তাড়াতাড়ি সম্ভব এটি সমাধান করা হবে।

ওয়া-এমএমএন_ঠিক আছে, extMsg1, extMsg2 প্রদর্শিত হচ্ছে না।

উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নহ্যালো, অর্ডার আইডি এটি একটি বাধ্যতামূলক পরিবর্তন, কারণ সরাসরি বর্ণ নির্ধারণের জন্য অর্ডার আপগ্রেড করা হয়েছে, অর্ডার আইডিতে অবশ্যই বর্ণের তথ্য থাকতে হবে, অন্যথায় এই অর্ডারটি কোন জাতের তা নির্ধারণ করা যায় না এবং প্রত্যাহারের সময় কল করা যায় না ((যেহেতু বেশিরভাগ এক্সচেঞ্জের প্রত্যাহারের সময় বর্ণ নির্ধারণ এবং আইডি নির্দিষ্ট করা প্রয়োজন)) । আপনি যে ট্যাগটি উল্লেখ করেছেন তা প্রদর্শিত হচ্ছে না, অর্থাৎঃ exchange.Buy ((price, amount, extMsg1, extMsg2) কল করার সময়, extMsg1, extMsg2 লগগুলিতে প্রদর্শিত হচ্ছে না?

উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নহ্যালো, আপনি বর্তমান এক্সচেঞ্জ সেটিংস, ট্রেডিং জোড়া, চুক্তি কোড সেটিংস পাঠান।

উদ্ভাবক পরিমাণদয়া করে পরীক্ষার কোড এবং কনফিগারেশনের বিস্তারিত বিবরণ আমাদের ওয়ার্কফ্লো এ পাঠান এবং ইঞ্জিনিয়াররা আপনাকে প্রথমবারের মত উত্তর দেবেন।

উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নতবে, এ বিষয়ে কিছু গবেষণা করা হচ্ছে, যাতে দেখা যায় যে, এই এক্সচেঞ্জের শর্তাবলী ও মেশিনের মধ্যে কিছুটা পার্থক্য রয়েছে।

উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নধন্যবাদ সমর্থন, আপনি যদি কোন সমস্যা আছে, আপনি একটি ফর্ম বা মন্তব্য করতে পারেন।