User Tag List
-
14/01/10, 10:34 AM #21InstituciónModerador
- Registrado
- Apr 2009
- Posts
- 2,135
- Agradecimientos
-
- 4395
- 2454
- Mencionado
- 40 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
De nada hombre. Gracias a ti por haber recapitulado todo en esta miniguía para que Scofield y otros puedan seguirla.
Ya nos irás contando tus progresos.
Un saludo
-
14/01/10, 03:14 PM #22Forobetero sénior
- Registrado
- Apr 2007
- Ubicación
- València
- Posts
- 506
- Agradecimientos
-
- 384
- 475
- Mencionado
- 0 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Gracias por el curro!! Creo que a más de uno le vendrá bien. Cuando tenga un rato y le meta mano yo también, iré comentando lo que va sucendiendo.
Salut.
-
14/01/10, 04:13 PM #23InstituciónModerador
- Registrado
- Apr 2009
- Posts
- 2,135
- Agradecimientos
-
- 4395
- 2454
- Mencionado
- 40 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Genial,
cuantos más seamos en esto mejor.
No dudéis en preguntar lo que sea, por muy tonto que parezca. Hay ciertas cosas que pueden resolverse en cuestión de minutos preguntando a alguien que ya haya pasado por ello y os ahorraréis tiempo y esfuerzo.
Mucho ánimo a ambos.
-
Total: 4 Agradecimientos
-
06/02/10, 06:07 AM #24Se siente como en casa
- Registrado
- May 2008
- Posts
- 1,097
- Agradecimientos
-
- 2692
- 2525
- Mencionado
- 2 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Vamos con el primer chorra-programa ejemplo. Antes de ello organicemos un poco lo que tenemos:
Además del código fuente APIDemo.java, tenemos los siguientes archivos de código:
En la carpeta util (\src\demo\util):
- APIContext.java
- DecompressionUtils.java
- InflatedMarketPrices.java
- UsageMap.java
- Display.java
- ExchangeAPI.java
- GlobalAPI.java
- BFExchangeServiceStub.java (en src\generated\exchange)
- BFGlobalServiceStub.java (en src\generated\global)
A parte del APIDemo.java, de todos éstos ficheros hay dos que son bastante ilustrativos, son el Display.java y el InflatedMarketPrices.java. (Todos son importantes, pero me centraré en estos dos).
El primero de ellos ( Display.java ), es el encargado de mostrar la información del programa por pantalla. Nos será muy útil observarlo porque así averiguaremos de qué forma guarda betfair los datos que luego salen por pantalla.
Además de éste archivo, tenemos el InflatedMarketPrices.java, éste es interesante porque posee la definición de las clases principales de la información de los mercados, corredores (runners), cantidad igualada, ...
Nos faltaría hablar de la clase que se encarga de hacer las apuestas (PlaceBets). El archivo ExchangeAPI.java es como una especie de interfaz que se encarga de introducir nuestras apuestas sin tener que lidiar con el siniestro BFExchangeServiceStub.java.
Modificaremos el código del ejemplo para que, una vez seleccionado un mercado, nos muestre el % de rendimiento del mercado (recordad que el back debería estar siempre por encima del 100% y el lay por debajo, ya que de lo contrario hayaríamos surebets).
Nos iremos a la función (método) showMarket, dentro del archivo Display.java y la modificaremos por la siguiente:
publicstaticvoid showMarket(Exchange exch, Market m, InflatedMarketPrices prices) {
// Display a subset of the market information. More information is available
// in the object, but not output at this point
double rendimiento_back=0.0;
double rendimiento_lay=0.0;
println("Market: "+m.getName()+"("+m.getMarketId()+") on the "+exch+" exchange:");
println(" Start time : "+m.getMarketTime().getTime());
println(" Status : "+m.getMarketStatus());
println(" Location : "+m.getCountryISO3());
println("");
println("Runners:");
for (InflatedRunner r: prices.getRunners()) {
Runner marketRunner = null;
for (Runner mr: m.getRunners().getRunner()) {
if (mr.getSelectionId() == r.getSelectionId()) {
marketRunner = mr;
break;
}
}
String bestLay = "";
if (r.getLayPrices().size() > 0) {
InflatedPrice p = r.getLayPrices().get(0);
bestLay = String.format("%,10.2f %s @ %,6.2f", p.getAmountAvailable(), prices.getCurrency(), p.getPrice());
//-------------------------------------------------------líquidez---------------moneda-----------cuota------
rendimiento_lay=rendimiento_lay+(1/p.getPrice());
}
String bestBack = "";
if (r.getBackPrices().size() > 0) {
InflatedPrice p = r.getBackPrices().get(0);
bestBack = String.format("%,10.2f %s @ %,6.2f", p.getAmountAvailable(), prices.getCurrency(), p.getPrice());
rendimiento_back=rendimiento_back+(1/p.getPrice());
}
println(String.format("%20s (%7d): Matched Amount: %,10.2f, Last Matched: %,6.2f, Best Back %s, Best Lay:%s"
, marketRunner.getName(), r.getSelectionId(), r.getTotalAmountMatched(), r.getLastPriceMatched(), bestBack, bestLay));
}
println("");
println("Rendimiento del mercado Backs = "+ (rendimiento_back*100)+ " %");
println("Rendimiento del mercado Lays = "+ (rendimiento_lay*100)+ " %");
println("");
}
Únicamente hemos añadido dos variables de tipo double: rendimiento_back y rendimiento_lay. Hemos ido sumando el inverso de las cuotas tanto para el back como para el lay en:
rendimiento_back=rendimiento_back+(1/p.getPrice());
rendimiento_lay=rendimiento_lay+(1/p.getPrice());
Y al final hemos sacado los datos obtenidos por pantalla en:
println("Rendimiento del mercado Backs = "+ (rendimiento_back*100)+ " %");
println("Rendimiento del mercado Lays = "+ (rendimiento_lay*100)+ " %");
println("");
El resto del código no lo hemos tocado.
Como aplicación de todo esto, compilé el programa y me metí de madrugada a un mercado australiano de carreras de caballos (los mercados de caballos suelen ser bastante eficientes minutos antes de empezar las carreras). Después de refrescar la pantalla durante un par de minutos, pude observar la siguiente situación (adjunto captura):
rendimiento de mercado.jpg
Como podéis observar, el lay está por encima del 100%, lo cual garantiza una surebet. Podríamos hacer ahora otro bot para intentar cogerla (siempre y cuando no se nos adelante alguien con otro bot )...
P.D. Disculpad si he dicho alguna burrada, recordad que yo tb. estoy aprendiendo.
Salu2!
-
08/02/10, 01:54 PM #25Forobetero sénior
- Registrado
- Apr 2007
- Ubicación
- València
- Posts
- 506
- Agradecimientos
-
- 384
- 475
- Mencionado
- 0 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Este hilo es de lo más didáctico que he visto relacionado con el tema. El hecho de explicar paso por paso cómo una persona con conocimientos (pueden ser básicos perfectamente) de programación puede montarse sus bots es muy muy útil. Yo aún no he encontrado tiempo para meterme en el asunto, pero seguro que empiezo releyendo este hilo.
Enhorabuena.
-
Galois ha(n) agradecido este postTotal: 1 Agradecimientos
-
15/02/10, 12:49 PM #26Forobetero sénior
- Registrado
- Apr 2007
- Ubicación
- València
- Posts
- 506
- Agradecimientos
-
- 384
- 475
- Mencionado
- 0 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Por cierto, cuál es el límite de consultas por hora para que no nos apliquen una sanción?? es decir, imaginemos que tengo un bot para partidos de futbol que sólo quiero que apueste cuando detecte gol.
Dejando a banda cómo se detecta un gol, el bot tendría que hacer consultas cada 30 o 60 segundos... cuántos partidos simultáneos podríamos tener??
-
15/02/10, 01:02 PM #27Institución
- Registrado
- Jul 2007
- Posts
- 11,111
- Agradecimientos
-
- 6236
- 20240
- Mencionado
- 193 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Si te refieres a partir de cuantas peticiones al API te cobra Betfair, la respuesta sencilla diría que es 20 peticiones por segundo.
La complicada:
http://www.betfair.com/www/GBR/en/ab...tfair.Charges/
Punto 5) en "Data Request Charges"
Como todo lo que hace últimamente Betfair, facilito de leer y de calcular
-
15/02/10, 01:46 PM #28Forobetero sénior
- Registrado
- Apr 2007
- Ubicación
- València
- Posts
- 506
- Agradecimientos
-
- 384
- 475
- Mencionado
- 0 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Bueno, entonces 20 peticiones por segundo nos da mucho margen para utilizar varios bots concurrentemente. Tenía entendido una cantidad mucho menor.
Gracias
-
15/02/10, 05:28 PM #29InstituciónModerador
- Registrado
- Apr 2009
- Posts
- 2,135
- Agradecimientos
-
- 4395
- 2454
- Mencionado
- 40 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
-
Scofield ha(n) agradecido este postTotal: 1 Agradecimientos
-
15/02/10, 05:29 PM #30Forobetero júnior
- Registrado
- Aug 2007
- Ubicación
- Seattle, WA, USA
- Posts
- 408
- Agradecimientos
-
- 306
- 979
- Mencionado
- 0 Post(s)
- Tagged
- 0 Hilo(s)
Re: Aprendiendo XML & API Betfair. Empezando desde 0.
Yo tengo entendido que hay dos modos de acceder a la API, gratis y pagando. La cifra de 20 requests por segundo es para la API de paga, pero para las consultas gratis del API el número es de 60 por minuto, lo cual es mucho menor.
F.
-
Scofield ha(n) agradecido este postTotal: 1 Agradecimientos
En este hilo http://foroapuestas.forobet.com/regulacion-del-juego-y-legislacion/68726-assianconnect-y-similares-legales-3.html comenta el usuario gonxo que no le quedó más remedio que pagar la multa...
Jugar sin restricciones en...