User Tag List

  1. #21

    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

  2. Agradecimientos anogues, Galois, Scofield ha(n) agradecido este post
    Total: 3 Agradecimientos
  3. #22

    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.

  4. Agradecimientos anogues, Galois, Algar ha(n) agradecido este post
    Total: 3 Agradecimientos
  5. #23

    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.

  6. Agradecimientos ¿Por qué no?, anogues, Galois, Scofield ha(n) agradecido este post
    Total: 4 Agradecimientos
  7. #24

    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
    En la carpeta handler (\src\demo\handler):
    • ExchangeAPI.java
    • GlobalAPI.java
    Y además también tenemos los archivos:
    • BFExchangeServiceStub.java (en src\generated\exchange)
    • BFGlobalServiceStub.java (en src\generated\global)
    Éstos últimos se encargan de la parte "más siniestra" del asunto y en principio serían los encargados de hacernos el trabajo sucio. Casi mejor no meterse con ellos y dejarlos tranquilos (al menos para empezar).

    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!

  8. Agradecimientos barroco, Scofield, anogues ha(n) agradecido este post
    Total: 3 Agradecimientos
  9. #25

    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.

  10. Agradecimientos Galois ha(n) agradecido este post
    Total: 1 Agradecimientos
  11. #26

    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??

  12. #27

    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.

    Citar Originalmente publicado por Scofield Ver post
    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??
    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

  13. Agradecimientos Galois, Scofield ha(n) agradecido este post
    Total: 2 Agradecimientos
  14. #28

    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. #29

    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.


  16. Agradecimientos Scofield ha(n) agradecido este post
    Total: 1 Agradecimientos
  17. #30

    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.

  18. Agradecimientos Scofield ha(n) agradecido este post
    Total: 1 Agradecimientos
Página 3 de 15 Primera 123456713 ... Última

collapse posting rules Reglas del foro

  • No puedes crear nuevos hilos
  • No puedes enviar respuestas
  • No puedes subir anexos
  • No puedes editar tus mensajes
  •