وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈی ای ایکس ایکسچینج کی کوانٹیٹیشن پریکٹس ((1) -- dYdX v4 استعمال کرنے کا رہنما

مصنف:ایجاد کاروں کی مقدار - خواب, تخلیق: 2024-12-24 17:09:32, تازہ کاری: 2024-12-26 21:41:46

[TOC]

img

پیش گوئی

ڈی ای ایکس (DEX) کے تیزی سے عروج کے ساتھ ، کوانٹیفیکیشن ٹریڈرز نے تیزی سے ان پلیٹ فارمز کی طرف رجوع کرنا شروع کیا ہے۔ ڈی وائی ڈی ایکس ، جو کہ سب سے زیادہ مقبول ڈی وائی ڈی ٹریڈنگ پلیٹ فارمز میں سے ایک ہے ، طاقتور ٹریڈنگ کی خصوصیات پیش کرتا ہے ، مستقبل کے مستقل معاہدوں کی تجارت کی حمایت کرتا ہے ، اور اس کا تازہ ترین ورژن وی 4 کارکردگی اور صارف کے تجربے کو بہتر بناتا ہے ، جو بہت سے کوانٹیفیکیشن ٹریڈرز کے لئے پسندیدہ ہے۔

اس مضمون میں ہم آپ کو بتائیں گے کہ ڈی وائی ڈی ایکس وی 4 پر تجارتی طریقوں کو کس طرح مقدار میں کیا جاسکتا ہے ، بشمول اس کے اے پی پی کا استعمال کرکے تجارت ، مارکیٹ کے اعداد و شمار اور اکاؤنٹس کا نظم کرنا۔

  • ٹیسٹ ماحول سوئچنگ
  • مارکیٹ کے بارے میں معلومات حاصل کریں
  • آرڈر کی معلومات، ذخیرہ اندوزی کی معلومات
  • معاہدہ
  • ذیلی اکاؤنٹس کا انتظام
  • نوڈ طریقہ کی درخواست

dYdX v4 DEX

  • dYdX ٹیسٹنگ ویب ایپ پیج

    img

  • اورdYdX v3اس کے علاوہ، تجارت سے انعام ملتا ہے.dYdXٹوکن۔

    img

بٹوے کا رابطہ، لاگ ان، اور ترتیب

پہلے dYdX v3 پروٹوکول DEX تبادلے سے دور ہے، اب dYdX v4 اپلی کیشن ایڈریس:

https://dydx.trade/trade/ETH-USD

ایپ کے صفحے کو کھولنے کے بعد ، اوپری دائیں کونے میں بٹن ہے جو بٹوے کو مربوط کرتا ہے ، اسکرین کوڈ جو بٹوے کو مربوط کرتا ہے۔

اگر آپ پہلے ٹیسٹ نیٹ ماحول کی جانچ سے واقف ہونا چاہتے ہیں تو ، آپ ٹیسٹ نیٹ استعمال کرسکتے ہیں:

https://v4.testnet.dydx.exchange/trade/ETH-USD

اسی طرح دائیں اوپر والے کونے پر کلک کریں بٹوے کو مربوط کریں ، بٹوے کو مربوط کریں ، دستخط کی توثیق کریں۔ بٹوے کو مربوط کرنے کے بعد کامیابی کے بعد ، ایک dydx v4 ایڈریس خود بخود تیار ہوجائے گا۔ ایپ کے صفحے کے دائیں اوپر والے کونے میں ، اس ایڈریس کو دکھایا جائے گا ، کلک کرنے کے بعد ایک مینو پاپ اپ ہوگا۔ اس میں چارج ، ٹکٹ ، ٹرانسفر وغیرہ کی کارروائییں ہیں۔ dYdX ہوم نیٹ ورک (پیداوار کا ماحول) ٹیسٹ نیٹ ورک سے ایک فرق یہ ہے کہ: ٹیسٹ نیٹ ورک پر کلک کریں چارج کریں ، ٹیسٹ کے لئے 300 USDC اثاثوں میں خود بخود نل کا استعمال کریں گے۔ اگر آپ dYdX پر حقیقی تجارت کرنا چاہتے ہیں تو ، آپ کو USDC اثاثوں میں بھاگنے کی ضرورت ہے ، قیمت بھی بہت آسان ہے ، متعدد اثاثوں کی زنجیروں کو چارج کرنے کے قابل ہے۔

  • dYdX v4 اکاؤنٹ ایڈریس dYdX v4 اکاؤنٹ ایڈریس والیٹ ایڈریس سے ماخوذ ہے، dYdX v4 اکاؤنٹ ایڈریس کچھ اس طرح نظر آتا ہے:dydx1xxxxxxxxxxxxxxxxxxxxq2ge5jr4nzfeljxxxx، dydx1 کے آغاز کا پتہ ہے۔ یہ پتہ بلاکچین ایکسپلوررز میں پوچھا جا سکتا ہے۔

  • معاون الفاظ موجودہ ڈی وائی ڈی ایکس ایڈریس اکاؤنٹ کے پاس ورڈ کو برآمد کرنے کے لئے اوپری دائیں کونے کے مینو میں "پاس ورڈ برآمد کریں" کے بٹن پر کلک کریں۔ جب آپ ایف ایم زیڈ پلیٹ فارم میں تبادلہ شامل کرتے ہیں تو اس پاس ورڈ کو تشکیل دینے کی ضرورت ہوتی ہے۔

    اس کے علاوہ، آپ کو FMZ پلیٹ فارم میں براہ راست تشکیل دے سکتے ہیں، یا مقامی طور پر منتظمین کو برقرار رکھنے کے قابل ہو سکتے ہیں.

ہوم نیٹ ورک، ٹیسٹ نیٹ ورک کے اختلافات

ٹیسٹ نیٹ کے ماحول میں کچھ پہلوؤں میں مرکزی نیٹ کے ماحول سے کچھ اختلافات ہیں، جن میں سے کچھ کی ایک مختصر فہرست درج ذیل ہے۔

  • اس کے علاوہ، اس کے پاس ایک چھوٹا سا اکاؤنٹ بھی ہے. اس ویب سائٹ پر موجود صارفین کے اکاؤنٹ کو صاف کرنے کا طریقہ کار بھی موجود ہے۔subAccountNumber >= 128اگر اس آئی ڈی کا ذیلی اکاؤنٹ ذخیرہ میں نہیں ہے تو ، یہ خود بخود ذیلی اکاؤنٹ کو ذیلی اکاؤنٹ نمبر 0 میں صاف کردے گا۔ ٹیسٹ میں پتہ چلا کہ ٹیسٹ نیٹ ورک میں ایسا کوئی طریقہ کار نہیں ہے (یا ٹرگر کی شرائط مختلف ہیں ، ٹیسٹ نیٹ ورک میں ٹرگر نہیں ہوا ہے) ۔
  • کچھ ٹوکن ناموں کا نام۔ اصل ٹوکن dydx کا نام مختلف ہے: مرکزی ویب سائٹDYDXٹیسٹ نیٹ ورکDv4TNT
  • ایڈریس کی ترتیبات ، جیسے چین آئی ڈی ، نوڈ ایڈریس ، انڈیکس ایڈریس وغیرہ۔ اس کے علاوہ ، آپ کو اپنے صارفین کے لئے مختلف قسم کے نوڈس اور ترتیبات تلاش کرنے کی ضرورت ہوگی۔
    • ہوم پیج: انڈیکس ایڈریس:https://indexer.dydx.tradeچین آئی ڈی:dydx-mainnet-1REST نوڈ:https://dydx-dao-api.polkachu.com:443

    • ٹیسٹ نیٹ: انڈیکس ایڈریس:https://indexer.v4testnet.dydx.exchangeچین آئی ڈی:dydx-testnet-4REST نوڈ:https://dydx-testnet-api.polkachu.com

dYdX v4 پروٹوکول فن تعمیر

dYdX v4 پروٹوکول کائنات کی ماحولیاتی ترقی پر مبنی ہے ، dYdX v4 DEX سسٹم کے ساتھ تجارت سے متعلق مواد میں بنیادی طور پر 2 حصے شامل ہیں:

  • یہ انڈیکس مارکیٹ کی معلومات، اکاؤنٹ کی معلومات وغیرہ کے لئے ذمہ دار ہے۔
  • dydx بلاکچین آرڈر کی خبریں ، واپسی کی خبریں ، ٹرانسفر کی خبریں وغیرہ۔

انڈیکس

انڈیکسنگ سروسز 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) + "`")
    }
}

