Реализация на питон 3.
В апи https://yobit.net/ru/api/
нам потребуется только depth
Есть запрос к бирже вида
https://yobit.net/api/3/depth/ltc_btc?limit=2000
https://yobit.net/api/3/depth/ltc_btc-ltc_rur-dash_usd?limit=2000... и т.д.
(как устроен ответ с сервера легко посмотреть по ссылкам)
Пользователь на входе задает
2 лимита. К примеру 150 и 2000
лимиты могут быть равны друг другу.
и список валютных пар больше либо равен 1 но менее максимального. Помоему порядка 53 уже сервер
выдает ерунду. пример(["btc_usd", "eth_usd"])
запускаем функцию что описана ниже для обоих лимитов с данным набором пар
На выходе как видим для каждой пары мы получаем 2 массива. один "asks" другой "bids"
ячейки массивов идентичны и имеют вид : [0.017405,0.55292576],....
[0.017405,0.55292576] - первое значение везде относится к "p" второе везде к "v"
Копим данные на выход
pa1 = первое значение в первой ячейке асков в данном примере 0.017405
pb1 = аналогично с бидами
эти данные что получены вполне могут быть и у лимит1 и у лимит 2 одинаковые т.к. первые значения. а
лимит только меняет длинну хвоста. (могут различатся лишь в том случае если данные на сервере успели
обновиться)
И нужно еще получить для каждого лимита пару значений. они точно будут разные (если лимиты не равны
друг другу)и будут вычисляемые програмно.
опишу раз проделываем это и с первым и со вторым лимитом. и с каждой парой (Функция одна данные на
входе лишь разные)
(lim1 на примере лимита 1)
a- asks
b-bids
v_a_lim1 = сумма всех вторых значений в асках ([0.017405,0.55292576]) то в этом случае 0.55292576 и все
также вторые в скобках во всех асках по этой валютной паре
v_b_lim1 = аналогично с бидами.
получили 2 числа. выбираем меньшее из них и понимаем аск это был или бид.
если аск то в асках берем с последней скобки первое значение если бид то с бидов с последней скобки
последнее значение.
ну и записываем с соответствующюю переменную к примеру pa_max_lim1 или pb_max_lim1 (a или b это
соответственно был аск или бид)
в результате мы получили одну из переменных: pa_max_lim1 или pb_max_lim1
Нужно получить вторую.
Пусть мы получили pa_max_lim1 т.е. ту что в асках
тогда вторую ищим в бидах:
берем вторые сзначения в скобках в бидах и начинаем с начала с 0 элемента складывать.
складываем до тех пор пока складываемое значение меньше либо равно в данном случае (v_a_lim1 т.к. оно
было меньшее из двух)
как только стало больше мы в pb_max_lim1 заносим из последней ячейки что удовлетворяло нераветству при
суммировании заносим первое значение из скобки.
на выход из функции подаем:
pa1
pb1
pa_max_lim1 или lim2
pb_max_lim1 или lim2
дла каждого из двух лимитов. Ну и для каждой валютной пары.
Если в хвотсах меншье данных чем прописано в лимите то считаем по этим данным. Остальные
может както занулить к примеру надо длинну хвоста 2000 а получили только 1000
считаем по 1000
Переменных могут называться как угодно. Назвал так лишь чтобы както назвать.
Предлагайте оценочную стоимость работы
если есть вопросы по ТЗ - пишите.
функция вытягивания данных с сервера есть. (разбирает валюты со входа преобразует в строку . получает данные раскидывает по переменным. используются словари и классы)Могу дать ее с кем будем работать
либо ее переделать под нужды либо написать свою.