Рассчитать средневзвешенное значение объема с помощью Cakephp 3.x ORM или SQL-запроса

Я пытаюсь создать ценовой трекер для учебных целей, очень похожий на то, что делает coinmarketcap. Я делаю вызов обновления, который собирает информацию от каждого из сохраненных API обменов и сохраняет результаты в базе данных каждые 5 минут. Мне было интересно, есть ли способ настроить запрос на поиск, который бы вычислял средневзвешенную цену по объему на основе структуры базы данных ниже (пропущены очевидные столбцы, такие как id и созданные / измененные временные метки)

В настоящее время я получаю vwap, вычисляя цену vwap BTC / USD и сохраняю ее. Затем я конвертирую все маркеры, котируемые в BTC, в доллары США, используя цену из расчета BTC / USD. Затем я повторяю для ETH / USD и так далее.
Мне интересно, стоит ли мне переосмыслить структуру моей базы данных, есть ли способ создать запрос, который бы вычислял vwaps в разных валютах котировок, которые я могу использовать для преобразования каждого рынка в другие валюты котировок.

Замечания: том имеет 2 столбца quote_volume а также base_volume но был сжат до объем для краткости.

ассоциации:

  • Биржи имеет много рынков
  • Рынки имеет много цен
  • Рынки имеет много цитат
  • Цены имеют много цен истории

ExchangesTable

|------------|-------------|
|    name    |   website   |
|------------|-------------|
|    Simex   |     www     |
|------------|-------------|

MarketsTable

|---------------|------------|-------------|-------------|
|  exchange_id  |     name   |    quote    |    base     |
|---------------|------------|-------------|-------------|
|       12      |    BTCUSD  |     USD     |     BTC     |
|---------------|------------|-------------|-------------|

PricesTable

|---------------|-----------|------------|------------|-------------|
|    market_id  |    last   |    high    |    low     |    volume   |
|---------------|-----------|------------|------------|-------------|
|        5      |  3989.36  |  4012.78   |   3942.87  | 125,000,000 |
|---------------|-----------|------------|------------|-------------|

PriceHistoriesTable

|---------------|-----------|------------|------------|-------------|
|    prices_id  |    last   |    high    |    low     |    volume   |
|---------------|-----------|------------|------------|-------------|
|        8      |  3989.36  |  4012.78   |   3942.87  | 125,000,000 |
|---------------|-----------|------------|------------|-------------|

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]