Diese Strategie erhebt und überwacht die Finanzierungssätze auf mehreren Futures-Plattformen (z. B. OKCoin, Binance, Bitget). Sie verwendet parallele Threads, um die Perpetual Contract-Märkte an verschiedenen Börsen zu befragen und die Finanzierungssatzdaten abzurufen, mit einem Verzögerungsmechanismus zur Optimierung der Anforderungsfrequenz.
Sie können die Plattformliste, Symbolliste und Umfrageintervalle an Ihre spezifischen Handelsanforderungen anpassen.
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) } }