Получить значения OHCLV из таблицы с отметкой времени в django - PullRequest
0 голосов
/ 23 октября 2019

Предположим, у меня есть модель, в которой каждый раз выполняются транзакции, такие как:

class Transaction(models.Model):
    timestamp = models.DateTimeField(auto_now_add=True)
    price = models.DecimalField(max_digits=15, decimal_places=6)
    vol = models.DecimalField(max_digits=15, decimal_places=6)

Я хочу написать запрос на django, который дает мне OHCLV (открытый, высокий, закрытый, низкий, объемный)значения для каждой минуты в определенной области.

Я написал запрос, подобный приведенному ниже:

window = {
  'partition_by': [ExtractMinute('timestamp'),],
  'order_by': F('id').asc()
}

Transaction.objects.\
    annotate(
           open_value=Window(
               expression=FirstValue(
                   F('price'),),
                **window),
            closed_value=Window(
                expression=LastValue(
                    F('price'),),
               **window),
            high_value=Window(
                expression=Max(
                    F('price'),),
                **window),
            low_value=Window(
                expression=Min(
                    F('price'),),
                **window),
            volume=Window(
                expression=Sum(
                    F('volume')),
                **window)).values(open_value, closed_value, high_value, low_value, volume)

Но я получил некоторые ошибки (You have an error in your SQL syntax), также он не охватывает время, когда в таблице не было записи для этой минуты. Есть и другой способ использования группы в минуты времени, но он также не будет охватывать пустые времена ввода.

Пожалуйста, дайте мне предложение правильно написать этот запрос, я использую django 2.2.5 и mysql 14.14.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...