Sumber dimuat naik... memuat...

pelbagai benang mendapatkan simbol pembiayaan

Penulis:Pencipta Kuantiti, Tarikh: 2024-10-24 17:28:55
Tag:

Strategi Pemulihan dan Pemantauan Kadar Pembiayaan Futures Multi-Platform

Penerangan:

Strategi ini mengambil dan memantau kadar pembiayaan di pelbagai platform niaga hadapan (contohnya, OKCoin, Binance, Bitget). Ia menggunakan benang selari untuk mengundi pasaran kontrak kekal di pelbagai bursa dan mengambil data kadar pembiayaan, dengan mekanisme kelewatan untuk mengoptimumkan kekerapan permintaan.

Ciri:

  • Sokongan pelbagai platform: Menyenkronkan kadar pembiayaan dari beberapa platform dagangan, masing-masing dengan kelewatan permintaan tersuai.
  • Pemulihan khusus simbol: Membolehkan pengambilan kadar pembiayaan untuk pasangan dagangan tertentu (contohnya, BTC/USDT, ETH/USDT).
  • Dioptimumkan untuk pelbagai platform: Membezakan antara platform yang memerlukan pengulangan di pasaran individu (contohnya, OKCoin) dan yang tidak (contohnya, Binance).

Penggunaan:

Anda boleh menyesuaikan senarai platform, senarai simbol, dan selang pengundian untuk memenuhi keperluan perdagangan khusus anda.



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

Lebih lanjut