وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ایک سے زیادہ تھریڈ حاصل فنڈنگ علامتوں

مصنف:ایجاد کنندہ کوانٹائزیشن، تاریخ: 2024-10-24 17:28:55
ٹیگز:

ملٹی پلیٹ فارم فیوچر فنڈنگ کی شرح کی بازیافت اور نگرانی کی حکمت عملی

تفصیل:

یہ حکمت عملی متعدد فیوچر پلیٹ فارمز (جیسے ، او کے کوئن ، بائننس ، بٹ جیٹ) میں فنڈنگ کی شرحوں کو بازیافت اور مانیٹر کرتی ہے۔ یہ متوازی موضوعات کا استعمال مختلف تبادلے پر دائمی معاہدے کی منڈیوں کو پول کرنے اور فنڈنگ کی شرح کے اعداد و شمار کو بازیافت کرنے کے لئے کرتا ہے ، جس میں درخواست کی تعدد کو بہتر بنانے کے لئے تاخیر کا طریقہ کار ہوتا ہے۔

خصوصیات:

  • ملٹی پلیٹ فارم سپورٹ: کئی ٹریڈنگ پلیٹ فارمز سے فنڈنگ کی شرح کو ہم آہنگ کرتا ہے، ہر ایک اپنی مرضی کے مطابق درخواست تاخیر کے ساتھ.
  • علامت مخصوص بازیافت: مخصوص ٹریڈنگ جوڑوں کے لئے فنڈنگ کی شرحوں کی بازیافت کی اجازت دیتا ہے (مثال کے طور پر، بی ٹی سی/یو ایس ڈی ٹی، ای ٹی ایچ/یو ایس ڈی ٹی) ۔
  • مختلف پلیٹ فارمز کے لئے بہتر: پلیٹ فارمز کے درمیان فرق کرتا ہے جن کو انفرادی منڈیوں پر تکرار کی ضرورت ہوتی ہے (مثال کے طور پر ، OKCoin) اور ان لوگوں کو جو نہیں کرتے ہیں (مثال کے طور پر ، بائننس) ۔

استعمال:

آپ اپنی مخصوص تجارتی ضروریات کے مطابق پلیٹ فارم کی فہرست، علامتوں کی فہرست اور پولنگ کے وقفے کو ایڈجسٹ کرسکتے ہیں۔



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

مزید