我想获取币安的历史价格,例如特定时间的 BTC/USDT 精确到秒,例如2021-01-12 14:44:32 或 1610462672000。
这是为了对我从 Binance 下载的历史交易启用额外计算。
使用以下不允许我指定特定时间,它只返回当前价格:
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
任何有关这方面的帮助都会很棒,谢谢。
答案 0 :(得分:1)
Binance REST API 支持的最低粒度(用于 kline 历史记录)是 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);