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


- - - - -

Выборка списка отдельного вида спорта VB2010


35 ответов в эту тему

#1 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 20 November 2012 - 17:57

Доброе время суток,только начал изучать программирование с целью написания бота,поэтому не судите строго,подскажите,пожалуйста,как создать процедуру отбора списка футбольных матчей,по критериям:
а)определение страны(исключить не нужные для торговли)
б)матч на перерыве
в)кол-во голов в 1 тайме: от 0 до 2:рынок нужен тм голов в 1 тайме+3
г)коэф ЗА тм рынка больше заданного значения

оставшиеся после отбора рынки вывести на listbox

#2 OFFLINE   proger

    Специалист


  • RSB
  • ПипПипПип
  • 193 сообщения
49

Добавлено 20 November 2012 - 19:38

a)forum.bdp.betfair.com/showpost.php?p=256&postcount=6
б)пункт неясен,матч,который тока что на перерыв ушел или что?если так, то можно постоянно обновлять по примеру в а) пункте что дал,там следить,когда маркеты первого тайма закрываются,ну или ешо вариант парсить ливескоре или бф инплай с первой страницы
в)тут надо уточнить что имеется в виду
г)getMarketPricesCompressed вызовом указав marketId,примеры есть опять же в теме по моему линку.

#3 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 21 November 2012 - 04:06

Я задал вопрос здесь,а не на bdp из-за не знания английского,
б)да,ушел на перерыв
в)если 0 голов,тотал 3.5,если 1 гол-4.5, 2-5.5
г) при использовании getMarketPricesCompressed при отладке выскакивает ошибка с цифрой 65***
уже что только не делал-не получается...список нужных рынков не выводится

#4 OFFLINE   denvb

    Специалист


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

Добавлено 21 November 2012 - 08:22

Буквально за углом Jericho соорудил песочницу для начинающих ботостроителей, для начала посмотрите эти темы Ссылка Здесь и Ссылка Здесь

в его функцию "PopulateListView" легко добавить фильтр по стране (есть там переменная mPlace). Получение и сравнение кэфов ЗА тоже есть в коде.

Цитата

б)матч на перерыве
запоминаем ID рынка "Перерыв" и мониторим через "getMarketInfo()" пока он не сменит статус на "CLOSED".

Цитата

в)кол-во голов в 1 тайме: от 0 до 2:рынок нужен тм голов в 1 тайме+3
здесь можно определять точный счёт как учил Sector: "я узнаю счет по рынку "результат" - в какой строке от сначала находится первая заявка Back, такой и счет". Или пройтись по рынкам тоталов, посмотреть какие уже закрыты.

Цитата

при отладке выскакивает ошибка с цифрой 65***
очень подозреваю, что буфер приема у проекта задан по умолчанию 65536, а ответ приходит большего размера, вот студия и ругается, поправьте App.config

#5 OFFLINE   proger

    Специалист


  • RSB
  • ПипПипПип
  • 193 сообщения
49

Добавлено 21 November 2012 - 10:27

Сообщенияdenvb, on 21 November 2012 - 08:22, сказал:

Буквально за углом Jericho соорудил песочницу для начинающих ботостроителей, для начала посмотрите эти темы Ссылка Здесь и Ссылка Здесь
кaкраз хотел дать эту сылку,но не нашел,вообчем надо тему Yericho в верх других прикрепить

Отредактировано koni, 21 November 2012 - 10:37.


#6 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 22 November 2012 - 10:29

Подскажите,как правильно организовать массив,сейчас выводится для 1 страны, а мне нужно для 10 стран
ReDim .countries(0) : .countries(0) = "TUR"

#7 OFFLINE   proger

    Специалист


  • RSB
  • ПипПипПип
  • 193 сообщения
49

Добавлено 22 November 2012 - 10:52

ReDim .countries(2) : .countries(0) = "GBR" : .countries(1) = "IRL" : .countries(2) = "USA"
нужные коды стран в инете много где можно наити,надо ISO codes искать countrycode.org/

#8 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 22 November 2012 - 11:02

Сообщенияkoni, on 22 November 2012 - 10:52, сказал:

ReDim .countries(2) : .countries(0) = "GBR" : .countries(1) = "IRL" : .countries(2) = "USA"
нужные коды стран в инете много где можно наити,надо ISO codes искать countrycode.org/

спасибо,а как правильно определить что матч на перерыве но 2 тайм еще не начался?

#9 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 10:22

Ошибка десериализации тела ответного сообщения для операции "getAllMarkets".

