
کریپٹو کرنسی اثاثہ جات کی تجارت کے میدان میں، مارکیٹ کے ڈیٹا کو حاصل کرنا اور اس کا تجزیہ کرنا، شرحوں کی جانچ کرنا، اور اکاؤنٹ کے اثاثوں کی تبدیلیوں کی نگرانی کرنا سبھی اہم کام ہیں۔ کچھ عام تقاضوں کو نافذ کرنے کے لیے درج ذیل کوڈ کی مثالیں ہیں۔
FMZ پر ایک مقداری تجارتی حکمت عملی پروگرام لکھتے وقت، آپ کو پہلے ضروریات کا تجزیہ کرنے کی ضرورت ہوتی ہے۔ لہذا ضروریات کے مطابق، ہم مندرجہ ذیل نکات کا تجزیہ کرتے ہیں:
GET https://api.binance.com/api/v3/ticker/price。
FMZ پر، ایکسچینج کوٹیشن انٹرفیس (عوامی انٹرفیس جس پر دستخط کی ضرورت نہیں ہے) تک رسائی حاصل کریں۔HttpQueryفنکشن涨跌幅百分比 =(当前价格 - 初始价格)/ 初始价格 * 100، یونٹ “%” ہے۔مسئلہ کے بارے میں سوچیں اور حل کا فیصلہ کریں۔ ہم نے پروگرام کو ڈیزائن کرنا شروع کیا۔
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 = {}: ایک خالی چیز جو ہر تجارتی جوڑے کے لیے قیمت کی معلومات ذخیرہ کرنے کے لیے استعمال ہوتی ہے۔ کلید تجارتی جوڑے کی علامت ہے، اور قدر ایک ایسی چیز ہے جس میں تجارتی جوڑے کا نام، قیمت کے اعداد و شمار کی ایک صف، اور معلومات کی تبدیلی ہوتی ہے۔
while (true) {
// ...
}
یہ پروگرام ایک لامحدود لوپ کے ذریعے Binance API کی تجارتی جوڑی کی قیمتوں کی مسلسل نگرانی کرتا ہے۔
var arr = JSON.parse(HttpQuery("https://api.binance.com/api/v3/ticker/price"))
Binance API کے ذریعے تجارتی جوڑے کی موجودہ قیمت کی معلومات حاصل کریں۔ اگر واپس کی گئی قدر ایک صف نہیں ہے، تو 5 سیکنڈ انتظار کریں اور دوبارہ کوشش کریں۔
for (var i = 0; i < arr.length; i++) {
// ...
}
حاصل کردہ قیمت کی معلومات کی صف کو عبور کریں اور dictSymbolsPrice میں ڈیٹا کو اپ ڈیٹ کریں۔ ہر تجارتی جوڑے کے لیے، موجودہ ٹائم اسٹیمپ اور قیمت متعلقہ ڈیٹا اری میں شامل کریں۔
} catch(e) {
Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
مستثنیات کو پکڑیں اور استثنیٰ کی معلومات ریکارڈ کریں تاکہ یہ یقینی بنایا جا سکے کہ پروگرام پر عمل درآمد جاری رہ سکتا ہے۔
for (var symbol in dictSymbolsPrice) {
// ...
}
ڈیکٹ سمبولس پرائس کو عبور کریں، ہر تجارتی جوڑے کے اضافے یا کمی کا حساب لگائیں، اور اگر ڈیٹا کی لمبائی 4 گھنٹے سے زیادہ ہو جائے تو ابتدائی ڈیٹا کو حذف کر دیں۔
var entries = Object.entries(dictSymbolsPrice)
entries.sort((a, b) => b[1].percentageChange - a[1].percentageChange)
for (var i = 0; i < entries.length; i++) {
// ...
}
تجارتی جوڑوں کو اونچائی سے کم کی طرف بڑھنے یا کم کرکے ترتیب دیں، اور تجارتی جوڑے کی معلومات پر مشتمل ایک جدول بنائیں۔
LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(5000)
ٹیبل اور موجودہ وقت کو لاگ فارم میں آؤٹ پٹ کریں، اور اگلے سائیکل کو جاری رکھنے سے پہلے 5 سیکنڈ تک انتظار کریں۔
یہ پروگرام Binance API کے ذریعے تجارتی جوڑے کی اصل وقت کی قیمت کی معلومات حاصل کرتا ہے، پھر اضافہ یا کمی کا حساب لگاتا ہے اور اسے ٹیبل کی شکل میں لاگ میں آؤٹ پٹ کرتا ہے۔ لین دین کے جوڑے کی قیمتوں کی اصل وقتی نگرانی کے فنکشن کو حاصل کرنے کے لیے پروگرام کو ایک مسلسل لوپ میں انجام دیا جاتا ہے۔ واضح رہے کہ پروگرام میں استثنیٰ ہینڈلنگ شامل ہے تاکہ اس بات کو یقینی بنایا جا سکے کہ قیمت کی معلومات حاصل کرتے وقت مستثنیات کی وجہ سے عملدرآمد میں رکاوٹ نہ آئے۔

چونکہ شروع میں صرف تھوڑا سا ڈیٹا اکٹھا کیا جا سکتا ہے، اس لیے اگر 4 گھنٹے کے لیے کافی ڈیٹا اکٹھا نہ کیا گیا ہو تو اسے رولنگ کی بنیاد پر عروج و زوال کا حساب لگانا ناممکن ہے۔ اس لیے، شروع میں، ابتدائی قیمت کو حساب کے لیے معیار کے طور پر استعمال کیا جاتا ہے، 4 گھنٹے کے لیے کافی ڈیٹا اکٹھا کرنے کے بعد، عروج اور زوال کے حساب کے لیے 4 گھنٹے کی کھڑکی کی مدت کو برقرار رکھنے کے لیے ایک ایک کرکے سب سے قدیم ڈیٹا کو ختم کیا جاتا ہے۔
فنڈنگ کی شرح کے بارے میں پوچھنا اوپر والے کوڈ سے ملتا جلتا ہے، پہلے آپ کو فنڈنگ کی شرح سے متعلق انٹرفیس تلاش کرنے کے لیے Binance کے API دستاویزات کو چیک کرنے کی ضرورت ہے۔ بائننس کے پاس فنڈنگ کی شرح کے بارے میں پوچھ گچھ کے لیے کئی انٹرفیس ہیں یہاں ہم مثال کے طور پر U-based معاہدوں کا انٹرفیس لیتے ہیں۔
GET https://fapi.binance.com/fapi/v1/premiumIndex
چونکہ بہت سارے معاہدے ہیں، ہم یہاں سب سے زیادہ فنڈنگ کی شرحوں کے ساتھ ٹاپ ٹین کو آؤٹ پٹ کرتے ہیں۔
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 وہ فنڈنگ ریٹ ہے جو ہم چاہتے ہیں۔
{
"symbol":"STMXUSDT",
"markPrice":"0.00883606",
"indexPrice":"0.00883074",
"estimatedSettlePrice":"0.00876933",
"lastFundingRate":"0.00026573",
"interestRate":"0.00005000",
"nextFundingTime":1702828800000,
"time":1702816229000
}
اصلی ڈسک آپریشن ٹیسٹ:

ایک صارف نے بتایا کہ ایک ازگر ورژن کی ضرورت ہے، اور یہ OKX ایکسچینج سے ہے۔ یہاں بھی طریقہ سے لاگو کیا جاتا ہے:
https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1انٹرفیس کے ذریعے واپس کیا گیا ڈیٹا:
{
"code":"0",
"data":[
{
"fundingTime":1702828800000,
"fundingList":[
{
"instId":"BTC-USDT-SWAP",
"nextFundingRate":"0.0001102188733642",
"minFundingRate":"-0.00375",
"fundingRate":"0.0000821861465884",
"maxFundingRate":"0.00375"
} ...
مخصوص کوڈ:
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)
اصلی ڈسک آپریشن ٹیسٹ:

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