Type/to search
8
Follow
1364
Followers
ایف ایم زیڈ کوانٹیفیکیشن: کرپٹو کرنسی مارکیٹ (I) میں کامن ڈیمانڈ ڈیزائن کی مثالوں کا تجزیہ
Discussions
Created 2023-12-17 18:43:46  Updated 2024-11-06 21:18:36
 3
 2184

img

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

1. میں 4 گھنٹے کے اندر بائنانس اسپاٹ میں سب سے زیادہ اضافے کے ساتھ کرنسی حاصل کرنے کے لیے کوڈ کیسے لکھوں؟

FMZ پر ایک مقداری تجارتی حکمت عملی پروگرام لکھتے وقت، آپ کو پہلے ضروریات کا تجزیہ کرنے کی ضرورت ہوتی ہے۔ لہذا ضروریات کے مطابق، ہم مندرجہ ذیل نکات کا تجزیہ کرتے ہیں:

  • ڈیزائن لکھنے کے لیے کون سی پروگرامنگ زبان استعمال کی جاتی ہے۔
    جاوا اسکرپٹ کا استعمال کرتے ہوئے منصوبہ بند عمل درآمد۔
  • تمام کرنسیوں کے لیے ریئل ٹائم اسپاٹ مارکیٹ ڈیٹا کی ضرورت ہے۔
    جب ہم نے اس ضرورت کو دیکھا، تو ہم نے سب سے پہلے Binance کے API دستاویزات کو دیکھنا تھا تاکہ یہ معلوم کیا جا سکے کہ آیا کوئی مجموعی مارکیٹ ڈیٹا موجود ہے یا نہیں (مجموعی مارکیٹ ڈیٹا بہترین ہوگا، کیونکہ ہر ایک پروڈکٹ کو ایک ایک کرکے چیک کرنا وقت طلب اور محنت طلب ہوگا۔ ایک)۔
    مجموعی مارکیٹ کی معلومات کے انٹرفیس سے استفسار کریں:GET https://api.binance.com/api/v3/ticker/price
    FMZ پر، ایکسچینج کوٹیشن انٹرفیس (عوامی انٹرفیس جس پر دستخط کی ضرورت نہیں ہے) تک رسائی حاصل کریں۔HttpQueryفنکشن
  • 4 گھنٹے کی رولنگ ونڈو پیریڈ کے ڈیٹا کو گننے کی ضرورت ہے۔
    اس شماریاتی پروگرام کی ساخت کے بارے میں سوچیں۔
  • عروج و زوال کا حساب لگائیں، ترتیب دیں۔
    عروج و زوال کے الگورتھم کے بارے میں سوچیں، کیا یہ ہے:涨跌幅百分比 =(当前价格 - 初始价格)/ 初始价格 * 100، یونٹ "%" ہے۔

مسئلہ کے بارے میں سوچیں اور حل کا فیصلہ کریں۔ ہم نے پروگرام کو ڈیزائن کرنا شروع کیا۔

کوڈ ڈیزائن

