[TOC]

موجد کوانٹیٹیو ٹریڈنگ پلیٹ فارم 9 سال تک تکنیکی تکرار سے گزر چکا ہے اور اسے کئی بار دوبارہ تشکیل دیا گیا ہے، حالانکہ بطور صارف ہم نے اسے محسوس نہیں کیا ہوگا۔ پچھلے دو سالوں میں، پلیٹ فارم نے صارف کے تجربے کے لحاظ سے بہت زیادہ اصلاح اور اپ گریڈ کیے ہیں، بشمول UI انٹرفیس کا ایک جامع اپ گریڈ، عام طور پر استعمال ہونے والے مقداری تجارتی ٹولز کو افزودہ کرنا، اور مزید بیک ٹیسٹنگ ڈیٹا سپورٹ شامل کرنا۔
حکمت عملی کے ڈیزائن کو مزید آسان بنانے، تجارتی منطق کو واضح کرنے، اور ابتدائی افراد کے لیے شروع کرنا آسان بنانے کے لیے، پلیٹ فارم نے حکمت عملی کے ذریعے استعمال کیے جانے والے API انٹرفیس کو اپ گریڈ کیا۔ ان نئی خصوصیات کو فعال کرنے کے لیے اپنے میزبان کا تازہ ترین ورژن استعمال کریں۔ پلیٹ فارم پرانے انٹرفیس پر کالز کے ساتھ زیادہ سے زیادہ حد تک مطابقت رکھتا ہے۔ نئی API انٹرفیس خصوصیات کے بارے میں معلومات کو انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم کے API دستاویزات میں اپ ڈیٹ کر دیا گیا ہے:
تو آئیے ایک سرسری نظر ڈالتے ہیں کہ کن انٹرفیسز کو اپ گریڈ کیا گیا ہے اور پرانی حکمت عملیوں کو موجودہ API کے ساتھ ہم آہنگ کرنے کے لیے کن تبدیلیوں کی ضرورت ہے۔
کثیر قسم کی حکمت عملیوں اور مارکیٹ کی صورتحال کی مکمل نگرانی کی حکمت عملیوں کو ڈیزائن کرنے کے لیے۔ یہ مجموعی مارکیٹ انٹرفیس حکمت عملیوں کو آسان بنانے اور پہیے کو دوبارہ ایجاد کرنے سے بچنے کے لیے ضروری ہے۔ موجد کا مقداری تجارتی پلیٹ فارم ایکسچینج کے ایسے APIs کو سمیٹتا ہے۔
اگر ایکسچینج کے پاس یہ انٹرفیس نہیں ہے (انفرادی تبادلے)، کال کریں۔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)
}

یہ صرف 3 بار لیاexchange.CreateOrder()فنکشن کال مختلف اقسام اور سمتوں کے تین فیوچر آرڈر دیتا ہے۔
نیاexchange.GetHistoryOrders()فنکشن کو کسی خاص پروڈکٹ کے تاریخی لین دین کے آرڈرز حاصل کرنے کے لیے استعمال کیا جاتا ہے اس فنکشن کو ایکسچینج انٹرفیس کی بھی ضرورت ہوتی ہے۔
تاریخی آرڈرز کے بارے میں استفسار کرنے کے لیے، مختلف تبادلے کے ذریعے لاگو کیے گئے انٹرفیس بہت مختلف ہوتے ہیں:
اس طرح کے انٹرفیس اعلیٰ درجے کی مطابقت کے ساتھ سمیٹے ہوئے ہیں، اور اصل استعمال میں، اس بات پر توجہ دی جانی چاہیے کہ آیا وہ حکمت عملی کی ضروریات اور توقعات پر پورا اترتے ہیں۔
تفصیلی فنکشن کی تفصیل یہاں دہرائی نہیں گئی، آپ 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) + "`")
}