dYdX چینل نوڈس نیوز براڈکاسٹ

ٹرانزیکشن میں سب سے زیادہ استعمال ہونے والے پیغامات میں آرڈر میسج، منسوخی میسج اور ٹرانسفر میسج شامل ہیں۔

  • آرڈر نیوز کا خلاصہ

    {
      "@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 بلاک کی اونچائی کے بعد غیر فعال ہوجاتا ہے۔

    • آرڈر کی شناخت: چونکہ ٹرانسفر کا عمل براہ راست چین میں ہوتا ہے ، لہذا پیغام کی نشریات کے بعد انڈیکس سے تیار کردہ آرڈر آئی ڈی نہیں ہوگی ، اور پلیٹ فارم کے ٹرانسفر فنکشن کی واپسی کی قدر کے طور پر انڈیکس آرڈر کا استعمال نہیں کیا جاسکتا ہے۔ آرڈر آئی ڈی کی انفرادیت اور آرڈر کے استفسار کی درستگی کو یقینی بنانے کے لئے ، واپس آنے والا آرڈر آئی ڈی مندرجہ ذیل معلومات پر مشتمل ہے ((انگریزی میں کوما وقفے):

      • معاہدہ
      • dydx اکاؤنٹ کا موجودہ پتہ
      • ذیلی اکاؤنٹ نمبر
      • کلائنٹ آئی ڈی (بے ترتیب پیدا)
      • clobPairId (ٹرانزیکشن کی اقسام کی شناخت)
      • حکمپرچم
      • goodTilData ((ملی سیکنڈ)
  • واپس لینے کا خلاصہ

    {
      "@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 سے کیا جا سکتا ہے۔ اسکرولنگ کے لیے گیس فیس کی ضرورت ہوتی ہے۔ گیس فیس کے لیے یو ایس ڈی سی، ڈیڈ ایکس ٹوکن استعمال کیے جا سکتے ہیں۔

FMZ پلیٹ فارم dYdX v4 پریکٹس

مندرجہ بالا کچھ پیکجنگ کی تفصیلات کی وضاحت کرتا ہے، اگلے ہم ایک دوسرے کے ساتھ عملی طور پر استعمال کرتے ہیں، یہاں dYdX v4 کے ٹیسٹ نیٹ ورک کا استعمال کرتے ہوئے ایک مظاہرہ کیا گیا ہے، ٹیسٹ نیٹ ورک بنیادی طور پر مین نیٹ ورک کے ساتھ مطابقت رکھتا ہے، اور خود کار طریقے سے نل ٹیسٹ اثاثوں کو لے سکتا ہے، میزبان کی تعیناتی کے آپریشن کو مزید بیان نہیں کیا جاسکتا ہے، FMZ پر ایک حقیقی ٹیسٹ تخلیق کریں.

1، ترتیب

کریپٹوکرنسی والیٹ کا استعمال کرتے ہوئے کامیابی کے ساتھ dYdX v4 ایپ سے رابطہ قائم کرنے کے بعد (جس میں میں نے imToken والیٹ کا استعمال کیا ہے) ، ٹیسٹ اثاثہ حاصل کریں ، اور پھر موجودہ dYdX v4 اکاؤنٹ (والٹ سے ماخوذ) کی بچت کا اشارہ کریں۔

img

ایف ایم زیڈ پلیٹ فارم میں اس کی تشکیل کریں ، جہاں ہم مقامی فائل کی شکل میں تشکیل دیتے ہیں ((یہ بھی براہ راست پُر کیا جاسکتا ہے ، پلیٹ فارم میں تشکیل دیا جاسکتا ہے ، اس کی تشکیل خفیہ کاری کے بعد کی گئی ہے ، واضح نہیں ہے) ۔)

  • 助记词文件:mnemonic.txt

    img

    ڈسک ID فولڈر ڈائریکٹری میں میزبان ڈائریکٹری کے تحت رکھا جاتا ہے، اور یقینا آپ کو کسی دوسرے ڈائریکٹری میں بھی رکھا جا سکتا ہے ((ترتیب کے لئے مخصوص راستے لکھنے کی ضرورت ہے) ؛)

  • ایف ایم زیڈ پر تبادلے کی ترتیب

    https://www.fmz.com/m/platforms/add

    اس کے علاوہ، آپ کو اپنے آپ کو ایک دوسرے کے ساتھ اشتراک کرنے کی ضرورت نہیں ہے.file:///mnemonic.txtاس کا مطلب یہ ہے کہ آپ کو اس کے بارے میں کیا سوچنا چاہئے؟托管者所在目录/logs/storage/594291

    img

2، 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")

    // 读取账户信息测试
    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
}

3، مارکیٹ کے بارے میں معلومات حاصل کریں

ٹیسٹ نیٹ ورک پر سوئچ نہیں کیا، ہوم نیٹ ورک پر ٹیسٹ کیا

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

img

4، نیچے کی فہرست

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

img

dYdX v4 ایپ کا صفحہ:

img

5، آرڈر کی معلومات

ٹیسٹ نیٹ نے پہلے سے دو آرڈر لگائے ، ٹیسٹ نے موجودہ آرڈر حاصل کیا ، اور آرڈر منسوخ کردیا۔

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

img

6، ذخیرہ اندوزی کے بارے میں معلومات حاصل کریں

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

img

7، ذیلی اکاؤنٹس کا انتظام

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

img

ذیلی اکاؤنٹ نمبر 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 امریکی ڈالر میں تبدیل ہوا ہے۔

8، TxHash حاصل کریں، REST نوڈ انٹرفیس کو کال کریں

آرڈر کے مطابق، 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)
    }
}

img

ٹکس ہاش کے ذریعے دریافت کردہ پیغام:

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 کی حمایت کریں

آپ کی حمایت کا شکریہ اور پڑھنے کا شکریہ۔


مزید