Перепрыгнеть в содержание


- - - - -

Вопросы по программированию на API


106 ответов в эту тему

#41 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 11 December 2013 - 18:07

Сообщенияbardmauzer, on 11 December 2013 - 18:00, сказал:

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

#42 OFFLINE   Sert

    Специалист


  • mp
  • 1412 сообщения
298

Добавлено 11 December 2013 - 18:45

СообщенияАртений, on 11 December 2013 - 18:07, сказал:

не совсем понятно зачем нужен сайт, но можно
Затем, что он в Энтэрнете :lol:

#43 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 11 December 2013 - 18:51

СообщенияАртений, on 11 December 2013 - 18:07, сказал:

не совсем понятно зачем нужен сайт, но можно
Ну у меня проблема,в том,что я нахожусь в Испании.Написал себе бота.Чтобы он работал,я использую ВПН.Но ,не знаю почему,ВПН периодически слетает.Задолбался уже.Да и пинг большой.Вот я и подумал,создать сайт в зоне Англии или России и запускать с него бота.Если так можно,убедительная просьба,кто знает как это сделать,подсказать.

#44 OFFLINE   triggers

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


  • Участник II
  • ПипПипПипПип
  • 989 сообщения
184

Добавлено 11 December 2013 - 20:44

Купить VPS.

#45 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 11 December 2013 - 21:27

Сообщенияtriggers, on 11 December 2013 - 20:44, сказал:

Купить VPS.
А можно чуть поподробней и чем отличается от ВПН.А то когда у меня слетает ВПН,то и роутер начинает перегружаться и интернет вместе с ним.Без ВПН инет работает стабильно.

#46 OFFLINE   Sert

    Специалист


  • mp
  • 1412 сообщения
298

Добавлено 12 December 2013 - 08:01

Регулярные падения vpn - это проблема многих сетей, откажитесь от такой архитектуры, ответ на ваш вопрос дал triggers. Т.е. арендуете vps, затем по rdp заходите туда, ставите бота и вперед, за медалями мира беттинга :)

#47 OFFLINE   bardmauzer

    Специалист


  • Участник II
  • ПипПипПип
  • 368 сообщения
63

Добавлено 12 December 2013 - 12:06

СообщенияSert, on 12 December 2013 - 08:01, сказал:

Регулярные падения vpn - это проблема многих сетей, откажитесь от такой архитектуры, ответ на ваш вопрос дал triggers. Т.е. арендуете vps, затем по rdp заходите туда, ставите бота и вперед, за медалями мира беттинга :)
Хорошо,спасибо за совет.Пойду искать соответствующую литературу.

#48 OFFLINE   Cobal't

    Пунтер


  • Участник II
  • ПипПип
  • 90 сообщения
7

Добавлено 12 December 2013 - 12:28

А VPS работают круглосуточно без перезагрузки? Или у разных фирм по разному? Что будет если на сервере винда подвиснет? Звонить в саппорт?

#49 OFFLINE   Sert

    Специалист


  • mp
  • 1412 сообщения
298

Добавлено 13 December 2013 - 09:08

Большинство поставщиков услуг гарантируют 99.(9)% времени работы, т.е. только какие-то сбои могут прервать работу. Да, звонить-писать в поддержку.

#50 OFFLINE   WellDoneSoft

    Специалист


  • Участник II
  • ПипПипПип
  • 165 сообщения
24
  • МестоположениеLondon, UK

Добавлено 19 December 2013 - 16:25

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

#51 OFFLINE   clerk

    Специалист


  • Модератор
  • 584 сообщения
102

Добавлено 23 January 2014 - 11:30

В связи с грядущим изменением АПИ БФ, возможно кому-то будет интересен перевод поста о примере запроса API-NG Адрес первоисточника - в заголовке. Прошу простить за возможные неточности перевода



API-NG: C# Example forum.bdp.betfair.com/showthread.php?t=2164


