You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用QuestDB生成K线图?行情数据OHLC聚合需求

使用QuestDB生成K线图(OHLC聚合)

需求说明

针对指定交易对(symbol),按自定义时间间隔聚合行情数据,计算每个时间区间内的开盘价(Open)、收盘价(Close)、最高价(High)、最低价(Low),用于生成K线图。

行情表结构

symbolsidepriceamounttimestamp
BTC-USDbuy35831.560.000511512023-11-15T10:42:11.754626Z

核心SQL查询

利用QuestDB的时间分桶函数bucket()和聚合函数实现OHLC计算:

SELECT
  bucket(timestamp, '5m') AS interval_start, -- 按5分钟间隔分桶,可替换为'1m'/'1h'/'1d'等
  symbol,
  first(price) AS open_price,  -- 区间内第一条交易的价格(开盘价)
  max(price) AS high_price,    -- 区间内最高价格
  min(price) AS low_price,     -- 区间内最低价格
  last(price) AS close_price,  -- 区间内最后一条交易的价格(收盘价)
  sum(amount) AS volume        -- 可选:区间内总成交量
FROM
  your_table_name -- 替换为实际表名
WHERE
  symbol = 'BTC-USD' -- 指定目标交易对
GROUP BY
  interval_start, symbol
ORDER BY
  interval_start ASC; -- 按时间顺序排序

关键说明

  • 时间间隔调整:bucket()函数的第二个参数支持多种时间单位,比如'1m'(1分钟)、'1h'(1小时)、'1d'(1天)、'1w'(1周)等,按需替换即可。
  • 性能优化:如果timestamp列是表的分区列(比如PARTITION BY DAY),分桶查询的性能会大幅提升,建议建表时配置。
  • 成交量扩展:如果需要K线的成交量维度,直接添加sum(amount) AS volume到SELECT子句即可。
  • 多交易对聚合:如果需要同时处理多个交易对,去掉WHERE symbol = 'BTC-USD'过滤条件,分组时保留symbol即可。

内容的提问来源于stack exchange,提问作者Jaromir Hamala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:35