STAVOCHKA.com - форум о ставках на спорт и букмекерских конторах

форум игроков в букмекерских конторах
Текущее время: Чт июл 02, 2020 9:56 am

СТАВОЧКА - бесплатные прогнозы на спорт!


Лучшие в нашем рейтинге букмекеров: Sbobet (8.15/10) - Pinnaclesports (7.84/10) - William Hill (6.61/10) - Bet365 (7.47/10) ******** ГОЛОСУЙТЕ В РЕЙТИНГЕ БУКМЕКЕРОВ >>>




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как сделать бота для Betfair
СообщениеДобавлено: Пт окт 26, 2012 3:37 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Пн июн 30, 2003 10:23 pm
Сообщения: 103187
Благодарил (а): 8217 раз.
Поблагодарили: 5991 раз.
Рано или поздно любой игрок на бирже Betfair приходит к выводу, что он уже почти нащупал золотую жилу и было бы неплохо этот вопрос автоматизировать. Ну что ж, "дорогие мои" (С), такая возможность, действительно есть.

Для доступа к своей системе Betfair предлагает множество разнообразных способов, среди которых -

1) основной сайт www.betfair.com,

2) облегченная версия, ориентированная на мобильные телефоны и КПК lite.betfair.com,

3) специальная JAVA программа для доступа через тот же мобильный телефон или КПК mobile.betfair.com, а также, внимание,

4) доступ через специальный программный интерфейс, так называемый Betfair Free API. Следует признать что этот самый Betfair Free API был гениальным маркетинговым ходом. Поскольку, именно благодаря ему на рынке программного обеспечения можно найти десятки программ, с помощью которых можно облегчить и автоматизировать игру на бирже. А означает привлечь тысячи и тысячи новых пользователей.

Так что же это, черт возьми, такое этот загадочный Betfair Free API? Страшная аббревиатура API означает всего лишь Application Program Interface, или по-русски - интерфейс программного доступа к приложению. Betfair определил и открыл для свободного использования некий набор функций, вызывая которые можно просматривать рынки, делать/отменять ставки, просматривать свой счет ну и так далее. Одним словом, делать все тоже самое что и на веб-сайте. Более того, все эти операции, которые вы делаете на основном сайте незаметно для пользователя перенаправляются к соответствующей функции из Betfair API.

Сам Betfair Free API ничего сложного из себя не представляет. Это всего лишь два безобидных файла, увидеть которые можно здесь и здесь. Именно в этих файлах и описана вся программно доступная функциональность серверов Betfair. Именно здесь описаны все доступные функции сервера и порядок работы с ними. Если сказать, что функций много - это не сказать ничего, функций очень много. Есть даже функции для депозита и снятия денег. Т.е. будущий бот может даже баблос выводить с Betfair обратно на карту, а вам остается только сидеть в окружении блондинок на берегу бассейна и потягивать виски :)))

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

(c) http://faqbetfair.blogspot.com/2010/03/ ... api-1.html

_________________
Актуальные бонусы букмекеров
Лучшие бесплатные прогнозы Ру-нета
ВИП-Ставочка - революционный сервис прогнозов!


Вернуться к началу
 Профиль  
Ответить с цитатой  

 Заголовок сообщения: Re: Как сделать бота для Betfair
СообщениеДобавлено: Пт окт 26, 2012 3:46 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Пн июн 30, 2003 10:23 pm
Сообщения: 103187
Благодарил (а): 8217 раз.
Поблагодарили: 5991 раз.
Прежде чем начать разговор о написании софта для биржи Batfair, я хотел бы обратить внимание будущих миллионеров на страницу посвященную документации по Betfair Free API. На странице выложено множество примеров программирования на нескольких языках, а именно Visual Basic, Java, PHP, C#. В принципе этих примеров уже должно быть достаточно для самостоятельного изучения предметной области. Также на сайте, кроме всего прочего доступен для свободного скачивания самый главный документ - Betfair Sports Exchange API Reference Manual. Полное руководство по всем функциям входящим в состав Betfair API, а такж основные принципы работы с API. Документ доступен как в виде PDF, так и виде онлайн документации.

