کریپٹوکرنسی اثاثوں کی تجارت کے میدان میں ، مارکیٹ کے اعداد و شمار ، استفسار کی شرحوں اور اکاؤنٹ کے اثاثوں میں تبدیلیوں کی نگرانی کے حصول اور تجزیہ کے لئے اہم آپریشن ہیں۔ ذیل میں کچھ عام ضروریات کے لئے عمل درآمد کے لئے کوڈ کیسز ہیں۔
ایف ایم زیڈ پر مقداری تجارتی حکمت عملی کے پروگرام لکھتے وقت ، ضروریات کا تجزیہ کرنے کی ضرورت ہے۔ لہذا ، ضروریات کے مطابق ، ہم مندرجہ ذیل نکات کا تجزیہ کرتے ہیں:
GET https://api.binance.com/api/v3/ticker/price
◄
ایف ایم زیڈ پر ، ایکسچینج مارکیٹ انٹرفیس (پبلک انٹرفیس جس میں دستخط کی ضرورت نہیں ہے) تک رسائی حاصل کریں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)
}
}
var dictSymbolsPrice = {}
: ایک خالی شے جو ہر ٹریڈنگ جوڑی کے لئے قیمت کی معلومات کو ذخیرہ کرنے کے لئے استعمال ہوتی ہے۔ کلید ٹریڈنگ جوڑی کی علامت ہے ، قدر ایک شے ہے جس میں ٹریڈنگ جوڑی کا نام ، قیمت کے اعداد و شمار کی صفیں اور گرنے کی معلومات شامل ہیں۔while (true) {
// ...
}
یہ پروگرام ایک لامحدود لوپ کے ذریعے بائننس API کی قیمتوں کی مسلسل نگرانی کرتا ہے۔var arr = JSON.parse(HttpQuery("https://api.binance.com/api/v3/ticker/price"))
بائننس 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 گھنٹے کی ونڈو کی مدت میں برقرار رکھنے کے لئے حساب لگایا جاتا ہے۔
کیپٹل ریٹ اور مندرجہ بالا کوڈ کے مقابلے میں کچھ اسی طرح کی ہے، سب سے پہلے آپ کو بینان کے API دستاویزات کو دیکھنے کی ضرورت ہے تاکہ آپ کو بینان کی شرح سے متعلقہ انٹرفیس مل سکے۔ بینان میں کئی انٹرفیس ہیں جن سے آپ کیپٹل ریٹ کو تلاش کرسکتے ہیں، یہاں ہم یو بٹ معاہدے کے انٹرفیس کی مثال دیتے ہیں:
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)
}
}
یہ اعداد و شمار کی ساخت کو واپس کرتا ہے، اور بائنن دستاویزات کو دیکھنے کے بعد یہ معلوم ہوتا ہے کہ آخری فنڈنگ کی شرح وہی ہے جو ہم چاہتے ہیں۔
{
"symbol":"STMXUSDT",
"markPrice":"0.00883606",
"indexPrice":"0.00883074",
"estimatedSettlePrice":"0.00876933",
"lastFundingRate":"0.00026573",
"interestRate":"0.00005000",
"nextFundingTime":1702828800000,
"time":1702816229000
}
ریئل ڈسک پر ٹیسٹ:
ایک صارف نے ایک مثال پیش کی ہے جس میں پطرون ورژن کی ضرورت ہوتی ہے اور یہ او کے ایکس ایکس ایکسچینج ہے۔
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)
ریئل ڈسک پر ٹیسٹ:
یہ مثالیں بنیادی ڈیزائن کے خیالات ، کال کرنے کے طریقوں کو فراہم کرتی ہیں ، جن کو عملی منصوبوں میں مخصوص ضروریات کے مطابق مناسب ترمیم اور توسیع کی ضرورت ہوسکتی ہے۔ امید ہے کہ یہ کوڈ آپ کو کریپٹوکرنسی ڈیجیٹل اثاثوں کی تجارت میں مختلف ضروریات کو بہتر طور پر پورا کرنے میں مدد فراہم کریں گے۔
98K-بگنڈ ٹریکنگ_ لانگہم امید کرتے ہیں کہ استاد چھوٹی خواب جلد از جلد ایک @ مانیٹرنگ اکاؤنٹ اثاثوں کی تبدیلی کا معاملہ نکالیں گے۔
98K-بگنڈ ٹریکنگ_ لانگتعریف
ایجاد کاروں کی مقدار - خواباچھا، یہ منصوبہ بندی میں ہے۔