پوزیشن ڈیٹا ایکوزیشن فنکشن کا پرانا ورژن یہ ہے:exchange.GetPosition(). فنکشن کے نام کے سیمنٹکس کو بہتر طریقے سے میچ کرنے کے لیے، یہ اپ گریڈ پوزیشنز حاصل کرنے کے لیے ایک نئے فنکشن کا اضافہ کرتا ہے:exchange.GetPositions(). ایک ہی وقت میں، یہ ابھی بھی GetPosition فنکشن کے ساتھ مطابقت رکھتا/اپ گریڈ ہے۔
نوٹ کریں کہ دونوں فنکشن کے نام صرف ٹریلنگ s کے لحاظ سے مختلف ہیں کیونکہ GetPositions زیادہ صحیح ہے، یہ تجویز کی جاتی ہے کہ آپ مستقبل میں GetPositions استعمال کریں۔
exchange.GetPositions()فنکشن کالز کی تین شکلیں ہیں:
exchange.GetPositions() جب کوئی پیرامیٹرز پاس نہیں ہوتے ہیں تو کرنٹتجارتی جوڑے / کنٹریکٹ کوڈموجودہ جہت میں تمام اقسام کے پوزیشن ڈیٹا کی درخواست کریں۔
exchange.GetPositions(“ETH_USDT.swap”)
مخصوص پروڈکٹ کی معلومات کی وضاحت کرتے وقت (ETH_USDT.swap فارمیٹ کی FMZ پلیٹ فارم کے ذریعے وضاحت کی گئی ہے)، مخصوص پروڈکٹ کے پوزیشن ڈیٹا کی درخواست کریں۔
مثال:BTC_USD.swap、ETH_USDT.swap、ETH_USDT.quarterانتظار کرو
BTC_USD.swap: BTC کا کرنسی پر مبنی دائمی معاہدہ۔
ETH_USDT.swap: ETH کا U-based مستقل معاہدہ۔
ETH_USDC.swap: ETH کے لیے USDC کے مارجنڈ دائمی معاہدہ۔ (USDT کے علاوہ، آپ مختلف quoteCurrency بھی بتا سکتے ہیں، جسے یہاں نہیں دہرایا جائے گا)
ETH_USDT.quarter: ETH کا U-based سہ ماہی ترسیل کا معاہدہ۔
BTC_USD.BTC-USD-201226-24250-C: BTC سکے کے مارجنڈ آپشن کا معاہدہ۔
exchange.GetPositions(“USDT.swap”) مخصوص طول و عرض کی حد کے مطابق تمام علامتوں کے لیے پوزیشن ڈیٹا کی درخواست کریں۔ USDT.swap: U-based دائمی معاہدے کی حد۔ USDT.futures: U-based ترسیل کے معاہدوں کی حد۔ USDC.swap: USDC-حاشیہ دائمی معاہدے کی حد۔ (USDT کے علاوہ، آپ مختلف quoteCurrency بھی بتا سکتے ہیں، جسے یہاں نہیں دہرایا جائے گا) USDC.futures: USDC کے مارجنڈ فیوچر معاہدوں کی حد۔ USD.swap: کرنسی پر مبنی دائمی معاہدے کی حد۔ USD.futures: کرنسی پر مبنی مستقبل کے معاہدوں کی حد۔ USDT.option: U-based آپشن معاہدہ کی حد۔ USD.option: کرنسی پر مبنی اختیار کے معاہدے کی حد۔
کچھ خصوصی تبادلے کے معاہدے کے طول و عرض کی تقسیم: USDT.futures_combo: Futures_Deribit ایکسچینج کا CFD مجموعہ۔ USD.futures_ff:Futures_Craken ایکسچینج کا مخلوط مارجن ڈیلیوری معاہدہ۔ 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) + "`")
}