javascript
var dictSymbolsPrice = {} function main() { while (true) { // GET https://api.binance.com/api/v3/ticker/price try { var arr = JSON.parse(HttpQuery("https://api.binance.com/api/v3/ticker/price")) if (!Array.isArray(arr)) { Sleep(5000) continue } var ts = new Date().getTime() for (var i = 0; i < arr.length; i++) { var symbolPriceInfo = arr[i] var symbol = symbolPriceInfo.symbol var price = symbolPriceInfo.price if (typeof(dictSymbolsPrice[symbol]) == "undefined") { dictSymbolsPrice[symbol] = {name: symbol, data: []} } dictSymbolsPrice[symbol].data.push({ts: ts, price: price}) } } catch(e) { Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message) } // 计算涨跌幅 var tbl = { type : "table", title : "涨跌幅", cols : ["交易对", "当前价格", "4小时前价格", "涨跌幅", "数据长度", "最早数据时间", "最新数据时间"], rows : [] } for (var symbol in dictSymbolsPrice) { var data = dictSymbolsPrice[symbol].data if (data[data.length - 1].ts - data[0].ts > 1000 * 60 * 60 * 4) { dictSymbolsPrice[symbol].data.shift() } data = dictSymbolsPrice[symbol].data dictSymbolsPrice[symbol].percentageChange = (data[data.length - 1].price - data[0].price) / data[0].price * 100 } var entries = Object.entries(dictSymbolsPrice) entries.sort((a, b) => b[1].percentageChange - a[1].percentageChange) for (var i = 0; i < entries.length; i++) { if (i > 9) { break } var name = entries[i][1].name var data = entries[i][1].data var percentageChange = entries[i][1].percentageChange var currPrice = data[data.length - 1].price var currTs = _D(data[data.length - 1].ts) var prePrice = data[0].price var preTs = _D(data[0].ts) var dataLen = data.length tbl.rows.push([name, currPrice, prePrice, percentageChange + "%", dataLen, preTs, currTs]) } LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`") Sleep(5000) } }

کوڈ کا تجزیہ

    1. ڈیٹا کا ڈھانچہ
      var dictSymbolsPrice = {}: ایک خالی چیز جو ہر تجارتی جوڑے کے لیے قیمت کی معلومات ذخیرہ کرنے کے لیے استعمال ہوتی ہے۔ کلید تجارتی جوڑے کی علامت ہے، اور قدر ایک ایسی چیز ہے جس میں تجارتی جوڑے کا نام، قیمت کے اعداد و شمار کی ایک صف، اور معلومات کی تبدیلی ہوتی ہے۔
    1. مین فنکشن مین ()
    • 2.1 لامحدود لوپ

      javascript
      while (true) { // ... }

      یہ پروگرام ایک لامحدود لوپ کے ذریعے Binance API کی تجارتی جوڑی کی قیمتوں کی مسلسل نگرانی کرتا ہے۔

    • 2.2 قیمت کی معلومات حاصل کریں۔

      javascript
      var arr = JSON.parse(HttpQuery("https://api.binance.com/api/v3/ticker/price"))

      Binance API کے ذریعے تجارتی جوڑے کی موجودہ قیمت کی معلومات حاصل کریں۔ اگر واپس کی گئی قدر ایک صف نہیں ہے، تو 5 سیکنڈ انتظار کریں اور دوبارہ کوشش کریں۔

    • 2.3 قیمت کا ڈیٹا اپ ڈیٹ کریں۔

      javascript
      for (var i = 0; i < arr.length; i++) { // ... }

      حاصل کردہ قیمت کی معلومات کی صف کو عبور کریں اور dictSymbolsPrice میں ڈیٹا کو اپ ڈیٹ کریں۔ ہر تجارتی جوڑے کے لیے، موجودہ ٹائم اسٹیمپ اور قیمت متعلقہ ڈیٹا اری میں شامل کریں۔

    • 2.4 مستثنیٰ ہینڈلنگ

      javascript
      } catch(e) { Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message) }

      مستثنیات کو پکڑیں ​​اور استثنیٰ کی معلومات ریکارڈ کریں تاکہ یہ یقینی بنایا جا سکے کہ پروگرام پر عمل درآمد جاری رہ سکتا ہے۔

    • 2.5 اضافہ یا کمی کا حساب لگائیں۔

      javascript
      for (var symbol in dictSymbolsPrice) { // ... }

      ڈیکٹ سمبولس پرائس کو عبور کریں، ہر تجارتی جوڑے کے اضافے یا کمی کا حساب لگائیں، اور اگر ڈیٹا کی لمبائی 4 گھنٹے سے زیادہ ہو جائے تو ابتدائی ڈیٹا کو حذف کر دیں۔

    • 2.6 جدولوں کو ترتیب دینا اور تیار کرنا

      javascript
      var entries = Object.entries(dictSymbolsPrice) entries.sort((a, b) => b[1].percentageChange - a[1].percentageChange) for (var i = 0; i < entries.length; i++) { // ... }

      تجارتی جوڑوں کو اونچائی سے کم کی طرف بڑھنے یا کم کرکے ترتیب دیں، اور تجارتی جوڑے کی معلومات پر مشتمل ایک جدول بنائیں۔

    • 2.7 لاگ آؤٹ پٹ اور تاخیر

      javascript
      LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`") Sleep(5000)

      ٹیبل اور موجودہ وقت کو لاگ فارم میں آؤٹ پٹ کریں، اور اگلے سائیکل کو جاری رکھنے سے پہلے 5 سیکنڈ تک انتظار کریں۔

یہ پروگرام Binance API کے ذریعے تجارتی جوڑے کی اصل وقت کی قیمت کی معلومات حاصل کرتا ہے، پھر اضافہ یا کمی کا حساب لگاتا ہے اور اسے ٹیبل کی شکل میں لاگ میں آؤٹ پٹ کرتا ہے۔ لین دین کے جوڑے کی قیمتوں کی اصل وقتی نگرانی کے فنکشن کو حاصل کرنے کے لیے پروگرام کو ایک مسلسل لوپ میں انجام دیا جاتا ہے۔ واضح رہے کہ پروگرام میں استثنیٰ ہینڈلنگ شامل ہے تاکہ اس بات کو یقینی بنایا جا سکے کہ قیمت کی معلومات حاصل کرتے وقت مستثنیات کی وجہ سے عملدرآمد میں رکاوٹ نہ آئے۔

اصلی ڈسک آپریشن ٹیسٹ

img

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

2. تمام Binance U- مارجن فیوچر معاہدوں کی فنڈنگ ​​کی شرح چیک کریں۔

فنڈنگ ​​کی شرح کے بارے میں پوچھنا اوپر والے کوڈ سے ملتا جلتا ہے، پہلے آپ کو فنڈنگ ​​کی شرح سے متعلق انٹرفیس تلاش کرنے کے لیے Binance کے API دستاویزات کو چیک کرنے کی ضرورت ہے۔ بائننس کے پاس فنڈنگ ​​کی شرح کے بارے میں پوچھ گچھ کے لیے کئی انٹرفیس ہیں یہاں ہم مثال کے طور پر U-based معاہدوں کا انٹرفیس لیتے ہیں۔

GET https://fapi.binance.com/fapi/v1/premiumIndex

کوڈ کا نفاذ

چونکہ بہت سارے معاہدے ہیں، ہم یہاں سب سے زیادہ فنڈنگ ​​کی شرحوں کے ساتھ ٹاپ ٹین کو آؤٹ پٹ کرتے ہیں۔

javascript
function main() { while (true) { // GET https://fapi.binance.com/fapi/v1/premiumIndex try { var arr = JSON.parse(HttpQuery("https://fapi.binance.com/fapi/v1/premiumIndex")) if (!Array.isArray(arr)) { Sleep(5000) continue } arr.sort((a, b) => parseFloat(b.lastFundingRate) - parseFloat(a.lastFundingRate)) var tbl = { type: "table", title: "U本位合约资金费率前十", cols: ["合约", "资金费率", "标记价格", "指数价格", "当期费率时间", "下期费率时间"], rows: [] } for (var i = 0; i < 9; i++) { var obj = arr[i] tbl.rows.push([obj.symbol, obj.lastFundingRate, obj.markPrice, obj.indexPrice, _D(obj.time), _D(obj.nextFundingTime)]) } LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`") } catch(e) { Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message) } Sleep(1000 * 10) } }

واپس کردہ ڈیٹا کا ڈھانچہ درج ذیل ہے Binance دستاویزات سے، ہم دیکھ سکتے ہیں کہ lastFundingRate وہ فنڈنگ ​​ریٹ ہے جو ہم چاہتے ہیں۔

javascript
{ "symbol":"STMXUSDT", "markPrice":"0.00883606", "indexPrice":"0.00883074", "estimatedSettlePrice":"0.00876933", "lastFundingRate":"0.00026573", "interestRate":"0.00005000", "nextFundingTime":1702828800000, "time":1702816229000 }

اصلی ڈسک آپریشن ٹیسٹ:

img

OKX ایکسچینج کنٹریکٹ فنڈنگ ​​ریٹ حاصل کرنے کا ازگر کا ورژن

ایک صارف نے بتایا کہ ایک ازگر ورژن کی ضرورت ہے، اور یہ OKX ایکسچینج سے ہے۔ یہاں بھی طریقہ سے لاگو کیا جاتا ہے:

https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1انٹرفیس کے ذریعے واپس کیا گیا ڈیٹا:

python
{ "code":"0", "data":[ { "fundingTime":1702828800000, "fundingList":[ { "instId":"BTC-USDT-SWAP", "nextFundingRate":"0.0001102188733642", "minFundingRate":"-0.00375", "fundingRate":"0.0000821861465884", "maxFundingRate":"0.00375" } ...

مخصوص کوڈ:

python
import requests import json from time import sleep from datetime import datetime def main(): while True: # https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1 try: response = requests.get("https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1") arr = response.json()["data"][0]["fundingList"] Log(arr) if not isinstance(arr, list): sleep(5) continue arr.sort(key=lambda x: float(x["fundingRate"]), reverse=True) tbl = { "type": "table", "title": "U本位合约资金费率前十", "cols": ["合约", "下期费率", "最小", "当期", "最大"], "rows": [] } for i in range(min(9, len(arr))): obj = arr[i] row = [ obj["instId"], obj["nextFundingRate"], obj["minFundingRate"], obj["fundingRate"], obj["maxFundingRate"] ] tbl["rows"].append(row) LogStatus(_D(), "\n", '`' + json.dumps(tbl) + '`') except Exception as e: Log(f"Error: {str(e)}") sleep(10)

اصلی ڈسک آپریشن ٹیسٹ:

img

END

یہ مثالیں بنیادی ڈیزائن آئیڈیاز اور کال کرنے کے طریقے فراہم کرتی ہیں، اصل پروجیکٹس میں، مخصوص ضروریات کی بنیاد پر مناسب ترمیم اور توسیع کی ضرورت ہو سکتی ہے۔ مجھے امید ہے کہ یہ کوڈز آپ کو cryptocurrency ڈیجیٹل اثاثہ جات کی تجارت میں مختلف ضروریات کو بہتر طریقے سے پورا کرنے میں مدد کر سکتے ہیں۔

Comment
All comments (3)

    期待小梦老师 尽快出一个@监控账户资产变动的案例

    3 years ago

    好的,这个在计划内。

    3 years ago

    点赞

    3 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)