Bitcoin Forum
April 16, 2024, 08:25:53 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Проблемы с api yobit  (Read 280 times)
lokomoko (OP)
Newbie
*
Offline Offline

Activity: 60
Merit: 0


View Profile
June 08, 2018, 07:36:45 PM
Last edit: June 08, 2018, 07:56:10 PM by lokomoko
 #1

Гуглил, толком не смог найти решения этой проблемы. На форуме, честно говоря, особо не искал, так что если есть топик с решением, то пришлите ссылку, этот закрою.

Речь об 3 версии api yobit. Там можно брать информацию сразу с нескольких торговых пар за один запрос к серверу. О каком именно количестве речь идет, у них не говорится, просто сказано: "Основное отличие Public API третьей версии от второй состоит в возможности получения информации сразу по нескольким парам за один запрос к серверу."

Я не думал что может возникнуть проблемы с запросом с большим количеством пар. Проблема в том, что если ссылка состоит из >512 символов, то ебит возвращает ошибку: "{'success': 0, 'error': 'Empty pair list'}", то есть чтобы получить информацию о всех парах, нужно сделать больше 100 запросов к апи.

Есть ли способ как-то получить инфу сразу ко всем парам за один запрос?
"The nature of Bitcoin is such that once version 0.1 was released, the core design was set in stone for the rest of its lifetime." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 08, 2018, 08:26:37 PM
 #2

За один запрос не получится. Здесь https://bablofil.ru/yobit-api-python/ разбивают на несколько запросов, в каждом 30 пар.
Только какая возможная частота запроса?
Если вдруг будете переводить на C#, скиньте на всякий случай функцию.
lokomoko (OP)
Newbie
*
Offline Offline

Activity: 60
Merit: 0


View Profile
June 08, 2018, 08:38:26 PM
 #3

За один запрос не получится. Здесь https://bablofil.ru/yobit-api-python/ разбивают на несколько запросов, в каждом 30 пар.
Только какая возможная частота запроса?
Если вдруг будете переводить на C#, скиньте на всякий случай функцию.

Очень жаль, что за один запрос не выйдет. Пишу на питоне, так что скинуть код не смогу, но если общее понимание имеется, то могу на питоне скинуть. Насчет частоты запроса не знаю точно, но они говорят, что информация у них кешируется каждые 2 секунды и что чаще запросы делать нет смысла. Вот сейчас пробую, поставил запросы без пауз и меня забанил сервер (<Response [429]>)на время за то что даю слишком много запросов. Когда выставил ограничения на 30 запросов в минуту то все сработало, только все это заняло 253 секунды, учитывая то, что брал 50 пар за запрос. Думаю можно улучшить результат если считать по символам в ссылке, чтобы как раз в 512 влезало, либо приблизительно это число, но все-равно это очень долго, неужели нет других решений? Может можно как-то сразу несколько апи запросов запустить имитируя разные устройства, или что-то подобное, ведь тут использовать нужно только паблик апи.
#Cryptoman
Member
**
Offline Offline

Activity: 980
Merit: 48


View Profile
June 09, 2018, 04:37:57 AM
 #4

Очень жаль, что за один запрос не выйдет. Пишу на питоне, так что скинуть код не смогу, но если общее понимание имеется, то могу на питоне скинуть. Насчет частоты запроса не знаю точно, но они говорят, что информация у них кешируется каждые 2 секунды и что чаще запросы делать нет смысла. Вот сейчас пробую, поставил запросы без пауз и меня забанил сервер (<Response [429]>)на время за то что даю слишком много запросов. Когда выставил ограничения на 30 запросов в минуту то все сработало, только все это заняло 253 секунды, учитывая то, что брал 50 пар за запрос. Думаю можно улучшить результат если считать по символам в ссылке, чтобы как раз в 512 влезало, либо приблизительно это число, но все-равно это очень долго, неужели нет других решений?

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

А в период большой движухи, банить могут и за 10 пар на запрос. Выход разумеется есть, просто делайте запросы через разные прокси сервера. Напрямую получить информацию по всем парам за раз невозможно.
Что касается last price, то последнюю цену можно получать практически мгновенно, достаточно заюзать браузер или эмулятор бразузера с поддержкой скриптов, ну и парсить получаемую страницу.  Wink

https://indx.ru криптобиржа от вебмоней, не воруют, не требуют доказательств происхождения средств.
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 09, 2018, 11:42:29 AM
 #5

Что касается last price, то последнюю цену можно получать практически мгновенно, достаточно заюзать браузер или эмулятор бразузера с поддержкой скриптов, ну и парсить получаемую страницу.  Wink
Это не то же самое, что получать данные по websocket? Yobit, похоже, не имеет websocket, потому вопрос по биржам, которые его используют.
ajijohn
Jr. Member
*
Offline Offline