آنے پرexchange.GetPositions()فنکشن کے پیرامیٹرز ہیں۔ETH_USDT.swapجب آپ ETH U پر مبنی دائمی معاہدہ استعمال کرتے ہیں، تو آپ ETH U کی بنیاد پر دائمی معاہدے کی پوزیشن کا ڈیٹا حاصل کر سکتے ہیں۔
جب امپورٹ نہیں کیا جاتاexchange.GetPositions()جب فنکشن کو ایک پیرامیٹر کے طور پر استعمال کیا جاتا ہے، تو ایکسچینج پر درج تمام U-مارجن دائمی معاہدوں کی پوزیشن کا ڈیٹا حاصل کیا جا سکتا ہے (کیونکہ موجودہ تجارتی جوڑا BTC_USDT ہے اور معاہدہ تبادلہ ہے، درخواست موجودہ تجارتی جوڑی پر مبنی ہے اور معاہدہ طول و عرض کی حد) یہ کال کرنے کے برابر ہے۔exchange.GetPositions("USDT.swap")درخواست کے دائرہ کار کی وضاحت کریں۔
نیا شامل کردہ GetFundings فنکشن فیوچر ایکسچینجز پر مستقل معاہدوں کی فنڈنگ کی شرح حاصل کر سکتا ہے۔ فنکشن ایک پیرامیٹر کی علامت لیتا ہے۔ فنکشن فنڈنگ ڈھانچے کی ایک صف کو لوٹاتا ہے۔
BTC_USDT.swap. اگر کوئی پیرامیٹرز پاس نہیں کیے جاتے ہیں یا فنکشن میں ایک رینج کو منتقل کیا جاتا ہے، تو ایک ایرر میسج ظاہر ہوگا جس میں کہا جائے گا کہ علامت پیرامیٹر سپورٹ نہیں ہے۔مارکیٹ کی تقریبexchange.GetTicker()یہ اپ گریڈ بنیادی طور پر علامت کے پیرامیٹرز کو شامل کرتا ہے۔ موجودہ تجارتی جوڑے اور معاہدہ کوڈ سے قطع نظر پیرامیٹرز کے ذریعہ متعین کردہ مصنوعات کی معلومات کے مطابق براہ راست مارکیٹ ڈیٹا کی درخواست کرنے کے لیے اس فنکشن کا استعمال کیا جا سکتا ہے۔ کوڈ لکھنے کے عمل کو آسان بناتا ہے۔ ایک ہی وقت میں، یہ اب بھی پیرامیٹرز کو پاس کیے بغیر کالنگ کے طریقہ کار کے ساتھ مطابقت رکھتا ہے، اور پلیٹ فارم کی پرانی حکمت عملیوں کے ساتھ سب سے زیادہ حد تک مطابقت رکھتا ہے۔
پیرامیٹرsymbolاشیاء کے تبادلے کے لیےexchangeسپاٹ/مستقبل کے لیے مختلف فارمیٹس ہیں:
AAA_BBBAAA بیس کرنسی کی نمائندگی کرتا ہے، یعنی لین دین کی کرنسی، اور BBB quoteCurrency کی نمائندگی کرتا ہے، یعنی قیمت کا تعین کرنے والی کرنسی۔ کرنسی کے نام تمام بڑے حروف میں ہیں۔
مثال کے طور پر: BTC_USDT سپاٹ ٹریڈنگ جوڑی۔AAA_BBB.XXX، AAA بیس کرنسی کی نمائندگی کرتا ہے، یعنی لین دین کی کرنسی، BBB quoteCurrency کی نمائندگی کرتا ہے، یعنی قیمتوں کا تعین کرنے والی کرنسی، اور XXX معاہدے کے کوڈ کی نمائندگی کرتا ہے، جیسے دائمی معاہدے کی تبدیلی۔ کرنسی کے نام سبھی بڑے حروف میں ہیں اور کنٹریکٹ کوڈ چھوٹے حروف میں ہیں۔
مثال کے طور پر: BTC_USDT.swap، BTC کا U-based مستقل معاہدہ۔بائننس فیوچرز لائیو ماحول کا استعمال کرتے ہوئے تجربہ کیا گیا:
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
}

