मल्टी-प्लेटफॉर्म फ्यूचर्स फंडिंग दर अधिग्रहण और निगरानी रणनीति


निर्माण तिथि: 2024-10-24 17:28:55 अंत में संशोधित करें: 2024-10-24 18:36:42
कॉपी: 0 क्लिक्स: 887
11
ध्यान केंद्रित करना
607
समर्थक

मल्टी-प्लेटफॉर्म फ्यूचर्स फंडिंग दर अधिग्रहण और निगरानी रणनीति

वर्णन करना:

इस रणनीति का उपयोग कई फ्यूचर्स प्लेटफार्मों जैसे कि ओकेकॉइन, बिनेंस, बिटगेट आदि से फंडिंग दरों को प्राप्त करने और निगरानी करने के लिए किया जाता है। समानांतर धागों के माध्यम से विभिन्न एक्सचेंजों के सतत अनुबंध बाजारों का सर्वेक्षण करें और अनुरोध आवृत्ति को अनुकूलित करने के लिए विलंब तंत्र का उपयोग करते हुए फंडिंग दर डेटा प्राप्त करें।

समारोह:

  • बहु-प्लेटफ़ॉर्म समर्थन: विभिन्न एक्सचेंजों में फंडिंग दरों को सिंक्रनाइज़ करें और प्रत्येक के लिए अलग-अलग अनुरोध विलंब निर्धारित करें।
  • विशिष्ट प्रतीक अधिग्रहणविशिष्ट ट्रेडिंग जोड़े (जैसे बीटीसी/यूएसडीटी, ईटीएच/यूएसडीटी) के लिए फंडिंग दर प्राप्त करने का समर्थन करता है।
  • विभिन्न प्लेटफार्मों के लिए अनुकूलित: उन प्लेटफार्मों के बीच अंतर करें जिन्हें प्रत्येक बाजार को एक-एक करके क्वेरी करने की आवश्यकता नहीं है (जैसे कि बिनेंस) और उन प्लेटफार्मों को जिन्हें सभी बाजारों को पार करने की आवश्यकता है (जैसे कि ओकेकॉइन)।

दिशा-निर्देश:

आप अपनी विशिष्ट ट्रेडिंग आवश्यकताओं को पूरा करने के लिए प्लेटफॉर्म सूची, प्रतीक सूची और मतदान अंतराल को आवश्यकतानुसार समायोजित कर सकते हैं।

रणनीति स्रोत कोड

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)
    }
}