Как агрегировать биржевые свечи через timescaledb?

Для агрегирования биржевых свечей в TimescaleDB вы можете использовать различные SQL-запросы и функции, чтобы получить нужный результат. Вот несколько шагов, которые помогут вам выполнить эту задачу:

1. Создайте таблицу для хранения свечей:

CREATE TABLE candles (
    id SERIAL PRIMARY KEY,
    symbol VARCHAR(10),
    timestamp TIMESTAMPTZ NOT NULL,
    open REAL,
    high REAL,
    low REAL,
    close REAL,
    volume BIGINT
);

2. Установите гипертаблицу для таблицы свечей:

SELECT create_hypertable('candles', 'timestamp');

Гипертаблица разбивает таблицу на части по времени, чтобы обеспечить более эффективное хранение и запросы.

3. Вставьте данные в таблицу свечей:

INSERT INTO candles (symbol, timestamp, open, high, low, close, volume)
VALUES ('AAPL', '2022-01-01 00:00:00', 150.0, 155.0, 145.0, 151.0, 100),
       ('AAPL', '2022-01-01 00:01:00', 151.0, 160.0, 150.0, 155.0, 200),
       ('AAPL', '2022-01-01 00:02:00', 155.0, 158.0, 151.0, 157.0, 150),
       ...

4. Вы можете использовать функции TimescaleDB для агрегирования свечей. Например, для получения средней цены закрытия по дням, используйте следующий запрос:

SELECT time_bucket('1 day', timestamp) AS day,
       symbol,
       AVG(close) AS avg_close
FROM candles
GROUP BY day, symbol
ORDER BY day, symbol;

В этом запросе функция time_bucket принимает первым аргументом интервал времени, по которому необходимо агрегировать данные, а вторым аргументом поле времени, которое необходимо разбить на интервалы.

5. Также вы можете использовать другие функции TimescaleDB, такие как time_bucket_gapfill, чтобы заполнить пропущенные свечи, или time_bucket_series, чтобы сгенерировать последовательность временных интервалов.

Таким образом, с использованием TimescaleDB вы можете удобно хранить и агрегировать биржевые свечи с помощью SQL-запросов и функций, специально разработанных для временных данных.