Я пытаюсь создать ценовой трекер для учебных целей, очень похожий на то, что делает 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 |
|---------------|-----------|------------|------------|-------------|
Задача ещё не решена.
Других решений пока нет …