В этом месте я уже начинаю слышать возмущенные голоса насчет того, что "там же ж" все написано по-английски! На что я отвечу, что если вы в школе/институте вместо занятий пили пиво на лавочке, то ваш удел это ставки в Марафоне на реал пэ адин и продолжение распития того же пива на той же лавочке. Без английского языка в программировании Betfair нехрен делать. ИМХО. Владея только русским разобраться будет очень сложно.

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

Живет в Британии такой чувак Colin Magee. Так вот этот дядя написал и издал пока единственную (!) книгу о написании программного обеспечения для работы с биржей Betfair посредством доступа к Free API. Книга называется Automatic Exchange Betting.


В книге автор проходит весь путь написания собственного бота. Начиная с настройки Linux, подготовки среды программирования, загрузки нужных библиотек, программирования собственных стратегий и заканчивая записью истории коэффициентов в базу данных для дальнейшего анализа. Для программирования выбран скриптовый язык Perl. Так что, если кто программировал на этом языке, то вам повезло. Если кто кодил на PHP, то повезло меньше, хотя весь ход легко поддается портированию с Perl на PHP. Если же со скриптовыми языками вы никогда не сталкивались, то это отличный повод заняться изучением Perl :-)

Книга буквально напичкана примерами реализации доступа к различным функциям Free API применительно к ставкам на скачки. Примеров использования очень много. Буквально каждый вызов детально разжевывается.

Объем книги 360 страниц, твердый переплет. Превосходная полиграфия и качество бумаги. Кароче я купил эту книгу не задумываясь, и о потраченных 45 фунтах нисколько не жалею. Да, книга на английском. А никто не обещал что будет легко :-)

(c) http://faqbetfair.blogspot.com/2010/04/ ... api-2.html

_________________
Актуальные бонусы букмекеров
Лучшие бесплатные прогнозы Ру-нета
ВИП-Ставочка - революционный сервис прогнозов!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать бота для Betfair
СообщениеДобавлено: Пт окт 26, 2012 3:56 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Пн июн 30, 2003 10:23 pm
Сообщения: 103187
Благодарил (а): 8217 раз.
Поблагодарили: 5991 раз.
Все на этих ботах помешались. Только и слышно - Куплю бота! Продам бота! Напишу бота! Украду бота! Обману бота!
Почему же эти боты (программы автоматической торговли на бирже) такие популярные? А потому, что на бирже им позволено делать все, что позволено делать людям - следить за рынками и делать ставки. Только вот боты могут делать эту работу в тысячи раз быстрее чем человек.

Попробую в этом посте раскрыть тайну написания ботов. Для начала реализуем функцию автоматического логина к бирже с помощью бота. Использовать я буду, специально предназначенное для этого Betfair API. На самом деле, ничего страшно сложного в нем нет. При современном развитии инструментариев для разработчиков ПО, написать (вернее создать) программу можно даже не обладая знаниями программирования. Хотя, для нашей конкретной области, ботописательства, отсутствие знаний элементарных вещей может обернуться большими убытками. Поэтому, хотя бы начальные знания программирования лишними не окажутся.

Итак, вперед! Написание ботов для домохозяеек!

Для написания ботов я выбрал язык программирования Java, поскольку этот язык очень простой и понятный даже такому тупому валенку как я. И поскольку писать бот мы будем на языке Java, то для начала следует установить эту самую Яву. Я думаю, что Java Runtime у вас на машине уже, скорее всего, установлен. Но нам для разработки требуется Java SDK, качаем последний релиз здесь Java SE Development Kit 6 Update 35. Установка не должна вызвать проблем

Далее, требуется установить среду разработки. Мне нравится Netbeans. Качаем версию Netbeans 7.2 здесь. Выбирать для загрузки следует сборку Java SE. Во время установки среды разработки Netbeans можно отказаться от установки серверов приложений GlassFish и TomCat, сняв соответствующие галочки. Они нам для разработки не понадобятся, а места занимают много.

Все готово. Через 10 минут у вас будет готов первый бот который уже умеет логиниться к Betfair с помошью Betfair Free API!

