Tài nguyên đang được tải lên... tải...

nhiều chủ đề nhận được tài trợ biểu tượng

Tác giả:Nhà phát minh định lượng, Ngày: 2024-10-24 17:28:55
Tags:

Chiến lược thu thập và giám sát tỷ lệ tài trợ tương lai đa nền tảng

Mô tả:

Chiến lược này lấy và theo dõi tỷ lệ tài trợ trên nhiều nền tảng tương lai (ví dụ: OKCoin, Binance, Bitget). Nó sử dụng các chủ đề song song để thăm dò thị trường hợp đồng vĩnh cửu trên các sàn giao dịch khác nhau và lấy dữ liệu tỷ lệ tài trợ, với cơ chế trì hoãn để tối ưu hóa tần suất yêu cầu.

Đặc điểm:

  • Hỗ trợ đa nền tảng: Đồng bộ hóa tỷ lệ tài trợ từ một số nền tảng giao dịch, mỗi nền tảng có thời gian yêu cầu tùy chỉnh.
  • Trả về cụ thể biểu tượng: Cho phép truy xuất tỷ lệ tài trợ cho các cặp giao dịch cụ thể (ví dụ: BTC/USDT, ETH/USDT).
  • Tối ưu hóa cho các nền tảng khác nhau: Phân biệt giữa các nền tảng đòi hỏi lặp lại trên các thị trường riêng lẻ (ví dụ: OKCoin) và những nền tảng không (ví dụ: Binance).

Sử dụng:

Bạn có thể điều chỉnh danh sách nền tảng, danh sách biểu tượng và khoảng thời gian thăm dò để phù hợp với các yêu cầu giao dịch cụ thể của bạn.



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

Thêm nữa