[TOC]
ڈی ای ایکس (DEX) کے تیزی سے عروج کے ساتھ ، کوانٹیفیکیشن ٹریڈرز نے تیزی سے ان پلیٹ فارمز کی طرف رجوع کرنا شروع کیا ہے۔ ڈی وائی ڈی ایکس ، جو کہ سب سے زیادہ مقبول ڈی وائی ڈی ٹریڈنگ پلیٹ فارمز میں سے ایک ہے ، طاقتور ٹریڈنگ کی خصوصیات پیش کرتا ہے ، مستقبل کے مستقل معاہدوں کی تجارت کی حمایت کرتا ہے ، اور اس کا تازہ ترین ورژن وی 4 کارکردگی اور صارف کے تجربے کو بہتر بناتا ہے ، جو بہت سے کوانٹیفیکیشن ٹریڈرز کے لئے پسندیدہ ہے۔
اس مضمون میں ہم آپ کو بتائیں گے کہ ڈی وائی ڈی ایکس وی 4 پر تجارتی طریقوں کو کس طرح مقدار میں کیا جاسکتا ہے ، بشمول اس کے اے پی پی کا استعمال کرکے تجارت ، مارکیٹ کے اعداد و شمار اور اکاؤنٹس کا نظم کرنا۔
dYdX ٹیسٹنگ ویب ایپ پیج
اورdYdX v3
اس کے علاوہ، تجارت سے انعام ملتا ہے.dYdX
ٹوکن۔
پہلے dYdX v3 پروٹوکول DEX تبادلے سے دور ہے، اب dYdX v4 اپلی کیشن ایڈریس:
ایپ کے صفحے کو کھولنے کے بعد ، اوپری دائیں کونے میں بٹن ہے جو بٹوے کو مربوط کرتا ہے ، اسکرین کوڈ جو بٹوے کو مربوط کرتا ہے۔
اگر آپ پہلے ٹیسٹ نیٹ ماحول کی جانچ سے واقف ہونا چاہتے ہیں تو ، آپ ٹیسٹ نیٹ استعمال کرسکتے ہیں:
اسی طرح دائیں اوپر والے کونے پر کلک کریں بٹوے کو مربوط کریں ، بٹوے کو مربوط کریں ، دستخط کی توثیق کریں۔ بٹوے کو مربوط کرنے کے بعد کامیابی کے بعد ، ایک dydx v4 ایڈریس خود بخود تیار ہوجائے گا۔ ایپ کے صفحے کے دائیں اوپر والے کونے میں ، اس ایڈریس کو دکھایا جائے گا ، کلک کرنے کے بعد ایک مینو پاپ اپ ہوگا۔ اس میں چارج ، ٹکٹ ، ٹرانسفر وغیرہ کی کارروائییں ہیں۔ dYdX ہوم نیٹ ورک (پیداوار کا ماحول) ٹیسٹ نیٹ ورک سے ایک فرق یہ ہے کہ: ٹیسٹ نیٹ ورک پر کلک کریں چارج کریں ، ٹیسٹ کے لئے 300 USDC اثاثوں میں خود بخود نل کا استعمال کریں گے۔ اگر آپ dYdX پر حقیقی تجارت کرنا چاہتے ہیں تو ، آپ کو USDC اثاثوں میں بھاگنے کی ضرورت ہے ، قیمت بھی بہت آسان ہے ، متعدد اثاثوں کی زنجیروں کو چارج کرنے کے قابل ہے۔
dYdX v4 اکاؤنٹ ایڈریس
dYdX v4 اکاؤنٹ ایڈریس والیٹ ایڈریس سے ماخوذ ہے، dYdX v4 اکاؤنٹ ایڈریس کچھ اس طرح نظر آتا ہے:dydx1xxxxxxxxxxxxxxxxxxxxq2ge5jr4nzfeljxxxx
، dydx1 کے آغاز کا پتہ ہے۔ یہ پتہ بلاکچین ایکسپلوررز میں پوچھا جا سکتا ہے۔
معاون الفاظ موجودہ ڈی وائی ڈی ایکس ایڈریس اکاؤنٹ کے پاس ورڈ کو برآمد کرنے کے لئے اوپری دائیں کونے کے مینو میں "پاس ورڈ برآمد کریں" کے بٹن پر کلک کریں۔ جب آپ ایف ایم زیڈ پلیٹ فارم میں تبادلہ شامل کرتے ہیں تو اس پاس ورڈ کو تشکیل دینے کی ضرورت ہوتی ہے۔
اس کے علاوہ، آپ کو FMZ پلیٹ فارم میں براہ راست تشکیل دے سکتے ہیں، یا مقامی طور پر منتظمین کو برقرار رکھنے کے قابل ہو سکتے ہیں.
ٹیسٹ نیٹ کے ماحول میں کچھ پہلوؤں میں مرکزی نیٹ کے ماحول سے کچھ اختلافات ہیں، جن میں سے کچھ کی ایک مختصر فہرست درج ذیل ہے۔
subAccountNumber >= 128
اگر اس آئی ڈی کا ذیلی اکاؤنٹ ذخیرہ میں نہیں ہے تو ، یہ خود بخود ذیلی اکاؤنٹ کو ذیلی اکاؤنٹ نمبر 0 میں صاف کردے گا۔
ٹیسٹ میں پتہ چلا کہ ٹیسٹ نیٹ ورک میں ایسا کوئی طریقہ کار نہیں ہے (یا ٹرگر کی شرائط مختلف ہیں ، ٹیسٹ نیٹ ورک میں ٹرگر نہیں ہوا ہے) ۔DYDX
ٹیسٹ نیٹ ورکDv4TNT
ہوم پیج:
انڈیکس ایڈریس:https://indexer.dydx.trade
چین آئی ڈی:dydx-mainnet-1
REST نوڈ:https://dydx-dao-api.polkachu.com:443
ٹیسٹ نیٹ:
انڈیکس ایڈریس:https://indexer.v4testnet.dydx.exchange
چین آئی ڈی:dydx-testnet-4
REST نوڈ:https://dydx-testnet-api.polkachu.com
dYdX v4 پروٹوکول کائنات کی ماحولیاتی ترقی پر مبنی ہے ، dYdX v4 DEX سسٹم کے ساتھ تجارت سے متعلق مواد میں بنیادی طور پر 2 حصے شامل ہیں:
انڈیکسنگ سروسز REST پروٹوکول اور ویب ساکٹ پروٹوکول فراہم کرتی ہیں۔
REST پروٹوکول REST پروٹوکول انٹرفیس مارکیٹ کی معلومات، اکاؤنٹ کی معلومات، انوینٹری کی معلومات، آرڈر کی معلومات وغیرہ کے سوالات کی حمایت کرتا ہے، جو ایف ایم زیڈ پلیٹ فارم پر ایک پلیٹ فارم یونیفارم API انٹرفیس کے طور پر پیک کیا گیا ہے۔
ویب ساکٹ پروٹوکول ایف ایم زیڈ پلیٹ فارم پر ویب ساکٹ کنکشن ، سبسکرپشن مارکیٹ وغیرہ کے بارے میں معلومات بنانے کے لئے ڈائل فنکشن کا استعمال کیا جاسکتا ہے۔
Dydx v4 کے انڈیکس کے ساتھ ایک ہی مسئلہ پر توجہ دینے کی ضرورت ہے ، اعداد و شمار کی تازہ کاری اتنی بروقت نہیں ہوتی ہے ، مثال کے طور پر بعض اوقات آرڈر دینے کے بعد فوری طور پر استفسار کیا جاتا ہے ، اور ممکن ہے کہ آرڈر کی استفسار نہ ہو۔ کچھ کاموں کے بعد مشورہ دیا جاتا ہے۔Sleep(n)
آپ کو کچھ سیکنڈ انتظار کرنا پڑے گا اور کچھ سیکنڈ بعد دوبارہ پوچھیں گے۔
یہاں ایک مثال دی گئی ہے کہ کس طرح ڈائل فنکشن کا استعمال کرتے ہوئے ویب ساکٹ API کنکشن بنانا ہے اور آرڈر پتلی ڈیٹا کو سبسکرائب کرنا ہے:
function dYdXIndexerWSconnManager(streamingPoint) {
var self = {}
self.base = streamingPoint
self.wsThread = null
// 订阅
self.CreateWsThread = function (msgSubscribe) {
self.wsThread = threading.Thread(function (streamingPoint, msgSubscribe) {
// 订单薄
var orderBook = null
// 更新订单薄
var updateOrderbook = function(orderbook, update) {
// 更新 bids
if (update.bids) {
update.bids.forEach(([price, size]) => {
const priceFloat = parseFloat(price)
const sizeFloat = parseFloat(size)
if (sizeFloat === 0) {
// 删除价格为 price 的买单
orderbook.bids = orderbook.bids.filter(bid => parseFloat(bid.price) !== priceFloat)
} else {
// 更新或新增买单
orderbook.bids = orderbook.bids.filter(bid => parseFloat(bid.price) !== priceFloat)
orderbook.bids.push({price: price, size: size})
// 按价格降序排序
orderbook.bids.sort((a, b) => parseFloat(b.price) - parseFloat(a.price))
}
})
}
// 更新 asks
if (update.asks) {
update.asks.forEach(([price, size]) => {
const priceFloat = parseFloat(price)
const sizeFloat = parseFloat(size)
if (sizeFloat === 0) {
// 删除价格为 price 的卖单
orderbook.asks = orderbook.asks.filter(ask => parseFloat(ask.price) !== priceFloat)
} else {
// 更新或新增卖单
orderbook.asks = orderbook.asks.filter(ask => parseFloat(ask.price) !== priceFloat)
orderbook.asks.push({price: price, size: size})
// 按价格升序排序
orderbook.asks.sort((a, b) => parseFloat(a.price) - parseFloat(b.price))
}
})
}
return orderbook
}
var conn = Dial(`${streamingPoint}|reconnect=true&payload=${JSON.stringify(msgSubscribe)}`)
if (!conn) {
Log("createWsThread failed.")
return
}
while (true) {
var data = conn.read()
if (data) {
var msg = null
try {
msg = JSON.parse(data)
if (msg["type"] == "subscribed") {
orderBook = msg["contents"]
threading.currentThread().postMessage(orderBook)
} else if (msg["type"] == "channel_data") {
orderBook = updateOrderbook(orderBook, msg["contents"])
threading.currentThread().postMessage(orderBook)
}
} catch (e) {
Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
}
}
}, streamingPoint, msgSubscribe)
}
// 监听
self.Peek = function () {
return self.wsThread.peekMessage()
}
return self
}
function main() {
// real : wss://indexer.dydx.trade/v4/ws
// simulate : wss://indexer.v4testnet.dydx.exchange/v4/ws
var symbol = "ETH-USD"
var manager = dYdXIndexerWSconnManager("wss://indexer.dydx.trade/v4/ws")
manager.CreateWsThread({"type": "subscribe", "channel": "v4_orderbook", "id": symbol})
var redCode = "#FF0000"
var greenCode = "#006400"
while (true) {
var depthTbl = {type: "table", title: symbol + " / depth", cols: ["level", "price", "amount"], rows: []}
var depth = manager.Peek()
if (depth) {
for (var i = 0; i < depth.asks.length; i++) {
if (i > 9) {
break
}
var ask = depth.asks[i]
depthTbl.rows.push(["asks " + (i + 1) + greenCode, ask.price + greenCode, ask.size + greenCode])
}
depthTbl.rows.reverse()
for (var i = 0; i < depth.bids.length; i++) {
if (i > 9) {
break
}
var bid = depth.bids[i]
depthTbl.rows.push(["bids " + (i + 1) + redCode, bid.price + redCode, bid.size + redCode])
}
}
LogStatus(_D(), "\n`" + JSON.stringify(depthTbl) + "`")
}
}
ٹرانزیکشن میں سب سے زیادہ استعمال ہونے والے پیغامات میں آرڈر میسج، منسوخی میسج اور ٹرانسفر میسج شامل ہیں۔
آرڈر نیوز کا خلاصہ
{
"@type": "/dydxprotocol.clob.MsgPlaceOrder",
"order": {
"orderId": {
"subaccountId": {
"owner": "xxx"
},
"clientId": xxx,
"orderFlags": 64,
"clobPairId": 1
},
"side": "SIDE_BUY",
"quantums": "2000000",
"subticks": "3500000000",
"goodTilBlockTime": 1742295981
}
}
محدود قیمتوں کی فہرست:
ایف ایم زیڈ پلیٹ فارم پر لپیٹ میں لایا گیا آرڈر فلو کی تقریب ، محدود قیمت والے آرڈر کے لئے استعمال ہونے والے آرڈر فلیگز کی قدر:ORDER_FLAGS_LONG_TERM = 64 # 长期订单
ڈی ڈی ایکس وی 4 پروٹوکول کی پابندیوں کے تحت ، سب سے طویل آرڈر کی میعاد 90 دن استعمال کی جاتی ہے۔ (ڈی ڈی ایکس وی 4 پر تمام قسم کے آرڈر کی میعاد ختم ہوتی ہے) ۔
مارکیٹ کی قیمتوں کی فہرست:
ایف ایم زیڈ پلیٹ فارم پر لپیٹے گئے آرڈر فلو فنکشن ، مارکیٹ کی قیمت والے آرڈرز کے لئے استعمال ہونے والے آرڈر فلیگز کی قدر:ORDER_FLAGS_SHORT_TERM = 0 # 短期订单
ڈائڈکس وی 4 پروٹوکول کے مطابق:
// تجویز مقرر کرنے کے لئے اوریکل قیمت - فروخت کے لئے 5٪ یا اس سے کم، اوریکل قیمت + 5٪ خریدنے کے لئے
چونکہ یہ ایک حقیقی مارکیٹ کی فہرست نہیں ہے ، لہذا پیشن گوئی کرنے والے کی قیمت ، اور اس کے علاوہ 5٪ کی کمی کی سلائڈ قیمت کو مارکیٹ کی فہرست کے طور پر استعمال کیا جاتا ہے۔ مختصر آرڈر کی مدت بھی طویل مدتی آرڈر سے مختلف ہے ، مختصر آرڈر بلاک کی اعلی مدت کے لئے استعمال کیا جاتا ہے ، جو ڈی ڈی ایکس وی 4 کی تجویز کے مطابق موجودہ بلاک + 10 بلاک کی اونچائی کے بعد غیر فعال ہوجاتا ہے۔
آرڈر کی شناخت: چونکہ ٹرانسفر کا عمل براہ راست چین میں ہوتا ہے ، لہذا پیغام کی نشریات کے بعد انڈیکس سے تیار کردہ آرڈر آئی ڈی نہیں ہوگی ، اور پلیٹ فارم کے ٹرانسفر فنکشن کی واپسی کی قدر کے طور پر انڈیکس آرڈر کا استعمال نہیں کیا جاسکتا ہے۔ آرڈر آئی ڈی کی انفرادیت اور آرڈر کے استفسار کی درستگی کو یقینی بنانے کے لئے ، واپس آنے والا آرڈر آئی ڈی مندرجہ ذیل معلومات پر مشتمل ہے ((انگریزی میں کوما وقفے):
واپس لینے کا خلاصہ
{
"@type": "/dydxprotocol.clob.MsgCancelOrder",
"orderId": {
"subaccountId": {
"owner": "xxx"
},
"clientId": 2585872024,
"orderFlags": 64,
"clobPairId": 1
},
"goodTilBlockTime": 1742295981
}
ایف ایم زیڈ پلیٹ فارم پر آرڈر کرنے کے لئے انٹرفیس میں آرڈر آئی ڈی کی واپسی کی ضرورت ہے۔
منتقلی کی خبروں کا خلاصہ
{
"@type": "/dydxprotocol.sending.MsgCreateTransfer",
"transfer": {
"sender": {
"owner": "xxx"
},
"recipient": {
"owner": "xxx",
"number": 128
},
"amount": "10000000"
}
}
موجودہ ڈائی ڈی ایکس وی 4 ایڈریس کے تحت بہت سارے ذیلی اکاؤنٹس بنائے جاسکتے ہیں ، جن میں سب اکاؤنٹ نمبر 0 خود بخود تخلیق ہونے والا پہلا ذیلی اکاؤنٹ ہے ، ذیلی اکاؤنٹ نمبر اس سے زیادہ ہے جس کا ذیلی اکاؤنٹ ID 128 کے برابر ہے جو اسٹاک کی قسم کے لئے استعمال ہوتا ہے ، جس میں کم سے کم 20 امریکی ڈالر کی اثاثہ جات کی ضرورت ہوتی ہے۔ مثال کے طور پر، یہ سب اکاؤنٹ نمبر 0 -> 128 سے یا سب اکاؤنٹ نمبر 128 -> 0 سے کیا جا سکتا ہے۔ اسکرولنگ کے لیے گیس فیس کی ضرورت ہوتی ہے۔ گیس فیس کے لیے یو ایس ڈی سی، ڈیڈ ایکس ٹوکن استعمال کیے جا سکتے ہیں۔
مندرجہ بالا کچھ پیکجنگ کی تفصیلات کی وضاحت کرتا ہے، اگلے ہم ایک دوسرے کے ساتھ عملی طور پر استعمال کرتے ہیں، یہاں dYdX v4 کے ٹیسٹ نیٹ ورک کا استعمال کرتے ہوئے ایک مظاہرہ کیا گیا ہے، ٹیسٹ نیٹ ورک بنیادی طور پر مین نیٹ ورک کے ساتھ مطابقت رکھتا ہے، اور خود کار طریقے سے نل ٹیسٹ اثاثوں کو لے سکتا ہے، میزبان کی تعیناتی کے آپریشن کو مزید بیان نہیں کیا جاسکتا ہے، FMZ پر ایک حقیقی ٹیسٹ تخلیق کریں.
کریپٹوکرنسی والیٹ کا استعمال کرتے ہوئے کامیابی کے ساتھ dYdX v4 ایپ سے رابطہ قائم کرنے کے بعد (جس میں میں نے imToken والیٹ کا استعمال کیا ہے) ، ٹیسٹ اثاثہ حاصل کریں ، اور پھر موجودہ dYdX v4 اکاؤنٹ (والٹ سے ماخوذ) کی بچت کا اشارہ کریں۔
ایف ایم زیڈ پلیٹ فارم میں اس کی تشکیل کریں ، جہاں ہم مقامی فائل کی شکل میں تشکیل دیتے ہیں ((یہ بھی براہ راست پُر کیا جاسکتا ہے ، پلیٹ فارم میں تشکیل دیا جاسکتا ہے ، اس کی تشکیل خفیہ کاری کے بعد کی گئی ہے ، واضح نہیں ہے) ۔)
助记词文件:mnemonic.txt
ڈسک ID فولڈر ڈائریکٹری میں میزبان ڈائریکٹری کے تحت رکھا جاتا ہے، اور یقینا آپ کو کسی دوسرے ڈائریکٹری میں بھی رکھا جا سکتا ہے ((ترتیب کے لئے مخصوص راستے لکھنے کی ضرورت ہے) ؛)
ایف ایم زیڈ پر تبادلے کی ترتیب
اس کے علاوہ، آپ کو اپنے آپ کو ایک دوسرے کے ساتھ اشتراک کرنے کی ضرورت نہیں ہے.file:///mnemonic.txt
اس کا مطلب یہ ہے کہ آپ کو اس کے بارے میں کیا سوچنا چاہئے؟托管者所在目录/logs/storage/594291
。
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// 读取账户信息测试
Log(exchange.GetAccount())
}
اس ویب سائٹ کے بارے میں مزید جانیں:
{
"Info": {
"subaccounts": [{
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 0,
"equity": "300.386228",
"latestProcessedBlockHeight": "28193227",
"freeCollateral": "300.386228",
"openPerpetualPositions": {},
"assetPositions": {
"USDC": {
"subaccountNumber": 0,
"size": "300.386228",
"symbol": "USDC",
"side": "LONG",
"assetId": "0"
}
},
"marginEnabled": true,
"updatedAtHeight": "28063818"
}, {
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"equity": "0",
"freeCollateral": "0",
"openPerpetualPositions": {},
"marginEnabled": true,
"subaccountNumber": 1,
"assetPositions": {},
"updatedAtHeight": "27770289",
"latestProcessedBlockHeight": "28193227"
}, {
"equity": "0",
"openPerpetualPositions": {},
"marginEnabled": true,
"updatedAtHeight": "28063818",
"latestProcessedBlockHeight": "28193227",
"subaccountNumber": 128,
"freeCollateral": "0",
"assetPositions": {},
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez"
}],
"totalTradingRewards": "0.021744179376211564"
},
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 300.386228,
"FrozenBalance": 0,
"Equity": 300.386228,
"UPnL": 0
}
ٹیسٹ نیٹ ورک پر سوئچ نہیں کیا، ہوم نیٹ ورک پر ٹیسٹ کیا
function main() {
var markets = exchange.GetMarkets()
if (!markets) {
throw "get markets error"
}
var tbl = {type: "table", title: "test markets", cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"], rows: []}
for (var symbol in markets) {
var market = markets[symbol]
tbl.rows.push([symbol, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// 限价单,挂单
var idSell = exchange.CreateOrder("ETH_USD.swap", "sell", 4000, 0.002)
var idBuy = exchange.CreateOrder("ETH_USD.swap", "buy", 3000, 0.003)
// 市价单
var idMarket = exchange.CreateOrder("ETH_USD.swap", "buy", -1, 0.01)
Log("idSell:", idSell)
Log("idBuy:", idBuy)
Log("idMarket:", idMarket)
}
dYdX v4 ایپ کا صفحہ:
ٹیسٹ نیٹ نے پہلے سے دو آرڈر لگائے ، ٹیسٹ نے موجودہ آرڈر حاصل کیا ، اور آرڈر منسوخ کردیا۔
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var orders = exchange.GetOrders()
Log("orders:", orders)
for (var order of orders) {
exchange.CancelOrder(order.Id, order)
Sleep(2000)
}
var tbl = {type: "table", title: "test GetOrders", cols: ["Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var p1 = exchange.GetPositions("USD.swap")
var p2 = exchange.GetPositions("ETH_USD.swap")
var p3 = exchange.GetPositions()
var p4 = exchange.GetPositions("SOL_USD.swap")
var tbls = []
for (var positions of [p1, p2, p3, p4]) {
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) + "`")
}
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
// subAccountNumber 0 -> 128 : 20 USDC , Gas Fee 为 adv4tnt 即 dydx token
var ret = exchange.IO("transferUSDCToSubaccount", 0, 128, "adv4tnt", 20)
Log("ret:", ret)
// 切换到子账号subAccountNumber 128 ,读取账户信息检查
exchange.IO("subAccountNumber", 128)
var account = exchange.GetAccount()
Log("account:", account)
}
ذیلی اکاؤنٹ نمبر 128 میں تبدیل کرنے کے لئے، GetAccount کے اعداد و شمار واپس:
{
"Info": {
"subaccounts": [{
"subaccountNumber": 0,
"assetPositions": {
"USDC": {
"size": "245.696892",
"symbol": "USDC",
"side": "LONG",
"assetId": "0",
"subaccountNumber": 0
}
},
"updatedAtHeight": "28194977",
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"freeCollateral": "279.5022142346",
"openPerpetualPositions": {
"ETH-USD": {
"closedAt": null,
"size": "0.01",
"maxSize": "0.01",
"exitPrice": null,
"unrealizedPnl": "-0.17677323",
"subaccountNumber": 0,
"status": "OPEN",
"createdAt": "2024-12-26T03:36:09.264Z",
"createdAtHeight": "28194494",
"sumClose": "0",
"netFunding": "0",
"market": "ETH-USD",
"side": "LONG",
"entryPrice": "3467.2",
"realizedPnl": "0",
"sumOpen": "0.01"
}
},
"marginEnabled": true,
"equity": "280.19211877"
}, {
"openPerpetualPositions": {},
"assetPositions": {},
"marginEnabled": true,
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 1,
"equity": "0",
"freeCollateral": "0",
"updatedAtHeight": "27770289"
}, {
"openPerpetualPositions": {},
"updatedAtHeight": "28194977",
"latestProcessedBlockHeight": "28195008",
"address": "dydx1fzsndj35a26maujxff88q2ge5jr4nzfeljn2ez",
"subaccountNumber": 128,
"assetPositions": {
"USDC": {
"assetId": "0",
"subaccountNumber": 128,
"size": "20",
"symbol": "USDC",
"side": "LONG"
}
},
"marginEnabled": true,
"equity": "20",
"freeCollateral": "20"
}],
"totalTradingRewards": "0.021886899964446858"
},
"Stocks": 0,
"FrozenStocks": 0,
"Balance": 20,
"FrozenBalance": 0,
"Equity": 20,
"UPnL": 0
}
آپ دیکھ سکتے ہیں کہ ذیلی اکاؤنٹ نمبر 128 کا ذیلی اکاؤنٹ ہے ، جو 20 امریکی ڈالر میں تبدیل ہوا ہے۔
آرڈر کے مطابق، TxHash حاصل کریں، IO کو REST نوڈس کو کال کرنے کا طریقہ آزمائیں
آرڈر کے TxHash کو کیسے حاصل کیا جائے؟ تبادلے کا اعتراض dydx TxHash کو کیش کرتا ہے اور آرڈر ID کے ساتھ استفسار کیا جاسکتا ہے۔ تاہم ، جب پالیسی کو روک دیا جاتا ہے تو ، کیشڈ آرڈر tx ہیش میپ خالی ہوجاتا ہے۔
function main() {
// 切换测试链的索引器地址
exchange.SetBase("https://indexer.v4testnet.dydx.exchange")
// 切换测试链的ChainId
exchange.IO("chainId", "dydx-testnet-4")
// 切换测试链的REST节点地址
exchange.IO("restApiBase", "https://dydx-testnet-api.polkachu.com")
var id1 = exchange.CreateOrder("ETH_USD.swap", "buy", 3000, 0.002)
var hash1 = exchange.IO("getTxHash", id1)
Log("id1:", id1, "hash1:", hash1)
var id2 = exchange.CreateOrder("ETH_USD.swap", "buy", 2900, 0.003)
var hash2 = exchange.IO("getTxHash", id2)
Log("id2:", id2, "hash2:", hash2)
// 清空映射表可以使用:exchange.IO("getTxHash", "")
var arr = [hash1, hash2]
Sleep(10000)
for (var txHash of arr) {
// GET https://docs.cosmos.network /cosmos/tx/v1beta1/txs/{hash}
var ret = exchange.IO("api", "GET", "/cosmos/tx/v1beta1/txs/" + txHash)
Log("ret:", ret)
}
}
ٹکس ہاش کے ذریعے دریافت کردہ پیغام:
var ret =exchange.IO("api"،
GET ، /cosmos/tx/v1beta1/txs/ + txHash)
یہ بہت لمبا ہے اور اس کا ایک حصہ یہاں پیش کیا گیا ہے:
{
"tx_response": {
"codespace": "",
"code": 0,
"logs": [],
"info": "",
"height": "28195603",
"data": "xxx",
"raw_log": "",
"gas_wanted": "-1",
"gas_used": "0",
"tx": {
"@type": "/cosmos.tx.v1beta1.Tx",
"body": {
"messages": [{
"@type": "/dydxprotocol.clob.MsgPlaceOrder",
"order": {
"good_til_block_time": 1742961542,
"condition_type": "CONDITION_TYPE_UNSPECIFIED",
"order_id": {
"clob_pair_id": 1,
"subaccount_id": {
"owner": "xxx",
"number": 0
},
"client_id": 2999181974,
"order_flags": 64
},
"side": "SIDE_BUY",
"quantums": "3000000",
"client_metadata": 0,
"conditional_order_trigger_subticks": "0",
"subticks": "2900000000",
"time_in_force": "TIME_IN_FORCE_UNSPECIFIED",
"reduce_only": false
}
}],
"memo": "FMZ",
"timeout_height": "0",
"extension_options": [],
"non_critical_extension_options": []
},
...
مندرجہ بالا ٹیسٹ، تازہ ترین میزبان پر مبنی ہے، تازہ ترین میزبان کو ڈاؤن لوڈ کرنے کی ضرورت ہے تاکہ dYdX v4 DEX کی حمایت کریں
آپ کی حمایت کا شکریہ اور پڑھنے کا شکریہ۔