Запускаем Netbeans. В меню "Файл" выбираем "Создать новый проект". В открывшемся окне щелкаем на категорию Java, а в проектах выбираем Java Application и клацаем Next. В следующем окне можно изменить название проекта, но лучше не надо, )) (по умолчанию это JavaApplication1) и поставить галочку на опции "Create main class" (Создать класс Main). Все, Finish.

Изображение

Теперь самое главное. Надо указать Нетбинсу, что мы будем работать с биржей с помощью протокола SOAP. Для этого кладем пальчик на правую кнопку мыши и клацаем на наш проект. В выпадающем меню выбираем "New", а затем "Web Service Client". Если такого пункта меню сразу не видно, то его надо разыскать в подменю "Other" -> "WebService" -> "Web Service Client".

Изображение

В открывшемся окне "New Web Service Client" выбираем WSDL URL и в соответствующем ему текстовом поле вставляем следующий урл - https://api.betfair.com/global/v3/BFGlobalService.wsdl. Клацаем Финиш и ждем пока Netbeans загрузит файл по этому урлу, а затем создаст все необходимые классы для работы с Betfair с помощью Betfair Free API.

Изображение

Теперь повторяем все то же самое (создаем еще один Web Service Client), но указываем уже другой урл - https://api.betfair.com/exchange/v5/BFE ... rvice.wsdl.
Если кому интересно, то эти урлы я взял из документации на Betfair API, страница 10. Документация доступна здесь в HTML и здесь в PDF форматах. Без знакомства с этим документом что-либо создавать будет очень сложно. Справка по АПИ, разумеется, на английском языке. Но это мне кажется даже лучше, поскольку в наше интересное время английским не владеют только гопота и эскимосы, а подобные документы следует читать в оригинале.

Итак полдела сделано. Остались сущие пустяки. В только что созданном проекте ищем файл JavaApplication1.java. Это и есть исходный код нашей программы. Изменяем его до следующего вида.

Код:
package javaapplication1;
 
import com.betfair.publicapi.types.global.v3.LoginReq;
import com.betfair.publicapi.types.global.v3.LoginResp;
import com.betfair.publicapi.v3.bfglobalservice.BFGlobalService;
import com.betfair.publicapi.v3.bfglobalservice.BFGlobalService_Service;
import com.betfair.publicapi.v5.bfexchangeservice.BFExchangeService;
import com.betfair.publicapi.v5.bfexchangeservice.BFExchangeService_Service;
 
public class JavaApplication1 {
 
    public static void main(String[] args) {
            String sessionToken = "";
             
            BFGlobalService_Service WSDLService_Global = new BFGlobalService_Service();
            BFGlobalService WSDLPort_Global = WSDLService_Global.getBFGlobalService();
 
            BFExchangeService_Service WSDLService_Exchange = new BFExchangeService_Service();
            BFExchangeService WSDLPort_Exchange = WSDLService_Exchange.getBFExchangeService();
             
            LoginReq request = new LoginReq();
            request.setUsername("login");
            request.setPassword("password");
            request.setProductId(82);
            request.setVendorSoftwareId(0);
            request.setIpAddress("0");
            request.setLocationId(0);
             
            LoginResp result = WSDLPort_Global.login(request);
             
            System.out.println("Логин на Betfair - " + result.getErrorCode().toString());
            if (result.getErrorCode().toString().equals("OK")) {
                sessionToken = result.getHeader().getSessionToken();
                System.out.println("Текущий session Token - " + result.getHeader().getSessionToken());
            }
    }
}


Вот и все. Жмакнув F5 или запустив программу из меню "Run", можно увидеть результат запуска программы в окошечке Output внизу экрана - строку содержащую тип ошибки (например, Betfair API можно пользоваться только если на твоем счету есть отличная от нуля сумма) или ОК если логин прошел успешно. Естественно, запустить программу можно и без Нетбинса. Для этого кликаем на корень проекта правой кнопкой мышки и в выпадающем меню выбираем Build или Clean and Build. После этого в иерархии папок появится папка dist, а в ней и будет находится исполняемый файл программы - JavaApplication1.jar. Запустить его из консоли просто. Надо набрать следующую команду java -jar JavaApplication1.jar

