Это более подробное описание нашей предыдущей статьи в блоге Анализ API, в которой подробно описаны существующие исторические расчеты путей преобразования цен в минуту, час и день. С этого момента мы будем называть эти исторические конечные точки v1.

Мы значительно изменили способ получения исторических данных по комбинациям пар, которые не торгуются напрямую. Мы также создали новые исторические конечные точки для минут, часов и дней, в которых используется улучшенный метод расчета. С этого момента мы будем называть эти исторические конечные точки «v2». Чтобы сохранить существующие интеграции и поддерживать существующую структуру, мы продолжим запускать существующие конечные точки v1 с текущей логикой, но в конечном итоге планируем перейти на логику v2 внутренне, сохраняя при этом структуру ответа данных v1.

Наряду с предсказуемым преобразованием и более длинной историей конечные точки V2 также будут предлагать новый дополнительный параметр для запроса базовых данных, используемых при вычислении каждой из непрямых исторических точек.

Что нового?

Основное изменение формата в v2 - приведение его в соответствие с нашей текущей структурой ответа, поэтому вместо того, чтобы возвращать массив точек (согласно ответу v1), он вернет объект ответа, который имеет свойство Data с массивом точек. и другие связанные данные.

Основное логическое изменение заключается в способе вычисления исторических преобразований для пары. В настоящее время с конечными точками v1 для запроса tryConversion = true вычисляется лучшее преобразование, доступное на момент запроса, а затем это преобразование применяется задним числом ко всем историческим точкам в ответе.

Новый исторический процесс v2 теперь будет оценивать в каждый момент времени лучшую доступную конверсию и добавлять эту точку данных в качестве цены за день. Это означает, что запрос, охватывающий сотни дней, может несколько раз изменять свой путь конверсии на протяжении всего ответа. Например, если мы запрашиваем последние 1000 дней для пары XMR-USD, количество пунктов будет колебаться между умножением через BTC или прямым перемещением во времени.

Обратите внимание, что для преобразованных пар, возвращаемых с помощью tryConversion, цена и объемы создаются API, по сути создавая рынки, чтобы дать наилучшую оценку цены и объема за период времени.

Как выбирается путь конверсии?

Наилучший путь конверсии определяется при каждом вычислении точки данных, где точка данных - это момент времени, основанный на запрошенных единицах измерения, то есть минуте, часе или дне. Каждому пути конверсии назначается весовой коэффициент, основанный на объеме, более подробно описанный в следующих разделах. Мы добавляем двукратный вес для пар с прямой торговлей, чтобы предпочесть прямой путь предполагаемому пути.

Мы много говорили о путях конверсии, поэтому теперь объясним, что влечет за собой каждый из них. С этого момента мы будем обозначать символ from как «Fsym», а символ to как «Tsym».

Прямой и принудительный

Как следует из названия, это результат торговли парами напрямую на биржах.

Fsym → Tsym
 BTC → USD

Инвертировать

В этом сценарии данные, которые мы храним для торговой пары, перевернуты по сравнению с запросом, поэтому мы используем обратную величину этого значения.

1/Tsym → Fsym = Fsym → Tsym
1/USD → BTC  =  BTC → USD

Пути конверсии

С этого момента конвертация будет осуществляться в другой валюте. Историческая конечная точка будет конвертироваться только через BTC или ETH, чтобы определить лучший путь. В дальнейшем мы будем обозначать этот символ преобразования как «Csym».

Умножить

Пример: XRP → GBP с символом конвертации, выбранным как ETH.

Fsym = XRP
Tsym = GBP
Csym = ETH
Fsym → Csym x Csym → Tsym
 XRP → ETH  x  ETH → GBP

Вес: меньшее значение;

Fsym → Csym Volume From
VS
Csym → Tsym Volume From x (Fsym → Csym close x Csym → Tsym close)

Разделить

Пример XRP → REP с символом конвертации, выбранным как BTC

Fsym = XRP
Tsym = REP
Csym = BTC
Fsym → Csym / Tsym → Csym
 XRP → BTC  /  REP → BTC

Вес: меньшее значение;

Fsym → Csym Volume From
VS
Tsym → Csym Volume From x (Fsym → Csym close / Tsym → Csym close)

Инвертировать умножение

Пример: GBP → XRP, с символом конвертации, выбранным как BTC

Fsym = GBP
Tsym = XRP
Csym = BTC
Csym → Fsym x Tsym → Csym
 BTC → GBP  x  XRP → BTC

Or when swapped around, it becomes a regular multiply:
Tsym → Csym x Csym → Fsym
 XRP → BTC  x  BTC → GBP
Then invert the result:
1/XRP → GBP

Вес: меньшее значение;

Csym → Fsym Volume To
VS
Tsym → Csym Volume From x (1 / Csym → Fsym close x Tsym → Csym close)

Инвертировать разделение

Пример: USD → GBP с символом конвертации, выбранным как BTC.
В этом сценарии у нас есть данные только для BTC → GBP и BTC → USD, поэтому мы можем разделить значения:

Fsym = USD
Tsym = GBP
Csym = BTC
Csym → Tsym / Csym → Fsym
 BTC → GBP  /  BTC → USD

Вес: меньшее значение;

Csym → Fsym Volume To
VS
Csym → Tsym Volume To / ((1/Csym → Fsym close) x Csym → Tsym close) 

Дальнейшие примечания

В рамках этих изменений мы добавили новый параметр, объяснениеPath = true, который будет возвращать все пары Кому / От / Конверсия, полученные в каждой точке расчета. Это может быть полезно для проверки того, почему был выбран определенный путь (или для отправки нам для расследования, если необходимо)

Для запросов, которые включают в ответ текущий день, данные будут основаны на самой последней информации о текущем наилучшем пути конверсии, поэтому для некоторых пар есть вероятность, что это все еще может измениться до закрытия дня.

Связаться

Если у вас есть вопросы или отзывы об этом обновлении, дайте нам знать!