রিসোর্স লোড হচ্ছে... লোডিং...

মাল্টি-প্ল্যাটফর্ম ফিউচার ফান্ড রেট প্রাপ্তি এবং পর্যবেক্ষণ কৌশল

লেখক:উদ্ভাবক পরিমাণ, তারিখঃ 2024-10-24 17:28:55
ট্যাগঃ

মাল্টি-প্ল্যাটফর্ম ফিউচার ফান্ড রেট প্রাপ্তি এবং পর্যবেক্ষণ কৌশল

বর্ণনাঃ

এই কৌশলটি একাধিক ফিউচার প্ল্যাটফর্ম (যেমন OKCoin, Binance, Bitget ইত্যাদি) থেকে মূলধন হার সংগ্রহ এবং পর্যবেক্ষণ করার জন্য ব্যবহৃত হয়। সমান্তরাল থ্রেডের মাধ্যমে প্রতিশ্রুতিবদ্ধ চুক্তির বাজারগুলি অনুসন্ধান করে এবং মূলধন হারের ডেটা অর্জন করে, পাশাপাশি বিলম্ব প্রক্রিয়া ব্যবহার করে অনুরোধের ফ্রিকোয়েন্সি অপ্টিমাইজ করে।

বৈশিষ্ট্যঃ

  • মাল্টি-প্ল্যাটফর্ম সমর্থন: একাধিক ট্রেডিং প্ল্যাটফর্মের জন্য তহবিলের হার সিঙ্ক্রোনাইজ করুন এবং প্রতিটি প্ল্যাটফর্মের জন্য পৃথক অনুরোধ বিলম্ব সেট করুন।
  • নির্দিষ্ট চিহ্ন সংগ্রহ: নির্দিষ্ট লেনদেনের জোড়া (যেমন বিটিসি/ইউএসডিটি, ইটিএইচ/ইউএসডিটি) এর জন্য মূলধন ফি গ্রহণের জন্য সমর্থন।
  • বিভিন্ন প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা: এমন প্ল্যাটফর্মগুলির মধ্যে একটি পার্থক্য রয়েছে যা পৃথক বাজার অনুসন্ধানের প্রয়োজন হয় না (যেমন বিন্যান্স) এবং এমন প্ল্যাটফর্মগুলি যা সমস্ত বাজার জুড়ে যেতে হবে (যেমন ওকেকয়েন) ।

ব্যবহারের পদ্ধতিঃ

আপনি আপনার নির্দিষ্ট লেনদেনের চাহিদা মেটাতে প্ল্যাটফর্ম তালিকা, প্রতীক তালিকা এবং রুটিনের ব্যবধান প্রয়োজন অনুসারে সামঞ্জস্য করতে পারেন।



function startFundingWorker() {
    exchanges.forEach((_, pos) => {
        __Thread(function (pos) {
            let e = exchanges[pos]
            let eName = e.GetName()
            let delaySettings = {
                'Futures_OKCoin': 20,
                'Futures_Binance': 500,
            }
            let needInterate = ['Futures_OKCoin', 'Futures_Bitget','Futures_OKX', 'Futures_KuCoin', 'Futures_MEXC', 'Futures_Crypto', 'Futures_Deribit']
            let delay = function () {
                let n = delaySettings[eName]
                if (n) {
                    Sleep(n)
                }
            }
            let epoch = 60000*2;
            let ts = 0;
            let fundings = {}
            while (true) {
                let now = new Date().getTime()
                if (now - ts < epoch) {
                    Sleep(1000)
                    continue
                }
                let markets = e.GetMarkets()
                if (!markets) {
                    Sleep(1000)
                    continue
                }
                if (needInterate.includes(eName)) {
                    for (let symbol in markets) {
                        if (symbol.includes('.swap')) {
                            let ret = e.GetFundings(symbol)
                            if (ret) {
                                for (let r of ret) {
                                    fundings[r.Symbol] = r
                                }
                            }
                            delay();
                        }
                    }
                } else {
                    let zones = []
                    for (let symbol in markets) {
                        if (symbol.includes('.swap') && !zones.includes(markets[symbol].QuoteAsset)) {
                            zones.push(markets[symbol].QuoteAsset)
                            let ret = e.GetFundings(markets[symbol].QuoteAsset + '.swap')
                            if (ret) {
                                for (let r of ret) {
                                    fundings[r.Symbol] = r
                                }
                            }
                            delay();
                        }
                    }
                }
                ts = now
                __threadSetData(0, eName+"_funding", fundings)
            }
        }, pos)
    })
}

function getFundings(eName, symbols) {
    let fundings = __threadGetData(0, eName+"_funding")
    if (!fundings) {
        return null
    }

    if (typeof(symbols) === 'undefined') {
        return fundings
    }

    let ret = {}
    symbols.forEach((s) => {
        if (fundings[s]) {
            ret[s] = fundings[s]
        }
    })
    return ret
}

function main() {
    startFundingWorker()
    while (true) {
        exchanges.forEach((e) => {
            let eName = e.GetName()
            let fundings = getFundings(eName, ['BTC_USDT.swap', 'ETH_USDT.swap'])
            Log(eName, fundings)
        })
        Sleep(5000)
    }
}

আরও দেখুন