Я привожу здесь свое C# решение для доступа к новому API. У меня были некоторые проблемы с выполнением официального примера, а мой вариант, мне кажется, более работоспособен. Приведенный код является прототипом, предназначенным для понимания основных действий. Поэтому вы не найдете в нем обработки ошибок, поскольку я запускаю код в отладчике.
Чтобы воспроизвести решение, вы должны создать новый проект в Visual Studio. Затем Вы должны добавить Newtonsoft Json (VS 2012 имеет хорошие возможности поиска online предоставлений). Далее добавляем новый класс "ResponseClass". В "Form 1" я бросил простую кнопку и добавил следующий код:

private void button1_Click(object sender, EventArgs e)
	    {
		    ResponseClass resp = new ResponseClass();
	  	  resp.ResponseTest();
	    }
Наша цель - создать простой запрос с возвратом всех EventTypes. Фильтр должен быть пустым. Чтобы создать правильный Json я использую "Linq на JSON".
Переходим в форму ResponseClass, где добавляем следующие директивы использования:

using System.Net;
using System.IO;
using Newtonsoft.Json.Linq;
В конечном счете, мы включаем Класс EventTypes. Класс пустой поскольку у нас нет критериев фильтра и моя первая цель в том, чтобы получить ответ json для выяснения работоспособности кода запроса.

public class EventTypes
    { }
Вот код ResponseClass. Основан на официальном куске кода
https://api.developer.betfair.com/se...pageId=3834049
а для части JSON я использовал Json.Net Documentation
(james.newtonking.com/json/help/index.html) / Samples / LINQ to JSON / Create Json form anonymous Type

public class ResponseClass : WebClient
    {
	    public void ResponseTest()
	    {
		    // 1. Request Object
 
		    string token = "your_token";
		    string key = "your_app_key"; // delayed AppKey
		    string address = "https://api.betfair.com/exchange/betting/rest/v1.0/listEventTypes/";
 
		    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
		    request.Method = "POST";
		    request.ContentType = "application/json";
		    request.ContentLength = 0;
   		 request.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8");
		    request.Accept = "application/json";
		    request.Headers.Add("X-Application", key);
		    request.Headers.Add("X-Authentication", token);
 
		    // 2. Market Filter (as JSON)
		    JObject postData = CreateFilter();
 
		    // 3. Transfer MarketFilter in Request
		    var bytes = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
		    request.ContentLength = bytes.Length;
 
		    using (Stream stream = request.GetRequestStream())
		    {
			    stream.Write(bytes, 0, bytes.Length);
		    }
 
		    // 4. Get WebResponse 
			
			WebResponse response = GetWebResponse(request);
 
		    // 5. Process Response
 
		    using (Stream stream = response.GetResponseStream())
		    using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
		    {
			    var jsonResponse = reader.ReadToEnd();
   			 string result = jsonResponse;
		    }
 
	    }
 
	    public JObject CreateFilter()
	    {
		    List<EventTypes> evt = new List<EventTypes> 
			{
			    new EventTypes
			    {
			    } 
			};
 
		    JObject json_obj = JObject.FromObject(new
		    {
			    filter = new
			    {
			    }
		    });
 
		    return json_obj;
	    }
    }
Как результат операции вы получите строку со всеми данными, но интерпретация этих данных будет значительно легче. Я долго бился, чтобы получить ответ. Сейчас мне кажется, что писать код в VB будет труднее, поскольку синтаксис в VB не совсем подходит для JSON. Конечно, найдется решение и для VB, но это будет сделано более опытными программистами, чем я. Я не претендую на то, что я представил наилучшее решение, но я имею такое решение, какое я понимаю и могу сформировать.

Далее следует ряд ответов, один из них про VB.NET

