javascript - 使用套接字或 REST 获取一定时间间隔内多个代币的平均交易量

标签 javascript node.js binance cryptocurrency

我正在尝试使用 Binance API 获取特定时间间隔内的平均交易量。例如,我想要一个平均交易量,其中时间范围的定义如下(伪代码):

startTime = now() - 24h - 20 min
endTime = now() - 20 min

我必须对 200 个交易对(例如所有 USDT 相关交易对)执行此操作。

我知道我可以对每个符号 ( https://github.com/binance/binance-spot-api-docs/blob/master/rest-api.md#klinecandlestick-data ) 进行一次 API 调用,以使用 REST 获取此数据,如下所示:

  async function getKline(marketSymbol, timeInterval, limit) {
    var url = 'https://api.binance.com/api/v3/klines?symbol=' + marketSymbol
                   + '&interval=' + timeInterval
                   + '&startTime' + startTime
                   + '&endTime' + endTime
                   + '&limit=' + limit;
    
    const response = await fetch(url);
    const data = await response.json();
    
    return data;
  }

但由于我必须每分钟执行一次此操作,因此每分钟将有 200 个 API 调用。我已经使用套接字每两秒获取 200 对烛台数据。

所以我猜使用 REST api/v3/klines 性能不高,也不是一种可行的方法。我的意思是我知道这个请求的请求 weight 等于 1,我可能会接受限制和限制,但是,还有其他方法可以实现吗?获取多个代币在一定时间间隔内的平均交易量(例如在一个请求中),或者以除了每分钟进行那么多 API 调用之外的任何方式?

最佳答案

由于您已经使用了 200 对套接字,因此您不需要任何其他 API 调用。这是 klines 的套接字响应:

{
  "e": "kline",     // Event type
  "E": 123456789,   // Event time
  "s": "BTCUSDT",    // Symbol
  "k": {
    "t": 123400000, // Kline start time
    "T": 123460000, // Kline close time
    "s": "BTCUSDT",  // Symbol
    "i": "1m",      // Interval
    "f": 100,       // First trade ID
    "L": 200,       // Last trade ID
    "o": "0.0010",  // Open price
    "c": "0.0020",  // Close price
    "h": "0.0025",  // High price
    "l": "0.0015",  // Low price
    "v": "1000",    // Base asset volume
    "n": 100,       // Number of trades
    "x": false,     // Is this kline closed?
    "q": "1.0000",  // Quote asset volume
    "V": "500",     // Taker buy base asset volume
    "Q": "0.500",   // Taker buy quote asset volume
    "B": "123456"   // Ignore
  }
}

这样您就拥有了所需的所有数据。您可以从网络套接字保存所有烛台并计算交易量的平均值。这样,如果您必须计算 24 小时内的交易量平均值,则需要等待 24 小时数据收集,否则您可以创建第一个配置方法,该方法首先调用该方法来计算所有 200 个品种的历史数据并进行权重计算。如果 150 个调用更大,那么您必须等待其他 50 个调用的最大重量。

不幸的是,binance 不支持多品种调用

关于javascript - 使用套接字或 REST 获取一定时间间隔内多个代币的平均交易量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69135405/

相关文章:

javascript - 如何将数据从一个 Controller 传递到服务并在同一事件中访问其他 Controller 上的数据?

javascript - 与谷歌脚本一起使用时,币安搜索 API 返回 403

javascript - 广义 Curry - Javascript

javascript - 将 ESLint 升级到 ECMA6 Brackets IDE

node.js - 如何调用作为 Docker 容器部署在 Linux 机器上的 Rest-Endpoint

node.js - Mongoose 在哪里查询 "or"

python - 币安交割 future 历史价格

python - Binance python websocket - 无响应

javascript - webpack & ES6 - 有条件的导入和导出

javascript - 具有多个值打开和关闭的选择框