Теперь быстренько пробежимся по коду.
Строка 13. В переменной sessionToken будет храниться идентификатор сессии (что такое идентификатор сессии читай в документации на странице 16 главы 2). Этот идентификатор надо будет передавать всем следующим запросам к бирже.
Строки 15-19. В этих переменных хранится нечто, что должно использоваться для вызова любого запроса к бирже. Деталей я не знаю и знать не хочу. Знаю только, что эти переменные проинициализировать надо один раз и затем использовать для каждого вызова. Поскольку при каждой инициализации эта штука будет скачивать с сайта Betfair файл BFGlobalService.wsdl, а он по размеру не маленький. Около 1.5Мб.
И еще, важно понимать, что все вызовы API делятся на две части Global и Exchange. В документации возле описания каждой функции большими буквами, черным по белому написано, к какой категории данный вызов относится. Если это Global функция (какой, например, является функция Login), то дергать ее следует из переменной WSDLPort_Global. Если же это Exchange функция, то дергать ее уже следут из переменной WSDLPort_Exchange.
Строки 21-27. Создание и инициализация логина к бирже. В строке 24 значением 82 инициализируется поле запроса productID. Это как раз и есть указание на то, что мы будем пользоваться именно Free API. Если я был счастливым обладателем платного доступа к бирже, то в это поле необходимо было бы поставить, число которое мне выдал бы менеджер биржи. Детали здесь. В отличие от платного доступа, бесплатный доступ с помощью Free API имеет кое-какие ограничения. Сравнение различных способов доступа смотрим здесь.
Строка 29. Собственно запрос логина к бирже.
Строка 31. Печать результата на экран (в консоль)
Строка 33. В случае успешного логина сохранение идентификатора сессии для передачи всем последующим вызовам.

Ну вот и все, начало положено. В следующем посте расскажу как запросить текущие рынки с биржи. Хотя те кому надо и сами дальше смогут разобраться. Дополнительные материалы по разработке на Java ищите в известном месте. Также есть русскоязычный форум для Betfair и Betdaq разработчиков (Да, биржа Betdaq тоже предоставляет бесплатный API для доступа к своей бирже для разработчиков, которые хотят автоматизировать свои алгоритмы и на этой бирже). Форум правда не очень посещаемый, но кто-то там тусуется.

P. S. В виду последних событий, этот пост немного запоздал. Поскольку Betfair API, в скором времени, перейдет с технологии SOAP на JSON. Но все таки, я надеюсь, что может быть кому-то эта тема будет еще интересна. Тем более, что еще как минимум 1.5 года Betfair API будет работать используя протокол SOAP. И пусть эти страшные аббревиатуры вас не пугают. Всю грязную работу за вас сделает среда разработки.

(c) http://faqbetfair.blogspot.com/2012/09/ ... -java.html

_________________
Актуальные бонусы букмекеров
Лучшие бесплатные прогнозы Ру-нета
ВИП-Ставочка - революционный сервис прогнозов!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать бота для Betfair
СообщениеДобавлено: Пт окт 26, 2012 4:07 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Пн июн 30, 2003 10:23 pm
Сообщения: 103187
Благодарил (а): 8217 раз.
Поблагодарили: 5991 раз.
Продолжаем создавать бот для автоматического доступа к бирже Betfair. В конце концов, в последней части, у нас получится полностью законченный бот. Что же он будет делать? Ну, допустим, пусть он будет расставлять минимальную ставку LAY с коэффициентом 1.01 на все вновь появившиеся теннисные рынки.

Итак, в это части добавим в бот, который уже умеет логиниться к бирже, способность получать новые рынки. Внизу измененный код, из предыдущего примера, который умеет это делать. Изменить следует основной фал исходного кода программы JavaApplication1.java (не забудьте подставить свой логин и пароль к бирже в строках 27 и 28)

Код:
package javaapplication1;
 
