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

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

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

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

Ассоциации:

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

БиржиТаблица

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

MarketsTable

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

Прайс-лист

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

Прайс-лист историиИстория

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