ملٹی پلیٹ فارم فیوچر فنڈنگ ​​ریٹ کے حصول اور نگرانی کی حکمت عملی


تخلیق کی تاریخ: 2024-10-24 17:28:55 آخر میں ترمیم کریں: 2024-10-24 18:36:42
کاپی: 0 کلکس کی تعداد: 887
11
پر توجہ دیں
607
پیروکار

ملٹی پلیٹ فارم فیوچر فنڈنگ ​​ریٹ کے حصول اور نگرانی کی حکمت عملی

بیان کریں:

یہ حکمت عملی متعدد فیوچر پلیٹ فارمز جیسے OKCoin، Binance، Bitget، وغیرہ سے فنڈنگ ​​کی شرح حاصل کرنے اور ان کی نگرانی کے لیے استعمال ہوتی ہے۔ متوازی دھاگوں کے ذریعے مختلف ایکسچینجز کے دائمی کنٹریکٹ مارکیٹس کی رائے شماری کریں اور درخواست کی فریکوئنسی کو بہتر بنانے کے لیے تاخیری طریقہ کار کا استعمال کرتے ہوئے فنڈنگ ​​کی شرح کا ڈیٹا حاصل کریں۔

فنکشن:

  • ملٹی پلیٹ فارم سپورٹ: متعدد ایکسچینجز میں فنڈنگ ​​کی شرحوں کو ہم آہنگ کریں اور ہر ایک کے لیے مختلف درخواست میں تاخیر مقرر کریں۔
  • مخصوص علامت کا حصول: مخصوص تجارتی جوڑوں (جیسے BTC/USDT، ETH/USDT) کے لیے فنڈنگ ​​کی شرح حاصل کرنے کی حمایت کرتا ہے۔
  • مختلف پلیٹ فارمز کے لیے آپٹمائزڈ: ان پلیٹ فارمز کے درمیان فرق کریں جنہیں ہر ایک مارکیٹ سے ایک ایک کرکے پوچھنے کی ضرورت نہیں ہے (جیسے Binance) اور پلیٹ فارمز جن کو تمام مارکیٹوں (جیسے 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)
    }
}