Type/to search
8
Follow
1364
Followers
DEX ایکسچینج مقداری مشق (4) - WOOFi / EdgeX حکمت عملی تک رسائی ٹیسٹ
Discussions
Created 2025-04-10 15:36:06  Updated 2025-04-11 13:35:33
 0
 991

img

پچھلے کچھ مضامین میں، ہم نے مرکزی دھارے کے DEXs تک رسائی پر تبادلہ خیال کیا ہے، اور یہ مضمون اصل استعمال پر توجہ مرکوز کرے گا اور حقیقی حکمت عملی کی تعیناتی کے ٹیسٹ کرائے گا۔ FMZ پلیٹ فارم نے حال ہی میں WOOFi اور EdgeX وکندریقرت تبادلے کے لیے تعاون شامل کیا ہے۔ اس مضمون میں، ہم ان دو تبادلوں پر کچھ آسان تدریسی حکمت عملیوں کو چلانے کی مشق کریں گے۔

WOOFi

اپنے بٹوے کو WOOFi پر جوڑیں، اور پھر API KEY صفحہ پر، آپ API کلیدی معلومات دیکھ سکتے ہیں، اسے کاپی اور پیسٹ کر سکتے ہیں اور اسے FMZ پر کنفیگر کر سکتے ہیں۔

FMZ کا تازہ ترین میزبان استعمال کریں، جو پہلے سے ہی WOOFi DEX اور EdgeX DEX کو سپورٹ کرتا ہے، ڈاؤن لوڈ اور تعیناتی کے بعد۔ صفحہ پر ایکسچینج آبجیکٹ کو ترتیب دیں: https://www.fmz.com/m/platforms/add، اور WOOFi کی AccountId، AccessKey، اور SecretKey کو ترتیب دیں۔

اس ٹیسٹ میں، ہم نے استعمال کیا aبنیادی مارکیٹ بنانے کی حکمت عملی پروٹو ٹائپمارکیٹ کے اتار چڑھاؤ کے اشارے (ATR) کے ساتھ مل کر، زیر التواء آرڈرز کے درمیان وقفہ کو متحرک طور پر شمار کیا جاتا ہے، اور پوزیشنوں کی ذہین شناخت اور بند ہونے والی پوزیشنوں پر ترجیح کے ساتھ آرڈر پلیسنگ منطق کا ادراک کیا جاتا ہے۔ حکمت عملی ہر دور میں آرڈر بک کو تازہ کرتی ہے، گہرائی اور پوزیشن کی معلومات کو دوبارہ حاصل کرتی ہے، اور مقررہ قیمت کے وقفے اور آرڈر کی مقدار کے مطابق آرڈر دیتی ہے۔ پورے عمل کا احاطہ کرتا ہے:

  • ریئل ٹائم مارکیٹ کی معلومات نکالنا اور اشارے کا تجزیہ؛
  • طویل اور مختصر دونوں سمتوں میں زیر التواء آرڈرز کا منطقی کنٹرول؛
  • اختتامی اور افتتاحی پوزیشنوں کا فیصلہ اور موڑ؛
  • عہدوں اور اکاؤنٹ کی حیثیت کا بصری آؤٹ پٹ۔

اس حکمت عملی کے ذریعے، ہم WOOFi پر حقیقی لین دین کی کارکردگی، آرڈر میں تاخیر، اور مماثلت کے تجربے کا مشاہدہ کر سکتے ہیں، اور مزید پیچیدہ حکمت عملیوں کے بعد کے ڈیزائن کی بنیاد رکھ سکتے ہیں۔

ہم WOOFi کا ٹیسٹ ماحول اور ٹیسٹ نیٹ ورک استعمال کرتے ہیں: Arbitrum Sepolia۔

exchange.SetBase("https://testnet-api.orderly.org")

WOOFi ٹیسٹ نیٹ ورک پر ایک ٹونٹی ہے جو آپ کو آسانی سے جانچ کے لیے USDC حاصل کرنے کی اجازت دیتی ہے۔

حکمت عملی کوڈ:

