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

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

লেখক:এফএমজেড-লিডিয়া, তৈরিঃ 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

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

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

এক্সচেঞ্জ যোগ করা হয়েছে.GetTickers ফাংশন

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

যদি এক্সচেঞ্জের এই ইন্টারফেস না থাকে (ব্যক্তিগত এক্সচেঞ্জ), কল করার সময়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
}

img

এক্সচেঞ্জ যোগ করা হয়েছে.CreateOrder ফাংশন

নতুন যোগ করাexchange.CreateOrder()ফাংশন এই আপগ্রেড ফোকাস।exchange.CreateOrder()অর্ডার টাইপ এবং দিক ফাংশন পরামিতি সরাসরি নির্দিষ্ট করা হয়. এই ভাবে, এটি বর্তমান ট্রেডিং জোড়া, চুক্তি কোড, ট্রেডিং দিক এবং সিস্টেমের অন্যান্য সেটিংস উপর নির্ভর করে না।

মাল্টি-প্রজাতির ট্রেডিং অর্ডার প্লেসমেন্টের দৃশ্যকল্প এবং সমান্তরাল দৃশ্যকল্পে, নকশা জটিলতা ব্যাপকভাবে হ্রাস পায়।exchange.CreateOrder()ফাংশন হলsymbol, side, price, amount.

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()ফাংশন কলগুলি বিভিন্ন জাতের এবং দিকের তিনটি ফিউচার অর্ডার স্থাপন করতে ব্যবহৃত হয়েছিল।

এক্সচেঞ্জ.GetHistoryOrders ফাংশন যোগ করা হয়েছে

নতুন যোগ করাexchange.GetHistoryOrders()ফাংশন একটি নির্দিষ্ট বৈচিত্র্যের ঐতিহাসিক লেনদেন আদেশ পেতে ব্যবহৃত হয়। ফাংশন এছাড়াও বিনিময় ইন্টারফেসের সমর্থন প্রয়োজন।

ঐতিহাসিক অর্ডার অনুসন্ধানের জন্য, বিভিন্ন এক্সচেঞ্জ দ্বারা বাস্তবায়িত ইন্টারফেসগুলি ব্যাপকভাবে পরিবর্তিত হয়ঃ

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

বিস্তারিত ফাংশন বিবরণ এখানে পুনরাবৃত্তি করা হয় না, আপনি এপিআই ডকুমেন্টেশনে সিনট্যাক্স ম্যানুয়াল পড়ুন পারেনঃ

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 ((("") এক্সচেঞ্জ পজিশন ইন্টারফেসের কাছে পজিশন ডেটার সমস্ত বর্তমান মাত্রা পাওয়ার জন্য অনুরোধ করুন (এক্সচেঞ্জ ইন্টারফেসের পণ্য মাত্রার ভিত্তিতে বিভক্ত) 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()ফাংশন একটি ফাঁকা স্ট্রিং , সব 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 main() {
    exchange.SetCurrency("LTC_USD")
    exchange.SetContractType("swap")

    Log(exchange.GetDepth())
    Log(exchange.GetDepth("ETH_USDT.quarter"))
    Log(exchange.GetDepth("BTC_USD.swap"))
}

img

এক্সচেঞ্জ.গেটট্রেডস ফাংশন আপডেট করুন

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

img

এই আপগ্রেড এছাড়াও চিহ্ন প্যারামিটার দ্বারা নির্দিষ্ট সঙ্গে সামঞ্জস্যপূর্ণexchange.Go()প্ল্যাটফর্ম এপিআই ইন্টারফেস একই সাথে কল করার সময় ফাংশন।

আপডেট এক্সচেঞ্জ.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) পণ্যের তথ্য এবং নির্দিষ্ট কে-লাইন সময়সূচী নির্দিষ্ট করুন যাতে কে-লাইন ডেটা অনুরোধ করা যায়।
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) পণ্যের তথ্য নির্দিষ্ট করুন, নির্দিষ্ট কে-লাইন সময় নির্দিষ্ট করুন এবং কে-লাইন ডেটা অনুরোধ করার জন্য প্রত্যাশিত কে-লাইন দৈর্ঘ্য নির্দিষ্ট করুন। মনে রাখবেন যে যখন সীমা পরামিতি এক্সচেঞ্জ থেকে একটি একক অনুরোধের সর্বাধিক দৈর্ঘ্য অতিক্রম করে, তখন একটি পেজিং অনুরোধ তৈরি করা হবে (যেমন এক্সচেঞ্জ কে-লাইন ইন্টারফেসে একাধিক কল) ।