Благодарю за предоставленный результат вашего труда. Я был заинтригован вашим использованием Jobject в запросе и постараюсь рассмотреть это в vb.net, потому как не силен в использовании C# и преобразованиях языков. Тем не менее в данное время я могу получить все используя кошмарные строки с двойным цитированием:



'~~> Begin Request Strings Json Rpc Web Request
    Function CreateRequest(AppKey As String, SessToken As String, postData As String)
	    Dim Url As String = "https://api.betfair.com/exchange/betting/json-rpc/v1/"
	    Dim request As WebRequest = Nothing
	    Dim dataStream As Stream = Nothing
	    Dim response As WebResponse = Nothing
	    Dim strResponseStatus As String = ""
	    Dim reader As StreamReader = Nothing
	    Dim responseFromServer As String = ""
	    Try
		    request = WebRequest.Create(New Uri(Url))
		    request.Method = "POST"
		    request.ContentType = "application/json-rpc"
		    request.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8")
		    request.Headers.Add("X-Application", AppKey)
		    request.Headers.Add("X-Authentication", SessToken)
		    '~~> Data to post such as ListEvents, ListMarketCatalogue etc
		    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
		    '~~> Set the ContentLength property of the WebRequest.
		    request.ContentLength = byteArray.Length
		    '~~> Get the request stream.
		    dataStream = request.GetRequestStream()
		    '~~> Write the data to the request stream.
   		 dataStream.Write(byteArray, 0, byteArray.Length)
		    '~~> Close the Stream object.
		    dataStream.Close()
		    '~~> Get the response.
		    response = request.GetResponse()
		    '~~> Display the status below if required
		    '~~> Dim strStatus as String = CType(response, HttpWebResponse).StatusDescription
		    strResponseStatus = CType(response, HttpWebResponse).StatusDescription
		    '~~> Get the stream containing content returned by the server.
		    dataStream = response.GetResponseStream()
		    '~~> Open the stream using a StreamReader for easy access.
		    reader = New StreamReader(dataStream)
		    '~~> Read the content.
		    responseFromServer = reader.ReadToEnd()
		    '~~> Display the content below if required
		    '~~>Dim strShowResponse as String = responseFromServer  '~~>If required
	    Catch ex As Exception
		    '~~> Show any errors in this method for an error log etc Just use a messagebox for now
		    MsgBox("CreateRequest Error" & vbCrLf & ex.Message)
	    End Try
	    Return responseFromServer   '~~> Function Output
	    '~~> Clean up the streams.
	    reader.Close()
	    dataStream.Close()
	    response.Close()
    End Function '~~>Creates the requst for Data to be loaded
'*** here is the Requst String for you to play around with the parameters
    Dim strCatReq = "{""jsonrpc"": ""2.0"",""method"":""SportsAPING/v1.0/listMarketCatalogue"",""params"":{""filter"":{""eventTypeIds"":[""7""],""marketCountries"":[""GB""] ,""marketTypeCodes"":[""WIN""]},""marketStartTime"":[],""venues"":[],""sort"":""FIRST_TO_START"",""maxResults"":""6"",""marketProjection"":[""RUNNER_DESCRIPTION"",""MARKET_START_TIME"",""EVENT""],""marketStatus"":""OPEN"" },""id"": 1}"


Затем Код Формы, чтобы Отображать Ответ
Code:

 Private Sub btnTestJson_Click(sender As Object, e As EventArgs) Handles btnTestJson.Click
	    txtTester.Text = CreateRequest(txtLiveKey.Text, txtSessionToken.Text, strCatReq)
    End Sub



#52 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 24 January 2014 - 09:38

Такой вопрос:
Ф-ия Get Market Profit And Loss (exchange)
Не могу понять смысл этого параметра:
includeSettledBets N Boolean If Y, then the P&L calculation for each runner includes any profit and loss from any bets on runners that have already been settled. The default is N, which matches the default on Betfair.com.

Кто-нибудь может прояснить?

#53 OFFLINE   Sert

    Специалист


  • mp
  • 1412 сообщения
