[TOC]
9 বছরের প্রযুক্তিগত পুনরাবৃত্তির পরে, এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মটি বহুবার পুনর্গঠিত হয়েছে, যদিও ব্যবহারকারী হিসাবে আমরা এটি লক্ষ্য করতে পারি নি। গত দুই বছরে, প্ল্যাটফর্মটি ইউজার অভিজ্ঞতার ক্ষেত্রে অনেকগুলি অপ্টিমাইজেশন এবং আপগ্রেড করেছে, যার মধ্যে ইউআই ইন্টারফেসের একটি বিস্তৃত আপগ্রেড, সাধারণভাবে ব্যবহৃত পরিমাণগত ট্রেডিং সরঞ্জামগুলির সমৃদ্ধি এবং আরও ব্যাকটেস্টিং ডেটা সমর্থন যুক্ত করা রয়েছে।
কৌশল নকশা আরও সুবিধাজনক, ট্রেডিং লজিক আরও পরিষ্কার এবং নতুনদের জন্য শুরু করা সহজ করার জন্য, প্ল্যাটফর্মটি কৌশল দ্বারা ব্যবহৃত এপিআই ইন্টারফেস আপগ্রেড করেছে। সর্বশেষতম সংস্করণ ব্যবহার করে ডকাররা এই নতুন বৈশিষ্ট্যগুলি সক্ষম করতে পারে। প্ল্যাটফর্মটি এখনও পুরানো ইন্টারফেস কলগুলির সাথে সর্বাধিক পরিমাণে সামঞ্জস্যপূর্ণ। এপিআই ইন্টারফেসটির নতুন বৈশিষ্ট্যগুলির তথ্য এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের এপিআই ডকুমেন্টেশনে আপডেট করা হয়েছেঃ
সিনট্যাক্স গাইডঃhttps://www.fmz.com/syntax-guideব্যবহারকারী নির্দেশিকাঃhttps://www.fmz.com/user-guide
সুতরাং আসুন দ্রুত দেখে নেওয়া যাক কোন ইন্টারফেসগুলি আপগ্রেড করা হয়েছে এবং বর্তমান এপিআইয়ের সাথে সামঞ্জস্যপূর্ণ করার জন্য পুরানো কৌশলগুলি ব্যবহার করার জন্য কী পরিবর্তন প্রয়োজন।
মাল্টি-পণ্য কৌশল এবং সম্পূর্ণ বাজার পর্যবেক্ষণ কৌশল ডিজাইন করার জন্য, সমষ্টিগত বাজার ইন্টারফেস অপরিহার্য। কৌশলটি বিকাশ করা সহজ করতে এবং ইভেন্টগুলি পুনরায় আবিষ্কার করা এড়াতে, এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম এই ধরণের এক্সচেঞ্জ এপিআইকে ক্যাপসুল করে।
যদি এক্সচেঞ্জের এই ইন্টারফেস না থাকে (ব্যক্তিগত এক্সচেঞ্জ), কল করার সময়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
}
নতুন যোগ করা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)
}
এই ভাবে, মাত্র তিনজনexchange.CreateOrder()
ফাংশন কলগুলি বিভিন্ন জাতের এবং দিকের তিনটি ফিউচার অর্ডার স্থাপন করতে ব্যবহৃত হয়েছিল।
নতুন যোগ করা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) + "`")
}
অবস্থান তথ্য সংগ্রহ ফাংশনের পুরানো সংস্করণ হলexchange.GetPosition()
. এই আপগ্রেডটি ফাংশন নামকরণের অর্থনীতির সাথে আরও ভালভাবে মেলে এমন একটি নতুন অবস্থান অধিগ্রহণ ফাংশন যোগ করেঃexchange.GetPositions()
. একই সময়ে, এটি এখনও GetPosition ফাংশনের সাথে সামঞ্জস্যপূর্ণ / আপগ্রেড করা হয়েছে।
মনে রাখবেন যে দুটি ফাংশন নাম শুধুমাত্র শেষ s দ্বারা পৃথক। কারণ GetPositions আরো অর্থগতভাবে সঠিক, এটি ভবিষ্যতে GetPositions ব্যবহার করার পরামর্শ দেওয়া হয়।
দ্যexchange.GetPositions()
ফাংশনের তিনটি কলিং ফর্ম রয়েছেঃ
বিনিময়.GetPositions ((() যখন কোন পরামিতি পাস করা হয় না, বর্তমান মাত্রা সব জাতের অবস্থান তথ্য বর্তমান ডিভাইসের সেটিংস অনুযায়ী অনুরোধ করা হয়ট্রেডিং জুটি / চুক্তির কোড.
exchange.GetPositions ((BTC_USD.swap
, ETH_USDT.swap
, ETH_USDT.quarter
ইত্যাদি।
BTC_USD.swap: BTC
exchange.GetPositions ((
কিছু বিশেষ বিনিময় চুক্তির মাত্রা বিভাগঃ
USDT.futures_combo: Futures_Deribit exchange
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) + "`")
}
যখন প্যারামিটার পাসexchange.GetPositions()
ফাংশন হলETH_USDT.swap
, ETH
যখন প্যারামিটারexchange.GetPositions()
এই ফাংশনগুলি পাস করা হয় না, এক্সচেঞ্জে তালিকাভুক্ত সমস্ত ইউ-ভিত্তিক চিরস্থায়ী চুক্তির অবস্থান তথ্য পাওয়া যায় (কারণ বর্তমান ট্রেডিং জোড়াটি BTC_USDT এবং চুক্তিটি স্যুপ, অনুরোধটি বর্তমান ট্রেডিং জোড়া এবং চুক্তির মাত্রার পরিসরের উপর ভিত্তি করে) । এটি কল করার সমতুল্যexchange.GetPositions("USDT.swap")
এবং একটি অনুরোধ পরিসীমা নির্দিষ্ট.
বাজার ফাংশনের প্রধান উন্নতিexchange.GetTicker()
এটি বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড ছাড়াই প্যারামিটার দ্বারা নির্দিষ্ট পণ্য তথ্য অনুযায়ী সরাসরি বাজার তথ্য অনুরোধ করার অনুমতি দেয়। এটি কোড লেখার প্রক্রিয়াকে সহজ করে তোলে। একই সাথে, এটি এখনও প্যারামিটার পাস না করে কল পদ্ধতির সাথে সামঞ্জস্যপূর্ণ এবং পুরানো প্ল্যাটফর্ম কৌশলটির সাথে সর্বাধিক পরিমাণে সামঞ্জস্যপূর্ণ।
প্যারামিটারsymbol
এক্সচেঞ্জ অবজেক্টের জন্য স্পট/ফ্যুচার ফরম্যাটের বিভিন্ন ফরম্যাট রয়েছেexchange
:
AAA_BBB
, এএএ মূল মুদ্রা, অর্থাৎ ট্রেডিং মুদ্রা এবং বিবিবি মূল্য মুদ্রা, অর্থাৎ মূল্য নির্ধারণের মুদ্রার প্রতিনিধিত্ব করে। মুদ্রার নামগুলি সব বড় অক্ষরে লেখা আছে।
উদাহরণস্বরূপঃ BTC_USDT স্পট ট্রেডিং জোড়া।AAA_BBB.XXX
, এএএ বেস মুদ্রা, অর্থাৎ ট্রেডিং মুদ্রা, বিবিবি প্রতিনিধিত্ব করে কোট মুদ্রা, অর্থাৎ মূল্য নির্ধারণের মুদ্রা, এবং XXX প্রতিনিধিত্ব করে চুক্তি কোড, যেমন চিরস্থায়ী চুক্তি বিনিময়। মুদ্রার নামগুলি সব বড় অক্ষরে এবং চুক্তি কোডগুলি ছোট অক্ষরে রয়েছে।
উদাহরণস্বরূপঃ BTC_USDT.swap, BTCvar 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
}
একটি নির্দিষ্ট প্রতীকের জন্য বাজার তথ্যের একটি ব্যাচ অনুরোধ করা অনেক সহজ হয়ে উঠেছে।
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"))
}
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) + "`")
}
এই আপগ্রেড এছাড়াও চিহ্ন প্যারামিটার দ্বারা নির্দিষ্ট সঙ্গে সামঞ্জস্যপূর্ণexchange.Go()
প্ল্যাটফর্ম এপিআই ইন্টারফেস একই সাথে কল করার সময় ফাংশন।
গেট রেকর্ডস ফাংশনটি এই সময় ব্যাপকভাবে সামঞ্জস্য করা হয়েছে। অনুরোধ করা কে-লাইন ডেটার টাইপ তথ্য সরাসরি নির্দিষ্ট করতে প্রতীক পরামিতি সমর্থন করার পাশাপাশি, মূল পিরিয়ড প্যারামিটারটি কে-লাইন সময় নির্দিষ্ট করতে বজায় রাখা হয় এবং অনুরোধ করার সময় প্রত্যাশিত কে-লাইন দৈর্ঘ্য নির্দিষ্ট করতে একটি সীমা প্যারামিটার যুক্ত করা হয়। একই সাথে, এটি গেট রেকর্ডস ফাংশনের পুরানো সংস্করণের সাথেও সামঞ্জস্যপূর্ণ যা কেবলমাত্র পিরিয়ড প্যারামিটারে পাস করে।
কলিং পদ্ধতিexchange.GetRecords()
ফাংশন হলঃ
বিন্যান্স ফিউচার লাইভ পরিবেশ ব্যবহার করে পরীক্ষা করা হয়েছেঃ
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)
}
GetOrders ফাংশন এছাড়াও যোগ করেsymbol
প্যারামিটার, যা একটি নির্দিষ্ট প্রতীক নির্দিষ্ট করতে এবং সেই প্রতীকের অসম্পূর্ণ আদেশ (অপেন্ডিং অর্ডার) অনুসন্ধান করতে ব্যবহার করা যেতে পারে; এটি নির্দিষ্ট মাত্রা পরিসীমা মধ্যে সমস্ত প্রতীক অসম্পূর্ণ আদেশ (অপেন্ডিং আদেশ) অনুসন্ধান সমর্থন করে।
দ্যexchange.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", "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.swap"
যদি USDT-ভিত্তিক চিরস্থায়ী চুক্তিগুলি পাস করা হয়, তাহলে সমস্ত USDT-ভিত্তিক চিরস্থায়ী চুক্তিগুলির অসম্পূর্ণ অর্ডার (অপেন্ডিং অর্ডার) অনুরোধ করা হবে।
এটি এখনও পুরানো অবস্থান অধিগ্রহণ ফাংশন নামকরণের সাথে সামঞ্জস্যপূর্ণ, এবং প্রতীক প্যারামিটারও যুক্ত করে, যা নির্দিষ্ট অনুরোধ করা অবস্থান ডেটার টাইপ তথ্য নির্দিষ্ট করতে পারে।
এই ফাংশনের ব্যবহার ঠিক একইexchange.GetPositions()
.
জন্য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")
}
এই আপগ্রেড প্রধানত প্যারামিটার প্রভাবিত করে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.GetPosition() ফাংশন, যখন কোনো পরামিতি নির্দিষ্ট না করেই কল করা হয়, তখন বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড দ্বারা সেট করা নির্দিষ্ট চুক্তির অবস্থান তথ্য পায়। সমন্বয় এবং সংশোধনের পরে, নতুন সংজ্ঞাঃ exchange.GetPosition() ফাংশন, যখন কোনও পরামিতি নির্দিষ্ট না করে কল করা হয়, তখন বর্তমান সেট ট্রেডিং জোড়া এবং চুক্তি কোড দ্বারা নির্ধারিত মাত্রা পরিসরে সমস্ত জাতের অবস্থানগুলি পায়।
উদাহরণস্বরূপ, বর্তমান ট্রেডিং জোড়া হল BTC_USDT এবং চুক্তি কোড হল swap। এই সময়ে, কল করুনঃ
exchange.GetPosition() // Equivalent to calling exchange.GetPosition("USDT.swap")
এই ফাংশনটি সকল মুদ্রার ইউ-ভিত্তিক চিরস্থায়ী চুক্তির অবস্থান তথ্য অনুরোধ করবে।
পুরানো সংজ্ঞাঃ exchange.GetOrders() ফাংশন, যখন কোনো পরামিতি নির্দিষ্ট না করেই কল করা হয়, তখন বর্তমান ট্রেডিং জোড়ার সমস্ত অসম্পূর্ণ অর্ডার পায়। সমন্বয় এবং সংশোধনের পরে, নতুন সংজ্ঞাটি হলঃ exchange.GetOrders (()) ফাংশন, যখন কোনও পরামিতি নির্দিষ্ট না করে কল করা হয়, তখন সমস্ত স্পট ট্রেডিং জোড়ার অসম্পূর্ণ আদেশগুলি পায়।
পুরানো সংজ্ঞাঃ exchange.GetOrders() ফাংশন, যখন কোনো পরামিতি নির্দিষ্ট না করেই কল করা হয়, তখন বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড দ্বারা সেট করা নির্দিষ্ট চুক্তির সমস্ত অসম্পূর্ণ আদেশ পায়। সমন্বয় এবং সংশোধনের পরে, নতুন সংজ্ঞাটি হলঃ exchange.GetOrders() ফাংশন, যখন কোনও পরামিতি নির্দিষ্ট না করেই কল করা হয়, তখন বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড দ্বারা নির্ধারিত মাত্রা পরিসরের সমস্ত অসম্পূর্ণ অর্ডার পায়।
উদাহরণস্বরূপ, বর্তমান ট্রেডিং জোড়া হল BTC_USD এবং চুক্তি কোডটি চতুর্থাংশ। এই সময়ে, কল করুনঃ
exchange.GetOrders() // Equivalent to calling exchange.GetOrders("USD.futures")
এই ফাংশনটি সমস্ত মুদ্রা ভিত্তিক ফিউচার কন্ট্রাক্টের অসমাপ্ত অর্ডার ডেটা অনুরোধ করবে।
এই আপডেটটি টিকার কাঠামোতে একটি প্রতীক ক্ষেত্র যোগ করে, যা বর্তমান টিকার কাঠামোর বাজার তথ্য রেকর্ড করে।
এই ক্ষেত্রের বিন্যাস ঠিক একই চিহ্ন প্যারামিটার বিন্যাসexchange.GetTicker()
function.
এই আপডেট অর্ডার কাঠামোর একটি প্রতীক ক্ষেত্র যোগ করে, এবং এই ক্ষেত্রের বিন্যাস ঠিক একই প্রতীক পরামিতি বিন্যাসexchange.GetTicker()
ফাংশন
এই আপডেটটি অর্ডার কাঠামোর আইডি ক্ষেত্রটিও সংশোধন করে, নতুন অর্ডার আইডি ফর্ম্যাটে পণ্যের তথ্য এবং মূল অর্ডার তথ্য রেকর্ড করে।exchange.GetOrder()
ফাংশন, যা এখানে পুনরাবৃত্তি করা হবে না।
এই আপডেট অবস্থান কাঠামোর একটি প্রতীক ক্ষেত্র যোগ করে. এই ক্ষেত্রের বিন্যাস ঠিক একইexchange.GetTicker()
function.
প্ল্যাটফর্ম কৌশল এপিআই ইন্টারফেস আপগ্রেড অনুযায়ী, প্ল্যাটফর্মের ব্যাকটেস্টিং সিস্টেমটি সিঙ্ক্রোনাইজ আপডেট করা হয়েছে; এছাড়াও ব্যাকটেস্টিং সিস্টেমটি নিম্নলিখিতগুলির জন্য সমর্থন যুক্ত করেছেঃ
জমির মাঠAccount
গঠন দ্বারা ফিরেGetAccount
ফিউচার এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন প্রসারিত হয়েছে।
মূলধন বর্তমান মার্জিন সম্পদ মুদ্রার মোট ইক্যুইটি। কয়েকটি ফিউচার এক্সচেঞ্জ ব্যতীত যা এই ক্ষেত্রটি সমর্থন করে না, বেশিরভাগ এক্সচেঞ্জ এই ক্ষেত্রটি সমর্থন করে। এটি মূলত রিয়েল-টাইম অ্যাকাউন্ট মার্জিন লাভ এবং ক্ষতি গণনা করতে ব্যবহৃত হয়।
ইউপিএনএল বর্তমান মার্জিন সম্পদের মুদ্রায় থাকা সমস্ত পজিশনের অব্যবহৃত লাভ এবং ক্ষতি। বেশিরভাগ ফিউচার এক্সচেঞ্জ এই ক্ষেত্রটি সমর্থন করে, কয়েকটি ব্যতীত যা করে না।
ফিউচার এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন 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)
}
মাঠCtValCcy
একটি চুক্তির মান একক রেকর্ড করে। একটি চুক্তির মান একক হতে পারেঃ বিটিসি, ইউএসডি, ইটিএইচ ইত্যাদি।
মাঠCtVal
এক্সচেঞ্জে ট্রেডিং প্রোডাক্টের একটি চুক্তির মূল্য রেকর্ড করে, এবং ইউনিটটি মুদ্রা যা এক্সচেঞ্জে রেকর্ড করা হয়CtValCcy
উদাহরণস্বরূপঃCtVal
হল ০.০১, এবংCtValCcy