ক্রিপ্টোকারেন্সি সম্পদের লেনদেনের ক্ষেত্রে, বাজার তথ্য, অনুসন্ধান হার এবং অ্যাকাউন্টের সম্পদ পরিবর্তনের পর্যবেক্ষণের অ্যাক্সেস এবং বিশ্লেষণ গুরুত্বপূর্ণ অপারেশন। নীচে কিছু সাধারণ প্রয়োজনের বাস্তবায়নের জন্য কোডের উদাহরণ রয়েছে।
এফএমজেডে কোয়ালিফাইড ট্রেডিং স্ট্র্যাটেজি প্রোগ্রাম লেখার সময়, চাহিদা প্রথমে বিশ্লেষণ করা প্রয়োজন। সুতরাং চাহিদার ভিত্তিতে আমরা নিম্নলিখিতগুলি বিশ্লেষণ করিঃ
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) {
// ...
}
প্রোগ্রামটি একটি সীমাহীন লুপের মাধ্যমে বরাবরই বিয়ানান্স এপিআইয়ের লেনদেনের দাম পর্যবেক্ষণ করে।var arr = JSON.parse(HttpQuery("https://api.binance.com/api/v3/ticker/price"))
বিন্যান্স এপিআই-এর মাধ্যমে লেনদেনের জোড়ার বর্তমান মূল্যের তথ্য পান। যদি এটি একটি অ্যারে না হয় তবে 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 সেকেন্ডের জন্য অপেক্ষা করুন এবং পরবর্তী চক্র চালিয়ে যান।প্রোগ্রামটি বিয়ানান্স এপিআই-এর মাধ্যমে একটি ট্রেড প্যারের রিয়েল-টাইম মূল্যের তথ্য পায়, তারপরে প্যাচডাউন গণনা করে এবং এটি টেবিলের আকারে লগগুলিতে প্রেরণ করে। প্রোগ্রামটি চলমান লুপের মাধ্যমে কার্যকর হয়, যার ফলে রিয়েল-টাইম ট্র্যাডিংয়ের মূল্য পর্যবেক্ষণ করা যায়। এটি লক্ষ্য করা উচিত যে প্রোগ্রামটি ব্যতিক্রমী হ্যান্ডলিং অন্তর্ভুক্ত করে যাতে এটি নিশ্চিত হয় যে দামের তথ্য পাওয়ার সময় ব্যতিক্রমী কারণে কার্যকর হওয়া বন্ধ হয় না।
যেহেতু শুরুতে ডেটা একটানা সংগ্রহ করা হয়, তাই ৪ ঘন্টার ডেটা সংগ্রহ না করা হলে স্ক্রোল করা যায় না। সুতরাং শুরুতে একটি প্রাথমিক মূল্যের ভিত্তিতে গণনা করা হয়, ৪ ঘন্টা ডেটা সংগ্রহের পরে, সবচেয়ে পুরানো ডেটাটি ধারাবাহিকভাবে মুছে ফেলা হয়।
মূলধন হার অনুসন্ধান এবং উপরের কোড তুলনা অনুরূপ, প্রথমত, মূলধন হার সম্পর্কিত ইন্টারফেসগুলি খুঁজে পেতে বাইনান এর এপিআই ডকুমেন্টেশনটি দেখতে হবে।
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)
}
}
বিয়ানাম ডকুমেন্টেশন দেখুন এবং 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)
রিয়েল ডিস্ক চালানোর পরীক্ষাঃ
এই উদাহরণগুলি মৌলিক নকশা ধারণা, কলিং পদ্ধতি এবং বাস্তব প্রকল্পগুলিতে নির্দিষ্ট প্রয়োজনের ভিত্তিতে যথাযথ পরিবর্তন এবং প্রসারণের প্রয়োজন হতে পারে। আশা করি এই কোডগুলি আপনাকে ক্রিপ্টোকারেন্সি ডিজিটাল সম্পদ লেনদেনের বিভিন্ন চাহিদা আরও ভালভাবে পূরণ করতে সহায়তা করবে।
98K-ব্যাংড ট্র্যাকিং_লংআশা করছি, যত তাড়াতাড়ি সম্ভব শিক্ষকেরা একটি @Monitoring অ্যাকাউন্টের সম্পদের পরিবর্তন ঘটানোর ঘটনা প্রকাশ করবেন।
98K-ব্যাংড ট্র্যাকিং_লংপ্রশংসা
উদ্ভাবকগণ - ক্যোটিফিকেশন - ছোট্ট স্বপ্নঠিক আছে, এটা পরিকল্পনার মধ্যে রয়েছে।