Private Sub bMarkets_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bMarkets.Click
	    Print("*** Markets ***")
	    Dim oMarketsReq As New BFUK.GetAllMarketsReq
	    Dim oMarketsResp As BFUK.GetAllMarketsResp
	    With oMarketsReq
		    .header = oHeaderUK()
		    ReDim .eventTypeIds(0) : .eventTypeIds(0) = 1  'For horse racing
		    ReDim .countries(1) : .countries(0) = "TUR" : .countries(1) = "ZAF"
		    .fromDate = Today
		    .toDate = Today.AddDays(1)
	    End With
	    oMarketsResp = BetFairUK.getAllMarkets(oMarketsReq)  'Call the UK API
	    With oMarketsResp
		    CheckHeader(.header)
		    Print("ErrorCode = " & .errorCode.ToString)
		    If .errorCode = BFUK.GetAllMarketsErrorEnum.OK Then
			    Print(.marketData)
		    End If
	    End With
    End Sub

причем для скачек работает,а при футболе выдает ошибку...в чем проблема?

#10 OFFLINE   AlexX

    Специалист


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

Добавлено 29 November 2012 - 11:09

Найди в проекте файл app.config

исправь значения:
maxBufferSize="999999999"
maxBufferPoolSize="524288"
maxReceivedMessageSize="999999999"

#11 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 11:25

СообщенияAlexX, on 29 November 2012 - 11:09, сказал:

Найди в проекте файл app.config

исправь значения:
maxBufferSize="999999999"
maxBufferPoolSize="524288"
maxReceivedMessageSize="999999999"


все равно ошибка в строчке
oMarketsResp = BetFairUK.getAllMarkets(oMarketsReq)
maxBufferPoolSize тоже ставил 999999999
не помогло

#12 OFFLINE   AlexX

    Специалист


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

Добавлено 29 November 2012 - 11:29

Сообщенияnikola86, on 29 November 2012 - 11:25, сказал:

все равно ошибка в строчке
oMarketsResp = BetFairUK.getAllMarkets(oMarketsReq)
maxBufferPoolSize тоже ставил 999999999
не помогло

Выложи полный код, вечером отвечу...

#13 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 11:44

СообщенияAlexX, on 29 November 2012 - 11:29, сказал:

