Я пытаюсь создать OHL C баров в postgresql, исходя из тиковых данных. Я хочу создавать бары каждые 1000 тиков или каждые 500 тиков. Или каждые X тиков.
База данных, которую я сохраняю, имеет цену спроса / предложения и временную метку. Я знаю, что могу выполнить группировку и сгруппировать их по отметкам времени, но желаемый результат - это количество тиков.
Один тик состоит из отметки времени, цены предложения и цены продажи.
База данных тиков выглядит примерно так:
-------------------------------------------------
| date | bid | ask |
|2020-03-20 19:33:56.044533 | 1.06372 | 1.06384 |
|2020-03-20 19:33:37.205241 | 1.06372 | 1.06384 |
|2020-03-20 19:33:54.943593 | 1.06372 | 1.06383 |
|2020-03-20 19:33:55.183255 | 1.06372 | 1.06384 |
Я хотел бы сгруппировать каждые X количества тиков, чтобы получить такой результат:
---------------------------------------------------------------------------
| date | open | high | low | close |
|2020-03-20 19:33:56.044533 | 1.06372 | 1.07104 | 1.06001 | 1.06579 |
Это 1 свеча. Цифры взяты из столбца ставок. Цена открытия - это первая зарегистрированная цена, цена закрытия - это последняя зарегистрированная цена, а максимум и минимум - это максимальная и минимальная цены, зарегистрированные в этих X тиках.
Итак, если X равен 1000 и предполагается, что индекс начинается с 0, цены OHL C будут следующими: - open: цена в индексе 0 - high: максимальная цена между индексом 0 и 999 - low: минимальная цена между индексом 0 и 999 - close: цена в индексе 999
То есть на первые 1000 тиков. Затем следующие свечи создаются следующими 1000 тиками. - открытие: цена в индексе 1000 - максимум: максимальная цена между индексом 1000 и 1999 - минимум: минимальная цена между индексом 1000 и 1999 - закрытие: цена в индексе 1999
Как я могу этого достичь?
Заранее спасибо!