candlestick_agg()函数
工具包TimescaleDB 工具包函数可在 Timescale 社区版下使用。它们随 Timescale 自动包含,但必须为自托管 TimescaleDB 单独安装。单击了解更多。简介
执行对金融资产数据的分析。这些专门的超函数使编写涉及烛台数据的财务分析查询变得更加容易。
它们可以帮助您解答以下问题
- 这些股票的开盘价和收盘价是多少?
- 这只股票的最高价何时出现?
这组函数使用 两步聚合 模式。除了通常的聚合函数 candlestick_agg
之外,它还包括伪聚合函数 candlestick
。candlestick_agg
从原始的 Tick 数据生成一个烛台聚合,然后可以与本组中的访问器和汇总函数一起使用。candlestick
获取预聚合数据并将其转换为与 candlestick_agg
生成的格式相同的格式。这样,您就可以将访问器和汇总用于现有的烛台数据。
聚合
- candlestick_agg
- 将 Tick 数据聚合为中间形式以进行进一步计算
伪聚合
- candlestick
- 将预聚合的烛台数据转换为正确的形式以与
candlestick_agg
函数一起使用
访问器
汇总
- rollup
- 汇总多个烛台聚合
candlestick_agg(ts TIMESTAMPTZ,price DOUBLE PRECISION,volume DOUBLE PRECISION) RETURNS Candlestick
这是对原始 Tick 数据执行财务计算的第一步。使用 candlestick_agg
从 Tick 数据创建中间聚合。然后,本组中的一个或多个访问器可以使用此中间形式来计算最终结果。
或者,可以使用 rollup()
在应用访问器之前将多个这样的中间聚合对象组合起来。
如果您从预聚合的烛台数据而不是原始 Tick 数据开始,请使用配套的 candlestick()
函数。此函数将现有的聚合数据转换为与烛台访问器一起使用的正确形式。
必需参数
名称 | 类型 | 描述 |
---|---|---|
ts | TIMESTAMPTZ | 与股票价格相关的 Timestamp |
price | DOUBLE PRECISION | 给定时间的股票报价/价格 |
volume | DOUBLE PRECISION | 交易量 |
返回
列 | 类型 | 描述 |
---|---|---|
agg | 烛台 | 一个对象,存储每个开盘价、最高价、最低价和收盘价的 (timestamp, value) 对,以及用于计算总成交量和成交量加权平均价格的信息。 |
candlestick(ts TIMESTAMPTZ,open DOUBLE PRECISION,high DOUBLE PRECISION,low DOUBLE PRECISION,close DOUBLE PRECISION,volume DOUBLE PRECISION) RETURNS Candlestick
此函数将预聚合的烛台数据转换为烛台聚合对象。此对象包含与本组函数中的访问器和汇总一起使用的正确形式的数据。
如果您从原始 Tick 数据而不是烛台数据开始,请使用 candlestick_agg()
。
必需参数
名称 | 类型 | 描述 |
---|---|---|
ts | TIMESTAMPTZ | 与股票价格相关的 Timestamp |
open | DOUBLE PRECISION | 烛台的开盘价 |
high | DOUBLE PRECISION | 烛台的最高价 |
low | DOUBLE PRECISION | 烛台的最低价 |
close | DOUBLE PRECISION | 烛台的收盘价 |
volume | DOUBLE PRECISION | 烛台期间交易的总成交量 |
返回
列 | 类型 | 描述 |
---|---|---|
agg | 烛台 | 一个对象,存储每个开盘价、最高价、最低价和收盘价的 (timestamp, value) 对,以及用于计算总成交量和成交量加权平均价格的信息。 |
close(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取收盘价。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
close | DOUBLE PRECISION | 收盘价 |
close_time(candlestick Candlestick) RETURNS TIMESTAMPTZ
从烛台聚合中获取与收盘时间相对应的 Timestamp。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
close_time | TIMESTAMPTZ | 发生收盘价的时间 |
high(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取最高价。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
high | DOUBLE PRECISION | 最高价 |
high_time(candlestick Candlestick) RETURNS TIMESTAMPTZ
从烛台聚合中获取与最高价时间相对应的 Timestamp。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
high_time | TIMESTAMPTZ | 发生最高价的第一个时间 |
low(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取最低价。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
low | DOUBLE PRECISION | 最低价 |
low_time(candlestick Candlestick) RETURNS TIMESTAMPTZ
从烛台聚合中获取与最低价时间相对应的 Timestamp。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
low_time | TIMESTAMPTZ | 发生最低价的第一个时间 |
open(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取开盘价。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
open | DOUBLE PRECISION | 开盘价 |
open_time(candlestick Candlestick) RETURNS TIMESTAMPTZ
从烛台聚合中获取与开盘时间相对应的 Timestamp。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
open_time | TIMESTAMPTZ | 发生开盘价的时间 |
volume(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取总成交量。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
volume | DOUBLE PRECISION | 该期间内交易的总成交量 |
vwap(candlestick Candlestick) RETURNS DOUBLE PRECISION
从烛台聚合中获取成交量加权平均价格。
对于从已聚合数据构建的烛台,成交量加权平均价格是使用每个时期的典型价格计算的(其中典型价格是指最高价、最低价和收盘价的算术平均值)。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 烛台聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
vwap | DOUBLE PRECISION | 成交量加权平均价格 |
rollup(candlestick Candlestick) RETURNS Candlestick
将 candlestick_agg
或 candlestick
生成的多个中间烛台聚合组合成单个中间烛台聚合。例如,您可以使用 rollup
将来自 15 分钟桶的烛台聚合组合到日桶中。
必需参数
名称 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 由 candlestick 或 candlestick_agg 调用生成的聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
candlestick | 烛台 | 通过组合输入烛台聚合生成的新烛台聚合 |
查询您的 Tick 数据表以获取过去一天中每个 1 小时期间的开盘价、最高价、最低价和收盘价以及交易量
SELECTtime_bucket('1 hour'::interval, "time") AS ts,symbol,open(candlestick_agg("time", price, volume)),high(candlestick_agg("time", price, volume)),low(candlestick_agg("time", price, volume)),close(candlestick_agg("time", price, volume)),volume(candlestick_agg("time", price, volume))FROM stocks_real_timeWHERE "time" > now() - '1 day'::intervalGROUP BY ts, symbol;-- orWITH cs AS (SELECT time_bucket('1 hour'::interval, "time") AS hourly_bucket,symbol,candlestick_agg("time", price, volume) AS candlestickFROM stocks_real_timeWHERE "time" > now() - '1 day'::intervalGROUP BY hourly_bucket, symbol)SELECT hourly_bucket,symbol,open(candlestick),high(candlestick),low(candlestick),close(candlestick),volume(candlestick)FROM cs;
在您的股票交易数据上创建连续聚合
CREATE MATERIALIZED VIEW candlestickWITH (timescaledb.continuous) ASSELECT time_bucket('1 minute'::interval, "time") AS ts,symbol,candlestick_agg("time", price, volume) AS candlestickFROM stocks_real_timeGROUP BY ts, symbol;
在过去一小时内查询股票交易数据按分钟的连续聚合以获取开盘价、最高价、最低价和收盘价 (OHLC) 以及它们的时间戳
SELECT ts,symbol,open_time(candlestick),open(candlestick),high_time(candlestick),high(candlestick),low_time(candlestick),low(candlestick),close_time(candlestick),close(candlestick)FROM candlestickWHERE ts > now() - '1 hour'::interval;
将您的按分钟的连续聚合汇总到日桶中,并返回过去一个月中 AAPL
的成交量加权平均价格
SELECTtime_bucket('1 day'::interval, ts) AS daily_bucket,symbol,vwap(rollup(candlestick))FROM candlestickWHERE symbol = 'AAPL'AND ts > now() - '1 month'::intervalGROUP BY daily_bucketORDER BY daily_bucket;
将您的按分钟的连续聚合汇总到每小时的桶中,并返回过去一天中每个 1 小时期间的开盘价、最高价、最低价和收盘价以及成交量
SELECTtime_bucket('1 hour'::interval, ts) AS hourly_bucket,symbol,open(rollup(candlestick)),high(rollup(candlestick)),low(rollup(candlestick)),close(rollup(candlestick)),volume(rollup(candlestick))FROM candlestickWHERE ts > now() - '1 day'::intervalGROUP BY hourly_bucket;
如果您有一个预聚合的股票数据表,它可能与以下格式类似
ts │ symbol │ open │ high │ low │ close │ volume────────────────────────┼────────┼────────┼────────┼────────┼────────┼──────────2022-11-17 00:00:00-05 │ VTI │ 195.67 │ 197.9 │ 195.45 │ 197.49 │ 37047002022-11-16 00:00:00-05 │ VTI │ 199.45 │ 199.72 │ 198.03 │ 198.32 │ 29050002022-11-15 00:00:00-05 │ VTI │ 201.5 │ 202.14 │ 198.34 │ 200.36 │ 46062002022-11-14 00:00:00-05 │ VTI │ 199.26 │ 200.92 │ 198.21 │ 198.35 │ 42482002022-11-11 00:00:00-05 │ VTI │ 198.58 │ 200.7 │ 197.82 │ 200.16 │ 45385002022-11-10 00:00:00-05 │ VTI │ 194.35 │ 198.31 │ 193.65 │ 198.14 │ 39816002022-11-09 00:00:00-05 │ VTI │ 190.46 │ 191.04 │ 187.21 │ 187.53 │ 139596002022-11-08 00:00:00-05 │ VTI │ 191.25 │ 193.31 │ 189.42 │ 191.66 │ 48475002022-11-07 00:00:00-05 │ VTI │ 189.59 │ 190.97 │ 188.47 │ 190.66 │ 34200002022-11-04 00:00:00-04 │ VTI │ 189.32 │ 190.3 │ 185.75 │ 188.94 │ 35846002022-11-03 00:00:00-04 │ VTI │ 186.5 │ 188.09 │ 185.13 │ 186.54 │ 39356002022-11-02 00:00:00-04 │ VTI │ 193.07 │ 195.27 │ 188.29 │ 188.34 │ 46860002022-11-01 00:00:00-04 │ VTI │ 196 │ 196.44 │ 192.76 │ 193.43 │ 98738002022-10-31 00:00:00-04 │ VTI │ 193.99 │ 195.17 │ 193.51 │ 194.03 │ 50539002022-10-28 00:00:00-04 │ VTI │ 190.84 │ 195.53 │ 190.74 │ 195.29 │ 31788002022-10-27 00:00:00-04 │ VTI │ 192.46 │ 193.47 │ 190.61 │ 190.85 │ 35563002022-10-26 00:00:00-04 │ VTI │ 191.26 │ 194.64 │ 191.26 │ 191.75 │ 40911002022-10-25 00:00:00-04 │ VTI │ 189.57 │ 193.16 │ 189.53 │ 192.94 │ 32871002022-10-24 00:00:00-04 │ VTI │ 188.38 │ 190.12 │ 186.69 │ 189.51 │ 45278002022-10-21 00:00:00-04 │ VTI │ 182.99 │ 187.78 │ 182.29 │ 187.49 │ 33812002022-10-20 00:00:00-04 │ VTI │ 184.54 │ 186.99 │ 182.81 │ 183.27 │ 26362002022-10-19 00:00:00-04 │ VTI │ 185.25 │ 186.64 │ 183.34 │ 184.87 │ 25891002022-10-18 00:00:00-04 │ VTI │ 188.14 │ 188.7 │ 184.71 │ 186.46 │ 3906800
您可以使用 candlestick
函数将数据转换为可以传递给所有访问器和 rollup
函数的形式。为了表明您的数据已保留,此示例展示了这些访问器如何返回一个看起来与您的数据完全相同的表
SELECTts,symbol,open(candlestick),high(candlestick),low(candlestick),close(candlestick),volume(candlestick)FROM (SELECTts,symbol,candlestick(ts, open, high, low, close, volume)FROM historical_data) AS _(ts, symbol, candlestick);;-- orWITH cs AS (SELECT tssymbol,candlestick(ts, open, high, low, close, volume)FROM historical_data)SELECTtssymbol,open(candlestick),high(candlestick),low(candlestick),close(candlestick),volume(candlestick)FROM cs;
将数据转换为烛台聚合形式的优点是,您可以使用本组中的其他函数,例如 rollup
和 vwap
。
将您的按日的历史数据汇总到周桶中并返回成交量加权平均价格
SELECTtime_bucket('1 week'::interval, ts) AS weekly_bucket,symbol,vwap(rollup(candlestick))FROM (SELECTts,symbol,candlestick(ts, open, high, low, close, volume)FROM historical_data) AS _(ts, symbol, candlestick)GROUP BY weekly_bucket, symbol;
关键词
发现此页面存在问题?报告问题 或 在 GitHub 上编辑此页面。