Activity: 224
Merit: 3

Development of any software for Windows


View Profile
June 09, 2018, 11:54:21 AM
 #6

Что касается last price, то последнюю цену можно получать практически мгновенно, достаточно заюзать браузер или эмулятор бразузера с поддержкой скриптов, ну и парсить получаемую страницу.  Wink
Это не то же самое, что получать данные по websocket? Yobit, похоже, не имеет websocket, потому вопрос по биржам, которые его используют.
Websocket не имеет никакого отношения к парсингу страницы.
На вскидку, биржи, у которых есть поддержка websocket:
binance
huobi
hitbtc
cex.io
bitstamp
bitfinex
bittrex - использует SignalR
poloniex - использует WAMP

Это то, что по памяти. Остальные нужно просто погуглитьSmiley
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 09, 2018, 12:52:11 PM
 #7

Websocket не имеет никакого отношения к парсингу страницы.
Я только имел в виду скорость получения данных.
ajijohn
Jr. Member
*
Offline Offline

Activity: 224
Merit: 3

Development of any software for Windows


View Profile
June 09, 2018, 12:57:04 PM
 #8

Websocket не имеет никакого отношения к парсингу страницы.
Я только имел в виду скорость получения данных.
При использовании websocket сервер сам вам шлет данные, причем шлет необходимый минимум.
В случае парсинга страницы, вам нужно будет ее загрузить и только после этого парсить. Вот сами и подумайте, что будет быстрее.
В случае с yobit воспользоваться websocket не получится и можно пользоваться вариантами, которые вам уже озвучили. Тут уже вам решать.
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 09, 2018, 01:24:49 PM
Last edit: June 09, 2018, 01:38:18 PM by ANV
 #9

При использовании websocket сервер сам вам шлет данные, причем шлет необходимый минимум.
В случае парсинга страницы, вам нужно будет ее загрузить и только после этого парсить. Вот сами и подумайте, что будет быстрее.
Я не уверен, что websocket быстрее. Возможно, что данные по websocket посылаются только, когда будет несколько изменений, а парсинг страницы, возможно, действительно дает текущие данные.
Websocket с huobi задействовать не смог: там надо в паблик апи все равно генерировать какой-то id.
ajijohn
Jr. Member
*
Offline Offline

Activity: 224
Merit: 3

Development of any software for Windows


View Profile
June 09, 2018, 07:51:26 PM
 #10

При использовании websocket сервер сам вам шлет данные, причем шлет необходимый минимум.
В случае парсинга страницы, вам нужно будет ее загрузить и только после этого парсить. Вот сами и подумайте, что будет быстрее.
Я не уверен, что websocket быстрее. Возможно, что данные по websocket посылаются только, когда будет несколько изменений, а парсинг страницы, возможно, действительно дает текущие данные.
Websocket с huobi задействовать не смог: там надо в паблик апи все равно генерировать какой-то id.
Во первых, парсинг занимает больше времени, т.к. сначала вы делаете запрос, а потом получаете ответ.
При использовании websocket вы просто подписываетесь, например, на тикер и получаете его с заданной периодичностью. Для примера, можете попробовать парсить страницу половника для получения цены для eth/btc и подписаться на тикет по websocket. Я практически уверен, что вы больше половины изменений пропустите пока будете парсить страничку.

Что касается huobi, то там достаточно в качестве id передавать, например, unix timestamp. Ну или каждой паре присвойте уникальный id и его передавайте. По моим наблюдениям, id используется исключительно для ваших внутренних нужд.
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 09, 2018, 09:45:11 PM
 #11

Во первых, парсинг занимает больше времени, т.к. сначала вы делаете запрос, а потом получаете ответ.
При использовании websocket вы просто подписываетесь, например, на тикер и получаете его с заданной периодичностью. Для примера, можете попробовать парсить страницу половника для получения цены для eth/btc и подписаться на тикет по websocket. Я практически уверен, что вы больше половины изменений пропустите пока будете парсить страничку.
Что касается huobi, то там достаточно в качестве id передавать, например, unix timestamp. Ну или каждой паре присвойте уникальный id и его передавайте. По моим наблюдениям, id используется исключительно для ваших внутренних нужд.
Не уверен, что websocket быстрее, чем обновление по ajax. Время же самого парсинга на современном компе можно не учитывать по сравнению с задержками пакетов в пути. Попробуйте ping huobi.com или binance.com. Ключ увеличения времени -w. И попробуйте tracert, после чего о быстродействии парсинга на компьютере забудете. Что касается websocket, я пробовал делать запросы, только не помню на какой бирже. Мне показалось, что чем на большее количество пар подписываешься тем реже приходят ответы по конкретной паре. Но не уверен.
Что касается совета попробовать websocket на полыни, это я ответил в соседней ветке, как это можно делать))).
Что-то не получается с huobi получить данные. Ставил разные id, но следующие строки не работают.
{"sub":"market.btcusdt.trade.detail","id":"1"}
{"sub":"market.btcusdt.trade.detail","id":"1528578989"}
{"req":"market.ethbtc.kline.1min","id":"10"}
{"req":"market.ethbtc.kline.1min","id":"1528578916"}
Может надо формировать id, как nonce в privat api: long nonce = (long)(DateTime.UtcNow - Epoch).TotalSeconds;
Или формат неверный? Пробовал здесь http://websocket.org/echo.html на коннекте wss://api.huobi.pro/ws
ajijohn
Jr. Member
*
Offline Offline

