我想获取币安的历史价格,例如BTC/USDT 在特定时间精确到秒,例如2021-01-12 14:44:32 或 1610462672000。
这是为了对我从币安下载的历史交易进行额外计算。
使用以下命令不允许我指定具体时间,它只返回当前价格:
https://api1.binance.com/api/v3/ticker/price?symbol=BTCUSDT
结果:
{"symbol":"BTCUSDT","price":"56647.67000000"}
第二个最佳方法是获取特定时间到最近分钟的 1 分钟间隔的蜡烛信息,但这将是不准确的,因为蜡烛的高点和低点可以明显分开,这不能代表特定交易时的价格足够好。以下确实为我提供了特定时间到最近分钟的 1 分钟间隔的蜡烛信息。
https://api.binance.com/api/v1/klines?symbol=BTCUSDT&interval=1m&limit=1&startTime=1610462672000
结果:
[[1610462700000,"33236.78000000","33457.76000000","33226.43000000","33429.99000000","226.79694600",1610462759999,"7557664.59062870",3318,"146.99868600","4897805.74883424","0"]]
理想的情况如下,获取特定时间的价格(精确到秒),但这行不通。
https://api1.binance.com/api/v3/ticker/price?symbol=BTCUSDT&startTime=1610462672000
任何有关此问题的帮助都会很棒。
币安 REST API 支持的最低粒度(对于 K 线历史)是 1 分钟蜡烛。
您需要使用WSS API,实时接收每笔交易的消息并每秒聚合它们。
伪代码中的示例:
/*
* example: [1618829431 => 50000.01, 1618829432 => 50001.05, 1618829433 => 50002.23]
*/
array closeTimeToPrice = [];
function handleNewTradeMessage(message) {
closeTimeToPrice[message.tradeTimeInSeconds] = message.price;
}
binanceWssApi.subscribe('BTCUSDT@aggTrade', handleNewTradeMessage);