ایک مخصوص علامت کے لیے مارکیٹ ڈیٹا کے بیچ کی درخواست کرنا بہت آسان ہو گیا ہے۔
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()جب فنکشن پلیٹ فارم API انٹرفیس کو بیک وقت کال کرتا ہے، تو پروڈکٹ کی معلومات کی وضاحت کرنے کے لیے علامت پیرامیٹر کو پاس کیا جاتا ہے۔
GetRecords فنکشن کو اس بار نمایاں طور پر ایڈجسٹ کیا گیا ہے، اس کے علاوہ درخواست کردہ K-line ڈیٹا کی قسم کی معلومات کی براہ راست وضاحت کرنے کے لیے علامت پیرامیٹر کو سپورٹ کیا گیا ہے۔ K-line کی مدت کی وضاحت کرنے کے لیے اصل پیریڈ پیرامیٹر کو برقرار رکھا جاتا ہے، اور درخواست کرتے وقت متوقع K-لائن کی لمبائی کی وضاحت کرنے کے لیے ایک حد پیرامیٹر شامل کیا جاتا ہے۔ یہ GetRecords فنکشن کے پرانے ورژن کے ساتھ بھی مطابقت رکھتا ہے جو صرف پیریڈ پیرامیٹر میں گزرتا ہے۔
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相邻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)
}

