Mostrando las entradas con la etiqueta fix. Mostrar todas las entradas
Mostrando las entradas con la etiqueta fix. Mostrar todas las entradas

2019-06-04

Nuevos features de slowbreak

Estuve laburando en slowbreak, mi biblioteca para conectarse a servers de las bolsas de todo el mundo, y tiene algunas mejoras. Acá se las cuento:

  • Utilidades para leer y escribir valores. En el protocolo fix, y slowbreak, el valor de un campo es una tira de bytes. Para hacer más fácil la lectura y escritura de mensajes agregué métodos al módulo message para transformar esos bytes en valores de python. Son estos:
    • message.from_bool/ message.to_bool para leer y escribir booleanos. En fix el valor true se expresa con esta tira de bytes: b'Y'
    • message.from_int/ message.to_int para leer y escribir enteros.
    • message.from_decimal/ message.to_decimal para leer y escribir instancias de decimal.Decimal. Esto es particularmente importante para manejar los precios de las securities con las que operamos.
    • message.from_str(s, encoding='ascii')/ message.to_str(v, encoding='ascii') para leer y escribir strings. En python3 no podemos tratar a los strings como listas de bytes, así que estos métodos se hacen más importantes. Una cosa a notar es que por default usa 'ascii' como encoding. Eso hace que para la mayoría de las cosas ande de una. Si se conectan a un server que manda caracteres fuera del rango, tienen que consultar la documentación sobre el encoding soportado, ya que no está en la especificación de fix (AFAIK).
    • message.timestamp genera los timestamps en el formato adecuado para fix (tal como se usan en los tags 52 y 60). Sin parámetro genera el timestamp actual (GMT). También recibe un objeto datetime si quieren generar un timestamp de otro momento.
  • Confidencialidad de passwords. Los métodos __repr__ y pprint() de message.Message esconden el valor del tag 554 (password). Eso hace que los logs generados por slowbreak no contengan el password utilizado para conectarse al server.
  • Soporte de nombres para las apps. Las apps tienen el parámetro opcional name para darles nombre, que después se puede usar en el método app_by_name para buscar una aplicación hija con el nombre buscado. Esto hace más fácil trabajar con stacks grandes de aplicaciones.
  • Grupos sin limitación de tags. Ahora slowbreak puede parsear grupos aún cuando no sabemos cuáles son todos los tags que pueden ir incluídos. Solo se requiere el counting_tag y el start_tag. Para indicar este modo, pasen el objeto message.AllInclusive en vez de la lista de tags aceptados.
Como siempre, pueden hacer pip install slowbreak para usarlo. Todas las mejoras están en el último release.

¿Querés conectarte a servers de las bolsas del mundo? Puedo ayudarte. Podés contratarme como consultor y te ayudo a usar slowbreak para operar programáticamente.

2018-11-12

Slowbreak, haciendo una aplicación

Acabo de publicar el tercer video tutorial de slowbreak, donde explico cómo hacer una aplicación que responde a los mensajes que envía el server (AKA: acceptor).

Este tutorial anda con la última versión. Como siempre, para usar slowbreak hacé "pip install slowbreak".



2018-11-08

Segundo tutorial de slowbreak, cómo hacer mensajes de FIX

Update: Saqué al toque la versión 0.0.5, que incluye los ejemplos cuando corrés pip install

Acabo de publicar el segundo tutorial de slowbreak, que explica cómo hacer mensajes fix usando la biblioteca.


También acabo de publicar una nueva versión de slowbreak (la 0.0.4) con soporte para conectarse a servers fix 4.x. Este tutorial anda con la última versión. Como siempre, para usar slowbreak hacé "pip install slowbreak".

2018-11-03

Primer tutorial de slowbreak en video

Acabo de terminar mi primer video-tutorial de slowbreak. Ahí muestro cómo hacemos para conectarnos a un server, usando como server el ejemplo más simple de server que se puede hacer en slowbreak.


También acabo de publicar una nueva versión de slowbreak (la 0.0.3) con soporte para hacer servers (AKA, Acceptors). Este tutorial anda con la última versión. Como siempre, para usar slowbreak hacé "pip install slowbreak".

¡Hasta la próxima!

2018-10-17

slowbreak para python3

Como prometí hace un mes y medio, saqué una nueva versión de slowbreak con soporte para python 3. Anda con python 3.5+, aparte de python 2.7 que sigue andando como siempre.

Para instalarlo solo hay que hacer pip install slowbreak. También estuve documentando un poco y ahora las principales clases y métodos tienen documentación.

Por ejemplo, en el intérprete de python, si hacemos:

>>> from slowbreak.message import Message
>>> help(Message)

Muestra toda la documentación de la clase, explicando cada método y cada parámetro de cada método.

Como siempre, pueden ver el avance del proyecto entrando en la página de bitbucket del proyecto.

Y si se hacen millonari@s con esto, compartan un poquito :D.

2018-09-03

Primer release de slowbreak

Está recién salida del horno slowbreak, la biblioteca que hice para conectarse a servers fix. ¿Qué es fix? Fix es un protocolo que se usa para operar en mercados de acciones, bonos, futuros, opciones, etc.

Ya la usamos para conectarnos a los 2 mercados de la Argentina (BYMA y ROFEX). Por ahora anda solo con python 2.7 (tenemos pensado soportar python 3.x proximamente).

¿Por qué hice una biblioteca de fix cuando existe quickfix?

  1. Porque el binding de python tiene problemas (ejemplo, no se puede iterar por los campos del mensaje) 
  2. Porque para cambiar el tipo de un campo tenés que compilarla a mano, y tocar un .xml horripilante.
  3. Porque la forma de hacer un mensaje fix es demasiado verbose
Ya está publicada en pypi. Para instalarla solo hay que hacer pip install slowbreak.

Prometo ir escribiendo artículos de cómo usar la biblioteca para interactuar con la bolsa. Mientras tanto pueden ver cómo la usamos mirando los tests.

Happy hacking,
Aureliano.