298

Добавлено 24 January 2014 - 11:58

Я этой функцией не пользуюсь, поэтому точно не скажу, но предположу, что при значении Y в ответ будут отданы профиты и убытки с учетом расмещенных, но еще не спаренных ставок.

#54 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 24 January 2014 - 15:16

СообщенияSert, on 24 January 2014 - 11:58, сказал:

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

#55 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 27 January 2014 - 13:48

И ещё вопрос связанный с расчётом прибыли, на сайте Бетфэир есть такая полезная фича:
Show a "what if" figure (prefixed »). If you have made a selection and entered the odds for the bet on the place bets tab, then this option allows you to see what effect the bet will have on your profit and loss assuming it is matched. Note that this does not include currently unmatched bets.
(источник: help.betfair.info/contents/itemId/i65767349/index.en.html)

Доступна ли аналогичная функциональность посредством API? Я не нашёл. Либо может кто подскажет формулы для расчёта этих значений?

Отредактировано Артений, 27 January 2014 - 13:50.


#56 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 28 January 2014 - 22:30

Блин, и на bdp форуме не спросить, почему-то пишет что нет прав: shot.qip.ru/00gQwW-6PXOGWFo3/
Кто-нибудь пробовал там тред создать?

#57 OFFLINE   AlexX

    Специалист


  • mp
  • 1106 сообщения
133

Добавлено 29 January 2014 - 00:13

СообщенияАртений, on 28 January 2014 - 22:30, сказал:

Блин, и на bdp форуме не спросить, почему-то пишет что нет прав: shot.qip.ru/00gQwW-6PXOGWFo3/
Кто-нибудь пробовал там тред создать?

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

По поводу регистрации когда ты буд. авторезирован на бф заходи в регистрацию там нужно ввести только новый логин и пасс для bdp остальное автоматом в форму ляжет.

Отредактировано AlexX, 29 January 2014 - 00:17.


#58 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 29 January 2014 - 10:16

Спрошу здесь, может кто прояснит: api-ng, если посмотреть MarketBook, то status там описан как перечисление (enum), при этом в коментарии указаны варианты ACTIVE и SETTLED
Прикрепленный файл  marketbook_status.png   9.3K   0 Количество загрузок

однако в описании этого перечисления их просто нет
Прикрепленный файл  marketbook_status2.png   3.11K   0 Количество загрузок

а если посмотреть официальные примеры, то, например, в коде на java этот status вообще имеет тип String. Как это понимать? С перечислением конечно проще работать, чем со строкой, но очень смущает несоответствие вариантов, да и не ясно какие значения могут быть?

#59 OFFLINE   AlexX

    Специалист


  • mp
  • 1106 сообщения
133

Добавлено 29 January 2014 - 10:27

В дискрипшине написано for example.
А значения будут те что вы указали в скрине MarketStatus

#60 OFFLINE   Артений

    воин добра и света


  • Участник II
  • ПипПипПип
  • 336 сообщения
0
  • МестоположениеРоссия, Центральное Черноземье

Добавлено 29 January 2014 - 11:04

СообщенияAlexX, on 29 January 2014 - 00:13, сказал:

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

По поводу регистрации когда ты буд. авторезирован на бф заходи в регистрацию там нужно ввести только новый логин и пасс для bdp остальное автоматом в форму ляжет.

Так в том то и дело что я зарегистрирован там! Смотри на картинке вверху справа - Logged In написано.
А по поводу json - я пока его не смотрел по той же причине (про то что он платный типа с апреля или когда там), но там тоже нет такой функциональности ("what if?"), да?

Может кто подскажет формулы для датчинга (если это датчинг), в общем надо захеджировать рынок с несколькими исходами (например 10), ест-но интересует случай, когда есть заматченные ставки на несколько исходов.

Отредактировано Артений, 29 January 2014 - 11:11.