GetOrders فنکشن بھی شامل کرتا ہے۔symbolپیرامیٹرز، آپ ایک مخصوص پروڈکٹ کی وضاحت کر سکتے ہیں اور پروڈکٹ کے نامکمل آرڈرز (پینڈنگ آرڈرز) کے بارے میں پوچھ سکتے ہیں؛ آپ مخصوص ڈائمینشن رینج میں تمام پروڈکٹس کے نامکمل آرڈرز (پینڈنگ آرڈرز) کے بارے میں بھی استفسار کر سکتے ہیں۔
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", "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) + "`")
}
ETH_USDT.swapپیرامیٹر، ETH کے USDT- مارجنڈ دائمی معاہدے کے نامکمل آرڈرز (پینڈنگ آرڈرز) کی درخواست کریں۔"USDT.swap"USDT کے مارجنڈ دائمی معاہدوں کے تمام بقایا آرڈرز (پینڈنگ آرڈرز) کی درخواست کریں۔یہ اب بھی پرانے پوزیشن کے حصول کے فنکشن کے نام کے ساتھ مطابقت رکھتا ہے، اور علامت پیرامیٹر کو بھی شامل کرتا ہے، جو مخصوص درخواست کردہ پوزیشن ڈیٹا کی قسم کی معلومات کی وضاحت کر سکتا ہے۔ فنکشن کا استعمال اورexchange.GetPositions()مکمل طور پر ہم آہنگ۔
کے لیےexchange.IO("api", ...)فنکشن کالنگ کے طریقہ کار کو اپ گریڈ کیا گیا ہے تاکہ تمام ایکسچینج اشیاء کے لیے مکمل درخواست ایڈریس کو براہ راست پاس کرنے میں مدد ملے۔
مثال کے طور پر، اگر آپ OKX انٹرفیس کو کال کرنا چاہتے ہیں:
GET https://www.okx.com /api/v5/account/max-withdrawal ccy: BTC
بیس ایڈریس پر براہ راست لکھنے کی حمایت کریں۔https://www.okx.comIO فنکشن کو کال کرنے سے پہلے بیس ایڈریس کو تبدیل کرنے کی ضرورت نہیں ہے۔
OKX فیوچر سمولیشن ماحول کا استعمال کرتے ہوئے ٹیسٹ کریں:
function main() {
exchange.IO("simulate", true)
return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

یہ اپ گریڈ بنیادی طور پر متاثر کرتا ہے۔exchange.GetOrder(id)فنکشن پیرامیٹرزidآئی ڈی پیرامیٹر کو اصل ایکسچینج آرڈر آئی ڈی سے ایک سٹرنگ فارمیٹ میں تبدیل کر دیا گیا ہے جس میں ٹریڈنگ کی قسم ہے۔ FMZ پلیٹ فارم پر تمام پیکڈ آرڈر IDs اس فارمیٹ میں ہیں۔
مثال کے طور پر:
123456
اس اپ گریڈ سے پہلے، اگر آپ GetOrder فنکشن کو کال کرنا چاہتے ہیں، تو پاس کردہ آرڈر ID ہے۔123456。BTC-USDT。
براہ کرم نوٹ کریں کہ یہاں جس چیز کا ذکر کیا گیا ہے وہ ایکسچینج کی طرف سے نامزد کردہ تجارتی پروڈکٹ کوڈ ہے، نہ کہ FMZ پلیٹ فارم کی طرف سے بیان کردہ تجارتی جوڑی۔اس اپ گریڈ کے بعد،exchange.GetOrder(id)پیرامیٹر id کا فارمیٹ جس میں فنکشن کو پاس کرنے کی ضرورت ہے اس میں ایڈجسٹ کیا گیا ہے:BTC-USDT,123456。
میں پہلے بتاتا ہوں کہ یہ ڈیزائن کیوں کیا گیا ہے: کیونکہ اس بار CreateOrder فنکشن کو اپ گریڈ کیا گیا ہے تاکہ آرڈر دینے کے لیے براہ راست پروڈکٹ کی وضاحت کی جا سکے (آرڈر کی گئی پروڈکٹ موجودہ سیٹ ٹریڈنگ پیئر اور کنٹریکٹ کوڈ سے مختلف ہو سکتی ہے)، اگر واپس کی گئی آرڈر آئی ڈی میں پروڈکٹ کی معلومات شامل نہیں ہے۔ پھر یہ آرڈر آئی ڈی دستیاب نہیں ہوگی۔ کیونکہ جب آپ آرڈر چیک کرتے ہیں، تو آپ نہیں جانتے کہ آرڈر کس قسم کے (معاہدے) کے لیے ہے۔ زیادہ تر ایکسچینجز کو آرڈرز کی جانچ اور منسوخی کے دوران پروڈکٹ کوڈ کی وضاحت کرنے والے پیرامیٹرز کی ضرورت ہوتی ہے۔
اس اثر کو کیسے ایڈجسٹ کیا جائے: اگر آپ ایکسچینج کے آرڈر انٹرفیس کو آرڈر کرنے کے لیے براہ راست کال کرنے کے لیے exchange.IO فنکشن استعمال کرتے ہیں، تو واپسی کی قیمت میں عام طور پر ایکسچینج کی اصل علامت (پروڈکٹ کوڈ) اور اصل آرڈر کی شناخت ہوتی ہے۔ پھر دونوں کو انگریزی کوما کے ساتھ جوڑنے سے آپ کو FMZ پلیٹ فارم کی طرف سے بیان کردہ آرڈر ID ملے گا۔ اسی طرح، اگر آپ آرڈر کرنے کے لیے ایف ایم زیڈ پلیٹ فارم کے ذریعے انکیپسلیٹ کردہ آرڈر انٹرفیس کا استعمال کرتے ہیں، چونکہ آرڈر آئی ڈی کا آغاز ٹریڈنگ پروڈکٹ کوڈ ہے، اگر آپ کو اصل آرڈر آئی ڈی استعمال کرنے کی ضرورت ہے، تو آپ کو صرف پروڈکٹ کوڈ کو حذف کرنا ہوگا اور کوما
یہ اپ گریڈ کے لیے ہے۔exchange.CancelOrder()افعال کا اثر اورexchange.GetOrder()افعال ایک جیسے ہیں۔
یہ اپ گریڈ کے لیے ہے۔exchange.Buy()افعال کا اثر اورexchange.GetOrder()افعال ایک جیسے ہیں۔exchange.Buy()فنکشن کے ذریعہ واپس کردہ آرڈر ID ایک نیا ڈھانچہ ہے، مثال کے طور پر، OKX ایکسچینج پر فیوچر آرڈر دیتے وقت ID واپس کی گئی:LTC-USDT-SWAP,1578360858053058560。
یہ اپ گریڈ کے لیے ہے۔exchange.Sell()افعال کا اثر اورexchange.GetOrder()افعال ایک جیسے ہیں۔exchange.Sell()فنکشن کے ذریعہ واپس کردہ آرڈر ID ایک نیا ڈھانچہ ہے، مثال کے طور پر، OKX ایکسچینج پر فیوچر آرڈر دیتے وقت ID واپس کی گئی:ETH-USDT-SWAP,1578360832820125696。
صرف فیوچر ایکسچینج اشیاء اس فنکشن کو سپورٹ کرتی ہیں۔
پرانی تعریف: exchange.GetPosition() فنکشن کو جب کسی بھی پیرامیٹرز کی وضاحت کیے بغیر کال کیا جاتا ہے، تو یہ موجودہ تجارتی جوڑے اور معاہدہ کوڈ کے ذریعے مقرر کردہ مخصوص معاہدے کی پوزیشن کا ڈیٹا حاصل کرتا ہے۔
ایڈجسٹمنٹ اور ترمیم کے بعد، نئی تعریف یہ ہے: exchange.GetPosition() فنکشن کو جب کسی بھی پیرامیٹرز کی وضاحت کیے بغیر کال کی جاتی ہے، تو یہ موجودہ سیٹ ٹریڈنگ پیئر اور کنٹریکٹ کوڈ کے ذریعے طے شدہ ڈائمینشن رینج میں تمام اقسام کی پوزیشن حاصل کرتی ہے۔
مثال کے طور پر، موجودہ تجارتی جوڑا BTC_USDT ہے اور معاہدہ کوڈ سویپ ہے۔ اس وقت کال کریں:
exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")
یہ فنکشن تمام کرنسیوں کے U-مارجن دائمی معاہدوں کے پوزیشن ڈیٹا کی درخواست کرے گا۔
پرانی تعریف: exchange.GetOrders() فنکشن کو جب کسی بھی پیرامیٹرز کی وضاحت کیے بغیر کال کیا جاتا ہے، تو یہ موجودہ تجارتی جوڑی کے لیے تمام بقایا آرڈرز کو بازیافت کرتا ہے۔
ایڈجسٹمنٹ اور ترمیم کے بعد، نئی تعریف یہ ہے: exchange.GetOrders() فنکشن کو بغیر کسی پیرامیٹرز کی وضاحت کے، یہ تمام اسپاٹ ٹریڈنگ جوڑوں کے نامکمل آرڈرز حاصل کرتا ہے۔
پرانی تعریف: exchange.GetOrders() فنکشن کو جب کسی بھی پیرامیٹرز کی وضاحت کیے بغیر کال کی جاتی ہے، تو یہ موجودہ تجارتی جوڑی اور معاہدہ کوڈ کے ذریعے مقرر کردہ مخصوص معاہدے کے تمام نامکمل آرڈرز کو بازیافت کرتا ہے۔
ایڈجسٹمنٹ اور ترمیم کے بعد، نئی تعریف یہ ہے: exchange.GetOrders() فنکشن کو جب کسی بھی پیرامیٹرز کی وضاحت کیے بغیر کال کیا جاتا ہے، تو یہ موجودہ سیٹ ٹریڈنگ پیئر اور کنٹریکٹ کوڈ کے ذریعے طے شدہ ڈائمینشن رینج میں تمام نامکمل آرڈرز حاصل کرتا ہے۔
مثال کے طور پر، موجودہ تجارتی جوڑا BTC_USD ہے اور معاہدہ کوڈ سہ ماہی ہے۔ اس وقت کال کریں:
exchange.GetOrders() // 等价于调用 exchange.GetOrders("USD.futures")
یہ فنکشن تمام سکے کے مارجنڈ فیوچر کنٹریکٹس کے بقایا آرڈر ڈیٹا کی درخواست کرے گا۔
یہ اپ ڈیٹ ٹکر کے ڈھانچے میں ایک سمبل فیلڈ کا اضافہ کرتا ہے، جو موجودہ ٹکر ڈھانچے کی مصنوعات کی مارکیٹ کی معلومات کو ریکارڈ کرتا ہے۔ اس فیلڈ کا فارمیٹ ہے۔exchange.GetTicker()فنکشن کا سمبل پیرامیٹر فارمیٹ بالکل ایک جیسا ہے۔
یہ اپ ڈیٹ آرڈر کے ڈھانچے میں ایک سمبل فیلڈ کا اضافہ کرتا ہے اس فیلڈ کا فارمیٹ ویسا ہی ہے۔exchange.GetTicker()فنکشن کا سمبل پیرامیٹر فارمیٹ بالکل ایک جیسا ہے۔ یہ اپ ڈیٹ آرڈر کے ڈھانچے کے آئی ڈی فیلڈ میں بھی ترمیم کرتا ہے تاکہ پروڈکٹ کی معلومات اور آرڈر کی اصل معلومات کو نئے آرڈر آئی ڈی فارمیٹ میں ریکارڈ کیا جا سکے۔ کا حوالہ دیںexchange.GetOrder()فنکشن میں آرڈر آئی ڈی کی تفصیل یہاں نہیں دہرائی جائے گی۔
یہ اپ ڈیٹ پوزیشن ڈھانچے میں ایک سمبل فیلڈ کا اضافہ کرتا ہے اس فیلڈ کا فارمیٹ ویسا ہی ہے۔exchange.GetTicker()فنکشن کا سمبل پیرامیٹر فارمیٹ بالکل ایک جیسا ہے۔
GetFundings فنکشن فنڈنگ ڈھانچے کی ایک صف کو لوٹاتا ہے۔
{
"Info": {...}, // 交易所资金费率接口原始应答数据
"Symbol": "BTC_USDT.swap", // FMZ平台定义的品种名称
"Interval": 28800000, // 8小时间隔,单位毫秒
"Time": 1729728000000, // 本期资金费率收取时间
"Rate": 0.0001, // 资金费率,即 0.01 %
}
صارف کی ضروریات کو پورا کرنے کے لیے، یہ اپ گریڈ سب سے پہلے حقیقی مارکیٹ کے ساتھ مطابقت رکھتا ہے، اور بیک ٹیسٹنگ سسٹم کو ایک ہفتے کے اندر ڈھال لیا جائے گا اگر انفرادی حکمت عملی کے کوڈز متاثر ہوتے ہیں، تو تبدیلیاں اور موافقت کے لیے اس مضمون میں دی گئی ہدایات پر عمل کریں۔
پلیٹ فارم کی حکمت عملی API انٹرفیس اپ گریڈ کے مطابق، پلیٹ فارم کے بیک ٹیسٹنگ سسٹم میں API انٹرفیس کو ہم وقت سازی کے ساتھ اپ ڈیٹ کیا گیا ہے، اس کے علاوہ، بیک ٹیسٹنگ سسٹم نے اس کے لیے تعاون شامل کیا ہے:
فیوچر ایکسچینج آبجیکٹ کے ممبر کے افعالGetAccountواپسیAccountڈھانچے کو کھیتوں کے ساتھ بڑھا دیا گیا ہے۔
فیوچر ایکسچینج آبجیکٹ کے ممبر فنکشن SetMarginLevel کو پیرامیٹر کی علامت شامل کرنے کے لیے اپ گریڈ کیا گیا ہے۔
ٹیسٹ کی مثال:
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)
}
CtValCcyکسی معاہدے کی قدر کی اکائی کو ریکارڈ کریں: BTC، USD، ETH، وغیرہ۔CtValاس ٹریڈنگ پروڈکٹ کے ایک معاہدے کی قیمت کو ایکسچینج پر، کی اکائیوں میں ریکارڈ کریں۔CtValCcyفیلڈ ریکارڈ کی کرنسی۔ مثال کے طور پر:CtVal0.01 ہے،CtValCcy“BTC” کا مطلب ہے کہ ایک معاہدہ کی قیمت 0.01 BTC ہے۔