•         

* * * * * 1

Betfair API-NG, тонкости


#1   arksu

    Новичок


  • Участник
  • 12
-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/
то все отлично. данные вижу.

в чем причина? кто-нибудь сталкивался?

#2   arksu

    Новичок


  • Участник
  • 12
-1

16 September 2014 - 22:11

отвечу сам себе) чтобы другие не попадали.
не очень внимательно читал документацию. marketId - это строка. и все ид рынков обязательно заключать в кавычки. после этого рынки стали приходить нормально
аналогично с другими параметрами. если в доке написано string - значит всегда в кавычки

по большей части бот готов. API освоил.
уже есть первые результаты от выставления ставок. режим работы бота круглосуточно.

#3   triggers

    Триггер Мастер


  • Участник II
  • 989
184

17 September 2014 - 07:10

шо за бот?

#4   arksu

    Новичок


  • Участник
  • 12
-1

17 September 2014 - 11:01

обычный бот. выставление ставок, торговля...

#5   vit2811

    Специалист


  • Участник II
  • 167
8

17 September 2014 - 15:43

На каком языке пишешь?

#6   pozitrone23

    ёпта


  • Участник II
  • 413
19
  • МестоположениеСаранск

17 September 2014 - 17:05

Я вообще пока не могу вникнуть в json(

#7   clerk

    Специалист


  • Модератор
  • 584
102

17 September 2014 - 17:36

Зачем в него глубоко вникать? Практически все необходимое для работы бота выложено в примерах бота, работающих как консоли. Не вошедшие в пример запросы делаются по аналогии. Порядок подключения самой библиотеки многократно описан в сети. Вам что непонятно?

#8   arksu

    Новичок


  • Участник
  • 12
-1

17 September 2014 - 18:59

я использую Delphi, т.к. давно с ней знаком (да я знаю еще кучу других языков, но на них пришлось бы потратить несколько больше времени)
использую ряд библиотек для облегчения жизни. для HTTP - это ICS
для json - superobject
gzip, bass и прочее...
в итоге получился довольно быстрый бот который не сильно грузит проц, не жрет память и не валится с ошибками.
была цель написать именно быстрого бота, который сможет стоять на сотнях рынков одновременно и успевать реагировать.
в выходные тестировал 120 рынков онлайн на 1 клиенте. полет нормальный.

#9   arksu

    Новичок


  • Участник
  • 12
-1

17 September 2014 - 19:14

напишу по теме. собственно все есть в доках.
но это ключевая фишка именно NG и почему я решил писать именно под этот АПИ.
в одном запросе listMarketBook тобишь запрос рынков. можно запросить сразу кучу рынков с кучи разных событий. и все придет в одном запросе. соответственно сильно увеличивается количество рынков которые можем мониторить до получения сообщения TOO_MANY_REQUESTS.
но есть один ньюанс. у каждого параметра в listMarketBook есть свой "вес" и вес в одном запросе не должен превышать 200 единиц...

#10   denvb

    Специалист


  • Участник II
  • 382
90

18 September 2014 - 08:30

Фрагменты из официальной документации стали тонкостями? :)
arksu, не сочти за грубость, но предположу, что как истинный кодер с кучей языков, ты сразу ринулся в бой. Однако суровая реальность заставила полистать мануалы. Иначе не понимаю смысла пихать дабл вместо стринга... Но раз освоил NG, было бы интересно узнать действительно о тонкостях, чего нет в доке, что придумал сам.

Да хотя бы кто что предпочитает, RPC или REST и почему? Я спрашивал об этом на оффоруме, у обоих есть свои поклонники, но внятного объяснения своего выбора так и не услышал. А между тем, если покопать суть, то протоколы то разные, начиная с разницы в весе (небольшой конечно, но разницы).

