یہ حکمت عملی متعدد فیوچر پلیٹ فارمز (جیسے ، او کے کوئن ، بائننس ، بٹ جیٹ) میں فنڈنگ کی شرحوں کو بازیافت اور مانیٹر کرتی ہے۔ یہ متوازی موضوعات کا استعمال مختلف تبادلے پر دائمی معاہدے کی منڈیوں کو پول کرنے اور فنڈنگ کی شرح کے اعداد و شمار کو بازیافت کرنے کے لئے کرتا ہے ، جس میں درخواست کی تعدد کو بہتر بنانے کے لئے تاخیر کا طریقہ کار ہوتا ہے۔
آپ اپنی مخصوص تجارتی ضروریات کے مطابق پلیٹ فارم کی فہرست، علامتوں کی فہرست اور پولنگ کے وقفے کو ایڈجسٹ کرسکتے ہیں۔
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) } }