Activity: 224
Merit: 3

Development of any software for Windows


View Profile
June 09, 2018, 09:51:08 PM
Last edit: June 13, 2018, 10:38:41 AM by ajijohn
 #12

{"sub":"market.btcusdt.trade.detail","id":"1"} Прекрасно работает. Особенность huobi в том, что они присылают сжатые данные(gzip). Т.е. при получении их нужно распаковывать. Ну и плюс они периодически шлют ping и если не него не отвечать, то соединение будет закрыто.

По поводу парсинга. Я как-то не подумал, что можно держать страничку открытой, а не запрашивать ее каждый раз, но если нужна информация по каждой паре, то держать такое количество открытых страниц в памяти, на мой взгяд,  не рационально.
ANV
Jr. Member
*
Offline Offline

Activity: 114
Merit: 1


View Profile
June 09, 2018, 10:59:56 PM
 #13

Понятно. Данные huoni получил, но пока не раззиповывал. Сейчас думаю, как сократить время прохождения пакетов от китайских бирж. Может можно найти такой прокси или vpn, у которого маршрут будет до биржи короче?
Если Аякс, не надо открывать массу страниц.
ajijohn
Jr. Member
*
Offline Offline

Activity: 224
Merit: 3

Development of any software for Windows


View Profile
June 09, 2018, 11:08:55 PM
 #14

Понятно. Данные huoni получил, но пока не раззиповывал. Сейчас думаю, как сократить время прохождения пакетов от китайских бирж. Может можно найти такой прокси или vpn, у которого маршрут будет до биржи короче?
Если Аякс, не надо открывать массу страниц.
Сначала узнайте где у китайцев сервера расположены. Вполне вохможно, что и не в китае.
В аяксе не силен, поэтому даже спорить не будуSmiley
Просто для меня парсинг страниц для получения цены - это как в дом через дымоход лезть при открытой двери.
unixty
Jr. Member
*
Offline Offline

Activity: 168
Merit: 1

ImmVRse | Disrupting the VR industry


View Profile WWW
June 10, 2018, 09:37:35 PM
 #15

Желаю тебе избавиться от проблемы с api, путём ухода с yobit'а. Почитай про их обман с лизой и недавно выпущенными токенами с 1000% в день, очень занимательно

●  ❱❱  IMMVRSE | Disrupting the VR Industry  ❱❱  ●
Proud Sponsor of Blockchain 360 at London Tech Week
#Cryptoman
Member
**
Offline Offline

Activity: 980
Merit: 48


View Profile
June 11, 2018, 09:13:47 AM
 #16

Желаю тебе избавиться от проблемы с api, путём ухода с yobit'а. Почитай про их обман с лизой и недавно выпущенными токенами с 1000% в день, очень занимательно

Лиза это скам монета, не имеющая даже блокчейна, каждый кто её покупал, сам виноват в этом.
Что бы на йобите (да и не только) не обжечься, не следует покупать монеты что не входят в топ 20...

Йобит может быть интересен тем, что на крупных и мелких биржах курс выравнен, а на йобите он как правило альтернативный, и рывки ВСЕГДА запаздывают,
т.е. можно успеть что-то продать или купить.


https://indx.ru криптобиржа от вебмоней, не воруют, не требуют доказательств происхождения средств.
lokomoko (OP)
Newbie
*
Offline Offline

Activity: 60
Merit: 0


View Profile
June 20, 2018, 10:45:16 PM
 #17

Желаю тебе избавиться от проблемы с api, путём ухода с yobit'а. Почитай про их обман с лизой и недавно выпущенными токенами с 1000% в день, очень занимательно
Биржа таким образом просто зарабатывает на больших оборотах и комиссиях. Кстати, там было не 1000% в день, а 100%, но это особо не играет роли. Я покупать их не собирался и не собираюсь. Как написали выше, меня интересуют другие нюансы на которых можно заработать.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!