বিন্যান্স ফিউচার লাইভ পরিবেশ ব্যবহার করে পরীক্ষা করা হয়েছেঃ

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 ফাংশন এছাড়াও যোগ করেsymbolপ্যারামিটার, যা বর্তমান অসম্পূর্ণ অর্ডারগুলির (অপেন্ডিং অর্ডার) সরাসরি অনুসন্ধান করার জন্য নির্দিষ্ট করতে পারে; এটি সমস্ত অপেক্ষাকৃত অর্ডার (প্রকার নির্বিশেষে) অনুসন্ধান করতে সহায়তা করে; এবং মূল কলিং পদ্ধতির সাথে সামঞ্জস্যপূর্ণ।

দ্যexchange.GetOrders()ফাংশন নিম্নলিখিত উপায়ে কল করা যেতে পারেঃ

  • বিনিময়.GetOrders ((() বর্তমান ট্রেডিং জোড়া/কন্ট্রাক্ট কোডের জন্য সমস্ত অসম্পূর্ণ অর্ডার অনুসন্ধান করুন।
  • exchange.GetOrders ((BTC_USDT.swap) বিটিসির ইউএসডিটি-মার্জিনযুক্ত চিরস্থায়ী চুক্তির জন্য সমস্ত অসমাপ্ত অর্ডার অনুসন্ধান করুন।
  • বিনিময়.GetOrders (("") এক্সচেঞ্জের বর্তমান মাত্রায় (এক্সচেঞ্জ এপিআই ইন্টারফেস মাত্রার উপর ভিত্তি করে বিভক্ত) সমস্ত অসম্পূর্ণ অর্ডার অনুসন্ধান করুন।

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

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-মার্জিনযুক্ত সমস্ত চুক্তির সমস্ত অসম্পূর্ণ অর্ডার অনুরোধ করা হয়।

এক্সচেঞ্জ.গেটপোজিশন ফাংশন আপডেট করুন

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

আপডেটexchange.IOফাংশন

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

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

বেস ঠিকানায় সরাসরি লেখা সমর্থন করে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")
}

img

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

এক্সচেঞ্জ.GetOrder ফাংশন প্রভাবিত করে

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

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

  • এক্সচেঞ্জ অর্ডারে সংজ্ঞায়িত এক্সচেঞ্জের মূল অর্ডার আইডি হলঃ123456এই আপগ্রেড করার আগে, যদি আপনি GetOrder ফাংশন কল করতে চান, অর্ডার আইডি পাস করা হয়123456.
  • এক্সচেঞ্জ অর্ডারে সংজ্ঞায়িত এক্সচেঞ্জের নামকরণকৃত পণ্যের কোডঃBTC-USDT. মনে রাখবেন যে এটি এক্সচেঞ্জ দ্বারা নামকরণ করা ট্রেডিং পণ্য কোডকে বোঝায়, FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত ট্রেডিং জোড়া নয়।

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

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

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

এক্সচেঞ্জকে প্রভাবিত করে। অর্ডার বাতিল করুন ফাংশন

এই আপগ্রেডের প্রভাব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.

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

টিকার গঠন

এই আপডেটটি টিকার কাঠামোতে একটি প্রতীক ক্ষেত্র যোগ করে, যা বর্তমান টিকার কাঠামোর বাজার তথ্য রেকর্ড করে। এই ক্ষেত্রের বিন্যাস ঠিক একই চিহ্ন প্যারামিটার বিন্যাসexchange.GetTicker() function.

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

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

অবস্থান কাঠামো

এই আপডেট অবস্থান কাঠামোর একটি প্রতীক ক্ষেত্র যোগ করে. এই ক্ষেত্রের বিন্যাস ঠিক একইexchange.GetTicker() function.

৫. ব্যাকটেস্টিং সিস্টেম

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

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

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

জমির মাঠAccountগঠন দ্বারা ফিরেGetAccountফিউচার এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন প্রসারিত হয়েছে।

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

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

2. সেটমার্জিনলেভেল ফাংশনটি প্রতীক পরামিতি সমর্থন করতে আপগ্রেড করা হয়েছে

ফিউচার এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন 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)
}

আরো