ক্রিপ্টোকারেন্সি সম্পদ ট্রেডিং স্পেসে, বাজারের ডেটা অর্জন এবং বিশ্লেষণ, অনুসন্ধান হার এবং অ্যাকাউন্টের সম্পদ চলাচলের পর্যবেক্ষণ সমস্ত সমালোচনামূলক অপারেশন। নীচে কিছু সাধারণ প্রয়োজনীয়তার জন্য বাস্তবায়নের কোড উদাহরণ রয়েছে।
FMZ প্ল্যাটফর্মে একটি পরিমাণগত ট্রেডিং কৌশল প্রোগ্রাম লেখার সময়, যখন আপনি একটি প্রয়োজনীয়তার মুখোমুখি হন তখন আপনাকে প্রথমে যা করতে হবে তা হ'ল এটি বিশ্লেষণ করা। সুতরাং প্রয়োজনীয়তার ভিত্তিতে, আমরা নিম্নলিখিত সামগ্রীগুলি বিশ্লেষণ করেছিঃ
GET https://api.binance.com/api/v3/ticker/price
.
FMZ প্ল্যাটফর্মে,HttpQuery
এক্সচেঞ্জ টিকার ইন্টারফেস অ্যাক্সেস করার জন্য ফাংশন (পাবলিক ইন্টারফেস যা স্বাক্ষরের প্রয়োজন হয় না) ।price fluctuations (%) = (current price - initial price) / initial price * 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)
}
// Calculate price fluctuations
var tbl = {
type : "table",
title : "Price fluctuations",
cols : ["trading pair", "current price", "price 4 hours ago", "price fluctuations", "data length", "earliest data time", "latest data time"],
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"))
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) {
// ...
}
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 সেকেন্ড অপেক্ষা করুন।
প্রোগ্রামটি বাইনারেন্স এপিআই এর মাধ্যমে ট্রেডিং জোড়ার রিয়েল-টাইম মূল্য তথ্য অর্জন করে, তারপরে দামের ওঠানামা গণনা করে এবং এটি একটি টেবিলের আকারে লগটিতে আউটপুট করে। প্রোগ্রামটি ট্রেডিং জোড়ার দামের রিয়েল-টাইম পর্যবেক্ষণের কার্যকারিতা উপলব্ধি করতে অবিচ্ছিন্ন লুপে চালিত হয়। লক্ষ্য করুন যে প্রোগ্রামটিতে ব্যতিক্রম প্রক্রিয়াকরণ অন্তর্ভুক্ত রয়েছে যাতে নিশ্চিত করা যায় যে দামের তথ্য পাওয়ার সময় ব্যতিক্রম দ্বারা কার্যকরকরণ বিঘ্নিত হয় না।
যেহেতু ডেটা কেবলমাত্র শুরুতে বিট-বিট সংগ্রহ করা যায়, তাই 4 ঘন্টা উইন্ডোর জন্য পর্যাপ্ত ডেটা সংগ্রহ না করে চলমান ভিত্তিতে দামের ওঠানামা গণনা করা সম্ভব নয়। অতএব, প্রাথমিক দামটি গণনার ভিত্তি হিসাবে ব্যবহৃত হয় এবং 4 ঘন্টা পর্যাপ্ত ডেটা সংগ্রহের পরে, দামের ওঠানামা গণনার জন্য 4 ঘন্টা উইন্ডো বজায় রাখার জন্য প্রাচীনতম ডেটা বাদ দেওয়া হবে।
তহবিলের হার যাচাই করা উপরের কোডের অনুরূপ, সর্বোপরি, তহবিলের হারের সাথে সম্পর্কিত ইন্টারফেসটি খুঁজে পেতে আমাদের বিন্যান্স এপিআই ডকুমেন্টেশনটি পরীক্ষা করতে হবে। বিন্যান্সে বেশ কয়েকটি ইন্টারফেস রয়েছে যা আমাদের তহবিলের হারের অনুসন্ধান করতে দেয়, এখানে আমরা উদাহরণ হিসাবে ইউ নামক চুক্তির ইন্টারফেসটি নিইঃ
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: "Top 10 funding rates for U-denominated contracts",
cols: ["contracts", "funding rate", "marked price", "index price", "current rate time", "next rate time"],
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": "Top 10 funding rates for U-denominated contracts",
"cols": ["contracts", "next rate", "minimum", "current", "maximum"],
"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)
লাইভ ট্রেডিং রানিং টেস্টঃ
এই উদাহরণগুলি মৌলিক নকশা ধারণা এবং কলিং পদ্ধতি প্রদান করে, প্রকৃত প্রকল্পের নির্দিষ্ট প্রয়োজনের উপর ভিত্তি করে উপযুক্ত পরিবর্তন এবং এক্সটেনশন করতে হবে। আশা করি, এই কোডগুলি আপনাকে ক্রিপ্টোকারেন্সি ডিজিটাল সম্পদ ব্যবসায়ের বিভিন্ন চাহিদা আরও ভালভাবে পূরণ করতে সহায়তা করতে পারে।