import com.betfair.publicapi.types.exchange.v5.ArrayOfInt;
import com.betfair.publicapi.types.exchange.v5.GetAllMarketsReq;
import com.betfair.publicapi.types.exchange.v5.GetAllMarketsResp;
import com.betfair.publicapi.types.global.v3.LoginReq;
import com.betfair.publicapi.types.global.v3.LoginResp;
import com.betfair.publicapi.v3.bfglobalservice.BFGlobalService;
import com.betfair.publicapi.v3.bfglobalservice.BFGlobalService_Service;
import com.betfair.publicapi.v5.bfexchangeservice.BFExchangeService;
import com.betfair.publicapi.v5.bfexchangeservice.BFExchangeService_Service;
import java.util.ArrayList;
 
public class JavaApplication1 {
 
    public static void main(String[] args) {
            String sessionToken = "";
            com.betfair.publicapi.types.exchange.v5.APIRequestHeader exchangeHeader = new com.betfair.publicapi.types.exchange.v5.APIRequestHeader();
             
            BFGlobalService_Service WSDLService_Global = new BFGlobalService_Service();
            BFGlobalService WSDLPort_Global = WSDLService_Global.getBFGlobalService();
 
            BFExchangeService_Service WSDLService_Exchange = new BFExchangeService_Service();
            BFExchangeService WSDLPort_Exchange = WSDLService_Exchange.getBFExchangeService();
             
            LoginReq loginRequest = new LoginReq();
            loginRequest.setUsername("mylogToBetfair");
            loginRequest.setPassword("mypassword");
            loginRequest.setProductId(82);
            loginRequest.setVendorSoftwareId(0);
            loginRequest.setIpAddress("0");
            loginRequest.setLocationId(0);
             
            LoginResp result = WSDLPort_Global.login(loginRequest);
             
            System.out.println("Логин на Betfair - " + result.getErrorCode().toString());
            if (result.getErrorCode().toString().equals("OK")) {
                sessionToken = result.getHeader().getSessionToken();
                System.out.println("Текущий session Token - " + result.getHeader().getSessionToken());
            } else {
                // По какой-то причине логин не получился. Выход из программы
                System.exit(0);
            }
             
            /*********** Готовим запрос и запрашиваем все теннисные рынки **************/
             
            // Готовим заголовок для запроса
            exchangeHeader.setSessionToken(sessionToken);
            exchangeHeader.setClientStamp(0);
             
            // Готовим запрос всех теннисных рынков
            GetAllMarketsReq allMarketsRequest = new GetAllMarketsReq();
            // Добавляем в запрос заголовок запроса
            allMarketsRequest.setHeader(exchangeHeader);
            allMarketsRequest.setLocale("en");
            // Создаем массив интересущих нас видов спорта
            ArrayOfInt array = new ArrayOfInt();
            // Добавляем в этот массив число 2 соответствующее теннису
            // Например, для футбола это 1.
            // Соответствие чисел видам спорта смотрим здесь http://data.betfair.com/sportids.htm?rfr=15929
            array.getInt().add(2);
            // Подставляем в массив видов спорта в запрос
            allMarketsRequest.setEventTypeIds(array);
             
            // Запрос готов! Отправляем его на сайт Betfair
            GetAllMarketsResp resp = WSDLPort_Exchange.getAllMarkets(allMarketsRequest);
 
            System.out.println("Ответ на запрос рынков - " + resp.getErrorCode().toString());
            // Проверяем ответ. Сравниваем его со строкой ОК
            if (!resp.getErrorCode().toString().equals("OK")) {
                // Запрос завершился неудачно. Выходим из программы
                System.out.println("Ответ на запрос рынков - " + resp.getErrorCode().toString());
                System.exit(0);
            }
            // Разбираем весь запрос.
            ArrayList<MyMarketInfo>> markets = MarketsParser.parseMarkets(resp.getMarketData());
            if (markets.isEmpty()) {
                System.out.println("Не получено ни одного рынка в ответе на запрос рынков");
                System.exit(0);
            } else {
                System.out.println("Получено всего " + markets.size() + " рынков в ответе на запрос рынков");
            }
             
            // Из всего множества теннисных рынков формируем массив
            // который будет содержать только рынки Match Odds (ставки на победителя в матче)
            ArrayLis<MyMarketInfo> matchOddsMarkets = new ArrayList<MyMarketInfo>();
            for (int i = 0; i < markets.size(); i++) {
                if (markets.get(i).getMarketName().equals("Match Odds")) {
                    matchOddsMarkets.add(markets.get(i));
                }
            }
            // Печатаем количество Match Odds рынков или выходим из программы если таких рынков не обнаружено
            if (matchOddsMarkets.isEmpty()) {
                System.out.println("Не найдено ни одного Match Odds рынка");
                System.exit(0);
            } else {
                System.out.println("Получено всего " + matchOddsMarkets.size() + " Macth Odds рынков в ответе на запрос теннисных рынков");
            }
             
            // Печатаем все полученные рынки на экран
            for (int i = 0; i < matchOddsMarkets.size(); i++) {
                System.out.println((i+1) + ". " + matchOddsMarkets.get(i).getEventName() + ", " + matchOddsMarkets.get(i).getMarketMenuPath());
            }
    }
}
 