Я вообще пока не могу вникнуть в json(
могу подсказать, если есть конкретные вопросы. А так, для работы с JavaScript Object Notation вне javascript просто берём хорошую библиотеку

#11   arksu

    Новичок


  • Участник
  • 12
-1

19 September 2014 - 08:00

marketId хранил в string, только забыл кавычки прописать в запросе. и ведь работало пока тестил. как понадобилось много рынков полезли косяки.
сам я ничего особого не придумал. обычный пул запросов.... gzip сжатие.
что реально я понял сам так это ограничение на количество запросов когда валится TOO_MANY_REQUESTS не зависит от сессии. двумя клиентами с разных токенов слал запросы. обоим шел отлуп. хотя они не достигали предела по одиночке.
возможно удастся обойти это используя прокси чтобы бф видел запросы с разных ip, это пока не тестил.

#12   clerk

    Специалист


  • Модератор
  • 584
102

19 September 2014 - 08:08

Думается, что работа одного пользователя с двух разных ip одновременно не увеличит предел запросов, но вот интерес службы безопасности БФ, скорее всего, вызовет. Может, зарегить на БФ еще кого-нибудь и разделить "сферы влияния"?

#13   denvb

    Специалист


  • Участник II
  • 382
90

19 September 2014 - 08:25

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

Думается, что работа одного пользователя с двух разных ip одновременно не увеличит предел запросов, но вот интерес службы безопасности БФ, скорее всего, вызовет. Может, зарегить на БФ еще кого-нибудь и разделить "сферы влияния"?
думаю, что всё гораздо проще, AppKey то у двух ботов один и тот же

#14   clerk

    Специалист


  • Модератор
  • 584
102

19 September 2014 - 10:16

Всегда думал, что пользователь может запросить свой AppKey и использовать его в своей копии бота. Нет?
Или я не понял вас, denvb?

#15   denvb

    Специалист


  • Участник II
  • 382
90

19 September 2014 - 10:47

Всегда думал, что пользователь может запросить свой AppKey и использовать его в своей копии бота. Нет?
Или я не понял вас, denvb?
Конечно на разных аккаунтах будут разные ключи. Но как я понял, ТС запускает 2 копии бота на одном своём акке и с одним и тем же ключиком.

Такая мысль - а можно на одном аккаунте создать несколько ключей? Если да, то как будут лимитироваться запросы? Это можно проверить, да только вряд ли бетфаер позволит так по-детски себя обманывать

#16   clerk

    Специалист


  • Модератор
  • 584
102

19 September 2014 - 13:43

Конечно на разных аккаунтах будут разные ключи. Но как я понял, ТС запускает 2 копии бота на одном своём акке и с одним и тем же ключиком.

Такая мысль - а можно на одном аккаунте создать несколько ключей? Если да, то как будут лимитироваться запросы? Это можно проверить, да только вряд ли бетфаер позволит так по-детски себя обманывать
Я тоже именно так понял - два бота на одном акке. А уж на что будет реагировать БФ - на ключ или непосредственно на акк, наверное, не суть важно. На текущем апи - на акк, на новом - на ключ.
Ключ, думается, для того и ввели, чтобы упростить контроль.
По поводу ключей - попробуйте в визуализаторе сформировать запрос на новый ключ под своим акком. Мне кажется, что ключ вам дадут, но будет ли действителен старый? Впрочем, можно спросить и на форуме у разработчиков апи.

#17   arksu

    Новичок


  • Участник
  • 12
-1

19 September 2014 - 17:05

точно) про ключи забыл.
сегодня протестирую можно ли работать под одним акком с разными ключами

#18   bardmauzer

    Специалист


  • Участник II
  • 368
63

28 September 2014 - 09:22

У меня вопрос к программерам,что нужно изучать,чтобы понять принцип API-NG?Может какие ссылки на литературу имеются?Я не программист,но сам себе написал и довольно удачно на C# бота под Free API.Теперь вот хочу освоить API-NG.И еще один вопрос,бесплатнo ли использование API-NG?

#19   d_electric

    Пунтер


  • Banned
  • 42
1

28 September 2014 - 18:20

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

#20   arksu

    Новичок


  • Участник
  • 12
-1

29 September 2014 - 17:45

на данный момент работает 5 схем.
разглашать не вижу смысла) иначе они перестанут работать
вилки не ловит. не вижу смысла. редкость и выхлоп мизерный.

использование API-NG - бесплатно.