Выложи полный код, вечером отвечу...
Public Class TestForm
	Const SessTokFile = "C:\Betfair\SessToken.txt"
	Public BetfairGL As New BFGlobal.BFGlobalServiceClient
	Public BetFairUK As New BFUK.BFExchangeServiceClient
	Public oHeaderGL As New BFGlobal.APIRequestHeader
	Private Sub TestForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		oHeaderGL.sessionToken = My.Computer.FileSystem.ReadAllText(SessTokFile)
	End Sub
	Private Sub TestForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
		My.Computer.FileSystem.WriteAllText(SessTokFile, oHeaderGL.sessionToken, False)
	End Sub
	Function oHeaderUK() As BFUK.APIRequestHeader
		Dim Header As New BFUK.APIRequestHeader
		Header.sessionToken = oHeaderGL.sessionToken
		Return Header
	End Function
	Sub CheckHeader(ByVal Header As BFGlobal.APIResponseHeader)
		With Header
			Print("HeaderCode = " & .errorCode.ToString)
			oHeaderGL.sessionToken = .sessionToken
		End With
	End Sub
	Sub CheckHeader(ByVal Header As BFUK.APIResponseHeader)
		With Header
			Print("HeaderCode = " & .errorCode.ToString)
			oHeaderGL.sessionToken = .sessionToken
		End With
	End Sub
	Sub Print(ByVal Message As String)
		With tLog
			.SelectionStart = .Text.Length
			.SelectedText = vbCrLf & Message
		End With
	End Sub
	Private Sub bLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bLogin.Click
		tLog.Clear()
		Print("*** Login ***")
		Dim oLoginReq As New BFGlobal.LoginReq
		Dim oLoginResp As BFGlobal.LoginResp
		With oLoginReq
			.username = "username"
			.password = "password"
			.productId = 82		   'For free API
		End With
		oLoginResp = BetfairGL.login(oLoginReq)	 'Call the API
		With oLoginResp
			CheckHeader(.header)
			Print("ErrorCode = " & .errorCode.ToString)
		End With
	End Sub
	Private Sub bLogout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bLogout.Click
		tLog.Clear()
		Print("*** Logout ***")
		Dim oLogoutReq As New BFGlobal.LogoutReq
		Dim oLogoutResp As BFGlobal.LogoutResp
		oLogoutReq.header = oHeaderGL
		oLogoutResp = BetfairGL.logout(oLogoutReq)	 'Call the API
		With oLogoutResp
			CheckHeader(.header)
			Print("ErrorCode = " & .errorCode.ToString)
		End With
	End Sub
	Private Sub bKeepAlive_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bKeepAlive.Click
		tLog.Clear()
		Print("*** KeepAlive ***")
		Dim oKeepAliveReq As New BFGlobal.KeepAliveReq
		Dim oKeepAliveResp As BFGlobal.KeepAliveResp
		oKeepAliveReq.header = oHeaderGL
		oKeepAliveResp = BetfairGL.keepAlive(oKeepAliveReq)	 'Call the API
		CheckHeader(oKeepAliveResp.header)
	End Sub
	Private Sub bEvents_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bEvents.Click
		tLog.Clear()
		Print("*** Events ***")
		Dim oEventsReq As New BFGlobal.GetEventTypesReq		 'Create the request object
		Dim oEventsResp As BFGlobal.GetEventTypesResp		   'Create a variable for the response object
		oEventsReq.header = oHeaderGL							   'Load request parameters
		oEventsResp = BetfairGL.getActiveEventTypes(oEventsReq)	 'Call the API
		With oEventsResp
			CheckHeader(.header)									  'Check response header
			Print("ErrorCode = " & .errorCode.ToString)
			If .errorCode = BFGlobal.GetEventsErrorEnum.OK Then	   'Check the response errorcode
				For i = 0 To .eventTypeItems.Length - 1				'Process the received data
					With .eventTypeItems(i)
						Print(.name & " (" & .id & ")")
					End With
				Next
			End If
		End With
	End Sub
	Private Sub bMarkets_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bMarkets.Click
		Print("*** Markets ***")
		Dim oMarketsReq As New BFUK.GetAllMarketsReq
		Dim oMarketsResp As BFUK.GetAllMarketsResp
		With oMarketsReq
			.header = oHeaderUK()
			ReDim .eventTypeIds(0) : .eventTypeIds(0) = 1  'For horse racing
			ReDim .countries(1) : .countries(0) = "TUR" : .countries(1) = "ZAF"
			.fromDate = Today
			.toDate = Today.AddDays(1)
		End With
	   [color=#FF0000] oMarketsResp = BetFairUK.getAllMarkets(oMarketsReq)[/color][color=#B22222]  '[/color]Call the UK API
		With oMarketsResp
			CheckHeader(.header)
			Print("ErrorCode = " & .errorCode.ToString)
			If .errorCode = BFUK.GetAllMarketsErrorEnum.OK Then
				Print(.marketData)
			End If
		End With
	End Sub
End Class

красная строчка высвечивается

Отредактировано nikola86, 29 November 2012 - 11:46.


#14 OFFLINE   proger

    Специалист


  • RSB
  • ПипПипПип
  • 193 сообщения
49

Добавлено 29 November 2012 - 12:12

возможно просто небыло событий по этим странам .countries(0) = "TUR" : .countries(1) = "ZAF" за один день,можно вовсе прокоментировать эту строку кода,тогда будут даные за день по всем старнам
и что за ошыбка то?запостил бы

#15 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 12:28

Сообщенияkoni, on 29 November 2012 - 12:12, сказал:

возможно просто небыло событий по этим странам .countries(0) = "TUR" : .countries(1) = "ZAF" за один день,можно вовсе прокоментировать эту строку кода,тогда будут даные за день по всем старнам
и что за ошыбка то?запостил бы
Ошибка десериализации тела ответного сообщения для операции "getAllMarkets".

и турция сегодня играет...

Вот собственно ошибка

Attached File(s)



#16 OFFLINE   proger

    Специалист


  • RSB
  • ПипПипПип
  • 193 сообщения
49

Добавлено 29 November 2012 - 12:37

Dim AllMarkets As New UnpackAllMarkets(.marketData) ‘Create an object and unpack the string
With AllMarkets
For i = 0 To .marketData.Length - 1
With .marketData(i)
Print(.marketID & " " & .marketStatus & " " & .marketName & “ “ & .menuPath)
End With
Next
End With

etot kod vmesto Print(.marketData)


dalshe novyv modul sozdaesh nazvanie "Unpack" ,vnutri ego kladesh:
Class MarketDataType 'For getAllMarkets data
Public marketId As Integer
Public marketName As String
Public marketType As String
Public marketStatus As String
Public eventDate As DateTime
Public menuPath As String
Public eventHeirachy As String
Public betDelay As Integer
Public exchangeId As Integer
Public countryCode As String
Public lastRefresh As DateTime
Public noOfRunners As Integer
Public noOfWinners As Integer
Public totalAmountMatched As Double
Public bspMarket As Boolean
Public turningInPlay As Boolean
End Class

Class UnpackAllMarkets 'For getAllMArkets
Public marketData As MarketDataType() = {} 'The returned array of market data
Private Const BaseDate As DateTime = #1/1/1970#
Private Const ColonCode = "&%^@" 'The substitute code for "\:"

Sub New(ByVal MarketString As String)
Dim n As Integer, Mdata, Field As String()

Mdata = MarketString.Replace("\:", ColonCode).Split(":") 'Get array of Market substrings
n = UBound(Mdata) - 1
ReDim marketData(n)

For i = 0 To n
Field = Mdata(i + 1).Replace("\~", "-").Split("~") 'Get array of data fields
marketData(i) = New MarketDataType
With marketData(i)
.marketId = Field(0) 'Load the array items
.marketName = Field(1).Replace(ColonCode, ":")
.marketType = Field(2)
.marketStatus = Field(3)
.eventDate = BaseDate.AddMilliseconds(Field(4))
.menuPath = Field(5).Replace(ColonCode, ":")
.eventHeirachy = Field(6)
.betDelay = Field(7)
.exchangeId = Field(8)
.countryCode = Field(9)
.lastRefresh = BaseDate.AddMilliseconds(Field(10))
.noOfRunners = Field(11)
.noOfWinners = Field(12)
.totalAmountMatched = Val(Field(13))
.bspMarket = (Field(14) = "Y")
.turningInPlay = (Field(15) = "Y")

End With
Next
End Sub
End Class

#17 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 13:45

Сообщенияkoni, on 29 November 2012 - 12:37, сказал:

Dim AllMarkets As New UnpackAllMarkets(.marketData) ‘Create an object and unpack the string
With AllMarkets
For i = 0 To .marketData.Length - 1
With .marketData(i)
Print(.marketID & " " & .marketStatus & " " & .marketName & “ “ & .menuPath)
End With
Next
End With

etot kod vmesto Print(.marketData)


dalshe novyv modul sozdaesh nazvanie "Unpack" ,vnutri ego kladesh:
Class MarketDataType 'For getAllMarkets data
Public marketId As Integer
Public marketName As String
Public marketType As String
Public marketStatus As String
Public eventDate As DateTime
Public menuPath As String
Public eventHeirachy As String
Public betDelay As Integer
Public exchangeId As Integer
Public countryCode As String
Public lastRefresh As DateTime
Public noOfRunners As Integer
Public noOfWinners As Integer
Public totalAmountMatched As Double
Public bspMarket As Boolean
Public turningInPlay As Boolean
End Class

Class UnpackAllMarkets 'For getAllMArkets
Public marketData As MarketDataType() = {} 'The returned array of market data
Private Const BaseDate As DateTime = #1/1/1970#
Private Const ColonCode = "&%^@" 'The substitute code for "\:"

Sub New(ByVal MarketString As String)
Dim n As Integer, Mdata, Field As String()

Mdata = MarketString.Replace("\:", ColonCode).Split(":") 'Get array of Market substrings
n = UBound(Mdata) - 1
ReDim marketData(n)

For i = 0 To n
Field = Mdata(i + 1).Replace("\~", "-").Split("~") 'Get array of data fields
marketData(i) = New MarketDataType
With marketData(i)
.marketId = Field(0) 'Load the array items
.marketName = Field(1).Replace(ColonCode, ":")
.marketType = Field(2)
.marketStatus = Field(3)
.eventDate = BaseDate.AddMilliseconds(Field(4))
.menuPath = Field(5).Replace(ColonCode, ":")
.eventHeirachy = Field(6)
.betDelay = Field(7)
.exchangeId = Field(8)
.countryCode = Field(9)
.lastRefresh = BaseDate.AddMilliseconds(Field(10))
.noOfRunners = Field(11)
.noOfWinners = Field(12)
.totalAmountMatched = Val(Field(13))
.bspMarket = (Field(14) = "Y")
.turningInPlay = (Field(15) = "Y")

End With
Next
End Sub
End Class
ничего не изменилось-та же ошибка...

#18 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 15:18

Исключение CommunicationException вызывается при ошибке связи в службе или клиентском приложении.Исключение CommunicationException вызывается при ошибке связи в службе или клиентском приложении.

это на майкрософте вычитал

#19 OFFLINE   AlexX

    Специалист


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

Добавлено 29 November 2012 - 15:53

Сообщенияnikola86, on 29 November 2012 - 15:18, сказал:

Исключение CommunicationException вызывается при ошибке связи в службе или клиентском приложении.Исключение CommunicationException вызывается при ошибке связи в службе или клиентском приложении.

это на майкрософте вычитал

Попробуй создать "новое проект"

#20 OFFLINE   nikola86

    Новичок


  • Участник
  • Пип
  • 22 сообщения
0

Добавлено 29 November 2012 - 16:22

СообщенияAlexX, on 29 November 2012 - 15:53, сказал:

Попробуй создать "новое проект"
пробовал...даже на другом компе создавал...тоже самое
попробуй сам,создай форму,на нее 5 кнопок и текстбокс,в код формы брось мой код,ну и в проект добавь 2 ссылки. если сработает,скинешь мне исходник...