javascript
function createOrders(e, symbol, side, ordersNum, beginPrice, firstAmount, spacing, pos) { if (side == "buy" || side == "closesell") { if (spacing > 0) { throw "spacing error" } } else if (side == "sell" || side == "closebuy") { if (spacing < 0) { throw "spacing error" } } else { throw "side error" } var holdAmount = 0 if (pos) { holdAmount = pos.Amount } var amount = firstAmount for (var i = 0 ; i < ordersNum ; i++) { var id = null amount = amount * 2 var price = beginPrice + i * spacing if (price <= 0 || amount <= 0) { Log("continue loop:", price, amount, "#FF0000") continue } if (holdAmount - amount >= 0) { id = e.CreateOrder(symbol, side == "buy" ? "closesell" : "closebuy", price, holdAmount) holdAmount = 0 } else { id = e.CreateOrder(symbol, side, price, amount) } Sleep(100) } } function cancelAll(e, symbol) { while (true) { var orders = _C(e.GetOrders, symbol) var sideOrders = [] for (var o of orders) { sideOrders.push(o) } if (sideOrders.length == 0) { break } for (var o of sideOrders) { e.CancelOrder(o.Id, o) } Sleep(500) } } function main() { LogReset(1) LogProfitReset() exchange.SetBase("https://testnet-api.orderly.org") // 参数 var symbol = "ETH_USDC.swap" var ordersNum = 5 var orderAmount = 0.01 var priceSpace = 0 // 初始化 exchange.SetPrecision(2, 3) var msg = [] var buyOrdersNum = ordersNum var sellOrdersNum = ordersNum while (true) { cancelAll(exchange, symbol) var r = _C(exchange.GetRecords, symbol, 60 * 5) var art = TA.ATR(r, 20) priceSpace = art[art.length - 1] var pos = _C(exchange.GetPositions, symbol) // depth var depth = _C(exchange.GetDepth, symbol) if (depth.Bids.length == 0 || depth.Asks.length == 0) { msg.push("invalid depth") } else { var bid1Price = depth.Bids[0].Price var ask1Price = depth.Asks[0].Price var longPos = null var shortPos = null for (var p of pos) { if (p.Type == PD_LONG) { longPos = p } else if (p.Type == PD_SHORT) { shortPos = p } } // long createOrders(exchange, symbol, "buy", buyOrdersNum, bid1Price, orderAmount, -priceSpace, shortPos) // short createOrders(exchange, symbol, "sell", sellOrdersNum, ask1Price, orderAmount, priceSpace, longPos) } var acc = _C(exchange.GetAccount) var orders = _C(exchange.GetOrders, symbol) LogProfit(acc.Equity, "&") var posTbl = {"type": "table", "title": "pos", "cols": ["Symbol", "Type", "Price", "Amount"], "rows": []} for (var p of pos) { posTbl["rows"].push([p.Symbol, p.Type == PD_LONG ? "多" : "空", p.Price, p.Amount]) } var ordersTbl = {"type": "table", "title": "orders", "cols": ["Symbol", "Type", "Price", "Amount"], "rows": []} for (var o of orders) { ordersTbl["rows"].push([o.Symbol, o.Type == ORDER_TYPE_BUY ? "买" : "卖", o.Price, o.Amount]) } LogStatus(_D(), "priceSpace:", priceSpace, "\n`" + JSON.stringify([posTbl, ordersTbl]) + "`") Sleep(1000 * 60) LogReset(1000) } }

WOOFi پر حکمت عملی کی مشق

img

img

img

EdgeX

FMZ پر EdgeX کو ترتیب دینے کے لیے API کی معلومات بنیادی طور پر WOOFi کے لیے جیسی ہے، لیکن مختلف تبادلے کے لیے مختلف API معلومات درکار ہوتی ہیں۔ EdgeX پر، آپ کو صرف AccountId اور SecretKey کو کنفیگر کرنے کی ضرورت ہے۔ EdgeX فرنٹ اینڈ سے جڑنے کے لیے والیٹ کا استعمال کرنے کے بعد انہیں اکاؤنٹ API مینجمنٹ پیج پر بھی دیکھا جا سکتا ہے۔

EdgeX پر ہم جس حکمت عملی کو نافذ کرنے جا رہے ہیں اس پر مبنی ہے۔ملٹی لیئر بولنگر بینڈزریورس اوپننگ + مڈ ٹریک کلوزنگ کی مقداری تجارتی منطق قلیل مدتی اتار چڑھاؤ کا ادراک کر سکتی ہے۔

حکمت عملی بہت آسان ہے، بنیادی خیال یہ ہے:

  • متعدد بولنگر اسٹینڈرڈ ڈیوی ایشنز کو استعمال کرتے ہوئے، مارکیٹ کے اتار چڑھاؤ کی شدت کا اندازہ لگایا جا سکتا ہے۔
  • عہدوں کو کھولنے اور بڑھانے کی ایک منطق ہے۔ کامیابی جتنی مضبوط ہوگی، پوزیشن اتنی ہی بڑی ہوگی۔
  • پوزیشنوں کو بند کرنے کے لیے ایک واضح منطق ہے، اور جب پوزیشن درمیانی ٹریک پر واپس آجائے گی تو آپ دستبردار ہو جائیں گے۔
  • حجم معیاری انحراف کثیر کے متناسب ہے: مضبوط بریک آؤٹ بڑی پوزیشنوں کی طرف لے جاتے ہیں۔

آپ شاید اس پر یقین نہ کریں، لیکن FMZ پر مکمل حکمت عملی لکھنے میں صرف 50 لائنوں کا کوڈ لگتا ہے۔ بڑے AI ماڈلز کی موجودہ ترقی نے حکمت عملی کے ڈیزائن کی حد کو بہت کم کر دیا ہے۔ ہم نے جن حکمت عملی کے خیالات کا تجربہ کیا ہے وہ آسانی سے AI کے ذریعہ تیار کیا جا سکتا ہے، اور تحریری معیار کافی ہے۔ صرف یہ ہے کہ دستی اصلاح کی ضرورت ہے، لیکن اس نے عام لوگوں کے لیے مقداری تجارتی ٹیکنالوجی کے استعمال کی حد کو بہت کم کر دیا ہے۔

حکمت عملی کوڈ:

javascript
function main() { var symbol = "ETH_USDT.swap" var arrUp = [] var arrDown = [] let c = KLineChart({ overlay: true }) while (true) { var bolls = [] var r = _C(exchange.GetRecords, symbol) for (var i = 0; i < 3; i++) { var boll = TA.BOLL(r, 20, i + 1) bolls.push(boll) var up = boll[0][boll[0].length - 1] var mid = boll[1][boll[1].length - 1] var down = boll[2][boll[2].length - 1] var close = r[r.length - 1].Close if (close > up && i >= arrUp.length) { exchange.CreateOrder(symbol, "sell", -1, 0.01 * (i + 1)) arrUp.push({"symbol": symbol, "amount": 0.01 * (i + 1)}) } else if (close < down && i >= arrDown.length) { exchange.CreateOrder(symbol, "buy", -1, 0.01 * (i + 1)) arrDown.push({"symbol": symbol, "amount": 0.01 * (i + 1)}) } else if ((arrUp.length > 0 && close < mid) || (arrDown.length > 0 && close > mid)) { var pos = exchange.GetPositions(symbol) for (var p of pos) { if (p.Type == PD_LONG) { exchange.CreateOrder(symbol, "closebuy", -1, p.Amount) } else if (p.Type == PD_SHORT) { exchange.CreateOrder(symbol, "closesell", -1, p.Amount) } } arrUp = [] arrDown = [] } } r.forEach(function(bar, index) { c.begin(bar) for (var i in bolls) { var b = bolls[i] c.plot(b[0][index], 'up_' + (i + 1)) c.plot(b[1][index], 'mid_' + (i + 1)) c.plot(b[2][index], 'down_' + (i + 1)) } c.close() }) LogStatus(_D(), "\n", arrUp, "\n", arrDown) Sleep(500) } }

آئیے پہلے ایک طویل مدتی بیک ٹیسٹ کریں:

img

img

EdgeX ٹیسٹ تعینات کریں۔

img

END

مذکورہ بالا حکمت عملی صرف تدریسی اور تحقیقی مقاصد کے لیے ہیں۔ براہ کرم ان کا اطلاق کرتے وقت محتاط رہیں۔ پڑھنے کے لیے آپ کا شکریہ۔

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)