Для агрегирования биржевых свечей в 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-запросов и функций, специально разработанных для временных данных.