class MarketsParser {
}
 
class MyMarketInfo {
}


Пробежимся по коду.

Строки 48, 49. Готовим заголовок для запроса рынков. Подставляем в заголовок сессионный ключ полученный в ответе на логин. Это делается для того что бы не надо было в каждом запросе вставлять свой логин и пароль.

Строки 52-63. Готовим запрос к бирже для получения всех возможных теннисных рынков. То, что нас интересуют только теннисные рынки указано в строке 61. Об этом говорит число 2. Если б нас интересовал еще и футбол, то надо было бы написать в следующей строке array.getInt().add(2). У каждого вида спорта есть свое число которое надо подставлять в запрос. Список всех возможных чисел смотрим здесь.

Строка 66. Отправляем, только что сформированный запрос на биржу.

Строки 68-74. Проверяем код ошибки и завершаем программу если код ошибки отличается от строки "ОК".

Строки 76-82. Разбираем ответ биржи. Внимание! Ответ от биржи будет получен в виде одной строки следующего уродливого вида -
Код:
106955486~Match Odds~O~ACTIVE~1349238600000~\Tennis\Group A\China Open 2012\Womens Tournament\Second Round Matches\Bartoli v Morita~/2/26900942/26901463/26901449/26901677/106955486~0~1~CHN~1349038369954~2~1~0.0~N~Y:106955487~Set Betting~O~ACTIVE~1349238600000~\Tennis\Group A\China Open 2012\Womens Tournament\Second Round Matches\Bartoli v Morita~/2/26900942/26901463/26901449/26901677/106955487~0~1~CHN~1349038369954~4~1~0.0~N~Y


Новичку в программировании поначалу сложно будет извлечь полезную информацию из этой информационной свалки. Поэтому я облегчу ваши страдания. Я написал специальный класс который будет за мгновение ока разбирать эту строку и создавать отдельный объект типа MyMarketInfo для каждого найденного рынка. Что бы не загромождать страницу я не привел описания этих классов здесь. Однако, я приложу весь исходный текст программы целиком в конце этой заметки. Вам надо будет только скопипасить его на место кода написанного в предыдущем посте.

Строки 86-91. Фильтруем все найденные рынки и отбираем рынки которые называются Match Odds. Что соответствует обычным ставкам на победителя в теннисном матче. Собираем отфильтрованные рынки в переменной массиве matchOddsMarkets.

Строки 92-103. Распечатываем количество полученных теннисных рынков, а также все Match Odds рынки с названиями рынков.

Весь исходный текст программы в одном файле JavaApplication1.java

_________________
Актуальные бонусы букмекеров
Лучшие бесплатные прогнозы Ру-нета
ВИП-Ставочка - революционный сервис прогнозов!


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

СТАВОЧКА - бесплатные прогнозы на спорт!


Лучшие в нашем рейтинге букмекеров: Sbobet (8.15/10) - Pinnaclesports (7.84/10) - William Hill (6.61/10) - Bet365 (7.47/10) ******** ГОЛОСУЙТЕ В РЕЙТИНГЕ БУКМЕКЕРОВ >>>


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

POWERED_BY
Русская поддержка phpBB
[ Time : 0.055s | 17 Queries | GZIP : Off ]
Реклама
Рейтинг