GridDB субдискретизирует столбцы OHLC с наносекундной эпохой int в качестве ключа строки

Для структуры таблицы, например, содержащей ключ int (требуемую точность отражения эпохи в наносекундах) и цену. Как это может быть субдискретизировано в группы открытых, высоких, низких и закрытых рядов (столбцов ohlc) с временным интервалом, например минутами?

1 ответ

Я бы решил проблему, используя мультизапросы, что значительно быстрее, чем выполнение каждого запроса по отдельности. Будет четыре запроса для каждого периода, для которого вы хотите построить полоски OHLC. Следующий псевдокод дает приблизительное решение, опуская некоторые детали, которые можно найти в документации GridDB MultiQuery.

за период в периодах:

queries.add("select min(price) where epoch > period.start and epoch < period.end")
  queries.add("select max(price) where epoch > period.start and epoch < period.end")
  queries.add("select * where epoch > period.start order by epoch asc limit 1")
  queries.add("select * where epoch < period.end order by epoch desc limit 1")

fetch_all(queries)

while i < len(queries)
  for metric in ['low', 'high', 'open', 'close']:
     query = queries[i]
     rs = query.get_rs()
     while rs.has_next():
          bars[period[p].start][metric] = rs.next()
     i=i+1
  p=p+1

* Обратите внимание, что точность до наносекунд пока не поддерживается.

Другие вопросы по тегам