34
Betfair API-NG, тонкости
arksu, Aug 26 2014 00:21
#1
26 August 2014 - 00:21
Занимаюсь разработкой бота. Ковыряю новомодный API от бф.
сталкиваюсь с некоторыми тонкостями работы с ним.
к примеру. если использовать delayed AppKey то рынок сильно (очень сильно) отстает от реального. а также количество ставок по рынку = 5 иногда чуть больше. то есть мы не видим ladder. что торгуется также не приходит.
но стоит сменить AppKey на рабочий как все сразу меняется.
вообщем несколько часов убил на это.
и теперь вопрос к тем кто также что-то писал под этот апи.
делаю запрос listMarketBook "marketIds" : [123], priceProjection" : {"priceData" : ["EX_ALL_OFFERS", "EX_TRADED"], "exBestOffersOverrides":{"bestPricesDepth":30},"locale" : "RU" }- в результате приходит пустота на некоторых рынках
причем по одному событию (футбол) только 2 или 3 рынка приходят пустыми. остальные пашут корректно.
если делаю тот же запрос тут https://developer.be...rts-operations/
то все отлично. данные вижу.
в чем причина? кто-нибудь сталкивался?
сталкиваюсь с некоторыми тонкостями работы с ним.
к примеру. если использовать delayed AppKey то рынок сильно (очень сильно) отстает от реального. а также количество ставок по рынку = 5 иногда чуть больше. то есть мы не видим ladder. что торгуется также не приходит.
но стоит сменить AppKey на рабочий как все сразу меняется.
вообщем несколько часов убил на это.
и теперь вопрос к тем кто также что-то писал под этот апи.
делаю запрос listMarketBook "marketIds" : [123], priceProjection" : {"priceData" : ["EX_ALL_OFFERS", "EX_TRADED"], "exBestOffersOverrides":{"bestPricesDepth":30},"locale" : "RU" }- в результате приходит пустота на некоторых рынках
причем по одному событию (футбол) только 2 или 3 рынка приходят пустыми. остальные пашут корректно.
если делаю тот же запрос тут https://developer.be...rts-operations/
то все отлично. данные вижу.
в чем причина? кто-нибудь сталкивался?
#2
16 September 2014 - 22:11
отвечу сам себе) чтобы другие не попадали.
не очень внимательно читал документацию. marketId - это строка. и все ид рынков обязательно заключать в кавычки. после этого рынки стали приходить нормально
аналогично с другими параметрами. если в доке написано string - значит всегда в кавычки
по большей части бот готов. API освоил.
уже есть первые результаты от выставления ставок. режим работы бота круглосуточно.
не очень внимательно читал документацию. marketId - это строка. и все ид рынков обязательно заключать в кавычки. после этого рынки стали приходить нормально
аналогично с другими параметрами. если в доке написано string - значит всегда в кавычки
по большей части бот готов. API освоил.
уже есть первые результаты от выставления ставок. режим работы бота круглосуточно.
#3
17 September 2014 - 07:10
шо за бот?
#4
17 September 2014 - 11:01
обычный бот. выставление ставок, торговля...
#5
17 September 2014 - 15:43
На каком языке пишешь?
#6
17 September 2014 - 17:05
Я вообще пока не могу вникнуть в json(
#7
17 September 2014 - 17:36
Зачем в него глубоко вникать? Практически все необходимое для работы бота выложено в примерах бота, работающих как консоли. Не вошедшие в пример запросы делаются по аналогии. Порядок подключения самой библиотеки многократно описан в сети. Вам что непонятно?
#8
17 September 2014 - 18:59
я использую Delphi, т.к. давно с ней знаком (да я знаю еще кучу других языков, но на них пришлось бы потратить несколько больше времени)
использую ряд библиотек для облегчения жизни. для HTTP - это ICS
для json - superobject
gzip, bass и прочее...
в итоге получился довольно быстрый бот который не сильно грузит проц, не жрет память и не валится с ошибками.
была цель написать именно быстрого бота, который сможет стоять на сотнях рынков одновременно и успевать реагировать.
в выходные тестировал 120 рынков онлайн на 1 клиенте. полет нормальный.
использую ряд библиотек для облегчения жизни. для HTTP - это ICS
для json - superobject
gzip, bass и прочее...
в итоге получился довольно быстрый бот который не сильно грузит проц, не жрет память и не валится с ошибками.
была цель написать именно быстрого бота, который сможет стоять на сотнях рынков одновременно и успевать реагировать.
в выходные тестировал 120 рынков онлайн на 1 клиенте. полет нормальный.
#9
17 September 2014 - 19:14
напишу по теме. собственно все есть в доках.
но это ключевая фишка именно NG и почему я решил писать именно под этот АПИ.
в одном запросе listMarketBook тобишь запрос рынков. можно запросить сразу кучу рынков с кучи разных событий. и все придет в одном запросе. соответственно сильно увеличивается количество рынков которые можем мониторить до получения сообщения TOO_MANY_REQUESTS.
но есть один ньюанс. у каждого параметра в listMarketBook есть свой "вес" и вес в одном запросе не должен превышать 200 единиц...
но это ключевая фишка именно NG и почему я решил писать именно под этот АПИ.
в одном запросе listMarketBook тобишь запрос рынков. можно запросить сразу кучу рынков с кучи разных событий. и все придет в одном запросе. соответственно сильно увеличивается количество рынков которые можем мониторить до получения сообщения TOO_MANY_REQUESTS.
но есть один ньюанс. у каждого параметра в listMarketBook есть свой "вес" и вес в одном запросе не должен превышать 200 единиц...
#10
18 September 2014 - 08:30
Фрагменты из официальной документации стали тонкостями?
arksu, не сочти за грубость, но предположу, что как истинный кодер с кучей языков, ты сразу ринулся в бой. Однако суровая реальность заставила полистать мануалы. Иначе не понимаю смысла пихать дабл вместо стринга... Но раз освоил NG, было бы интересно узнать действительно о тонкостях, чего нет в доке, что придумал сам.
Да хотя бы кто что предпочитает, RPC или REST и почему? Я спрашивал об этом на оффоруме, у обоих есть свои поклонники, но внятного объяснения своего выбора так и не услышал. А между тем, если покопать суть, то протоколы то разные, начиная с разницы в весе (небольшой конечно, но разницы).
могу подсказать, если есть конкретные вопросы. А так, для работы с JavaScript Object Notation вне javascript просто берём хорошую библиотеку
arksu, не сочти за грубость, но предположу, что как истинный кодер с кучей языков, ты сразу ринулся в бой. Однако суровая реальность заставила полистать мануалы. Иначе не понимаю смысла пихать дабл вместо стринга... Но раз освоил NG, было бы интересно узнать действительно о тонкостях, чего нет в доке, что придумал сам.
Да хотя бы кто что предпочитает, RPC или REST и почему? Я спрашивал об этом на оффоруме, у обоих есть свои поклонники, но внятного объяснения своего выбора так и не услышал. А между тем, если покопать суть, то протоколы то разные, начиная с разницы в весе (небольшой конечно, но разницы).
Я вообще пока не могу вникнуть в json(
#11
19 September 2014 - 08:00
marketId хранил в string, только забыл кавычки прописать в запросе. и ведь работало пока тестил. как понадобилось много рынков полезли косяки.
сам я ничего особого не придумал. обычный пул запросов.... gzip сжатие.
что реально я понял сам так это ограничение на количество запросов когда валится TOO_MANY_REQUESTS не зависит от сессии. двумя клиентами с разных токенов слал запросы. обоим шел отлуп. хотя они не достигали предела по одиночке.
возможно удастся обойти это используя прокси чтобы бф видел запросы с разных ip, это пока не тестил.
сам я ничего особого не придумал. обычный пул запросов.... gzip сжатие.
что реально я понял сам так это ограничение на количество запросов когда валится TOO_MANY_REQUESTS не зависит от сессии. двумя клиентами с разных токенов слал запросы. обоим шел отлуп. хотя они не достигали предела по одиночке.
возможно удастся обойти это используя прокси чтобы бф видел запросы с разных ip, это пока не тестил.
#12
19 September 2014 - 08:08
Думается, что работа одного пользователя с двух разных ip одновременно не увеличит предел запросов, но вот интерес службы безопасности БФ, скорее всего, вызовет. Может, зарегить на БФ еще кого-нибудь и разделить "сферы влияния"?
#13
19 September 2014 - 08:25
что реально я понял сам так это ограничение на количество запросов когда валится TOO_MANY_REQUESTS не зависит от сессии. двумя клиентами с разных токенов слал запросы. обоим шел отлуп. хотя они не достигали предела по одиночке.
возможно удастся обойти это используя прокси чтобы бф видел запросы с разных ip, это пока не тестил.
возможно удастся обойти это используя прокси чтобы бф видел запросы с разных ip, это пока не тестил.
Думается, что работа одного пользователя с двух разных ip одновременно не увеличит предел запросов, но вот интерес службы безопасности БФ, скорее всего, вызовет. Может, зарегить на БФ еще кого-нибудь и разделить "сферы влияния"?
#14
19 September 2014 - 10:16
Всегда думал, что пользователь может запросить свой AppKey и использовать его в своей копии бота. Нет?
Или я не понял вас, denvb?
Или я не понял вас, denvb?
#15
19 September 2014 - 10:47
Всегда думал, что пользователь может запросить свой AppKey и использовать его в своей копии бота. Нет?
Или я не понял вас, denvb?
Или я не понял вас, denvb?
Такая мысль - а можно на одном аккаунте создать несколько ключей? Если да, то как будут лимитироваться запросы? Это можно проверить, да только вряд ли бетфаер позволит так по-детски себя обманывать
#16
19 September 2014 - 13:43
Конечно на разных аккаунтах будут разные ключи. Но как я понял, ТС запускает 2 копии бота на одном своём акке и с одним и тем же ключиком.
Такая мысль - а можно на одном аккаунте создать несколько ключей? Если да, то как будут лимитироваться запросы? Это можно проверить, да только вряд ли бетфаер позволит так по-детски себя обманывать
Такая мысль - а можно на одном аккаунте создать несколько ключей? Если да, то как будут лимитироваться запросы? Это можно проверить, да только вряд ли бетфаер позволит так по-детски себя обманывать
Ключ, думается, для того и ввели, чтобы упростить контроль.
По поводу ключей - попробуйте в визуализаторе сформировать запрос на новый ключ под своим акком. Мне кажется, что ключ вам дадут, но будет ли действителен старый? Впрочем, можно спросить и на форуме у разработчиков апи.
#17
19 September 2014 - 17:05
точно) про ключи забыл.
сегодня протестирую можно ли работать под одним акком с разными ключами
сегодня протестирую можно ли работать под одним акком с разными ключами
#18
28 September 2014 - 09:22
У меня вопрос к программерам,что нужно изучать,чтобы понять принцип API-NG?Может какие ссылки на литературу имеются?Я не программист,но сам себе написал и довольно удачно на C# бота под Free API.Теперь вот хочу освоить API-NG.И еще один вопрос,бесплатнo ли использование API-NG?
#20
29 September 2014 - 17:45
на данный момент работает 5 схем.
разглашать не вижу смысла) иначе они перестанут работать
вилки не ловит. не вижу смысла. редкость и выхлоп мизерный.
использование API-NG - бесплатно.
разглашать не вижу смысла) иначе они перестанут работать
вилки не ловит. не вижу смысла. редкость и выхлоп мизерный.
использование API-NG - бесплатно.