El mercado de bitcoins en directo

Esta semana se pudo ver un fenómeno muy curioso, el valor de las Bitcoins se disparó, pasando de valer cada una 12.12$ hace un mes a 20.94$ 7 días atras, y a los ~29$ actuales, es un mercado que puede resultar interesante analizar, incluso para alguien con escasos conocimientos de economía como el que escribe, aunque solo sea por cambiar de tema un rato.

Pues bien, resulta que en bitcoincharts.com recopilan datos sobre las transacciones ( valor, divisa, mercado, volumen, momento en que se realiza ), y lo que es mejor, se puede acceder a esos datos a través de un API, en principio puede parecer poco cómoda ( una petición, un paquete de datos, así que para mantenerse actualizado se derrocharía mucho ancho de banda ), pero existe otra que apenas está documentada más que en el pie de página.
Please don't use this for realtime streaming! Use the telnet
interface (TCP port 27007) instead.

Eso es todo lo necesario, si conectamos con bitcoincharts.com en el puerto 27007 conoceremos en tiempo real los cambios en los mercados ( servidos en formato JSON ), se puede combinar con un script, notify-send y demás para tener esos datos siempre a la vista:

!/usr/bin/env python

import socket, os, json, string

def getPack(s):

p = ""

while True:

   c = s.recv(1)

   if not c in string.printable:

       continue

   elif(c == "\n"):

       break

   else:

       p += c

return p

s = socket.socket()

s.connect(('bitcoincharts.com', 27007))

while True:

data = getPack(s ).encode('ascii').strip()

if len(data) < 1:

   continue

h = json.loads(data)

hop = "Mercado: %s\nPrecio: %s\nDivisa: %s\nVolumen: %s\n" %(h['symbol'], h ['price'], h['currency'], h['volume'])

cmd = "notify-send --urgency=low 'Bt-Market' '"+str(hop)+"'"

os.system(cmd)

f = open('market.log', 'a')

print >>f, data

f.close()

s.close()

Los datos guardados en market.log se podrían aprovechar para un análisis posterior, por ejemplo, haciendo uso del_módulo_de Gnuplot ( hay que instalarlo ): Volumen_de_las_transferencias_en_un_momento_dado

Volumen_total_hasta_el_momento

Variación_de_precios_en_un_mercado_dado

[caption id="attachment_521" align="aligncenter" width="640" caption="Variación de precios en mtgoxUSD"][/caption]

Creo que queda clara la idea, hay bastantes datos para trastear :)

Saludos

[Referencias] Bitcoin.org WeUseCoins Como_iniciarse_con_los_Bitcoins

untagged

Recuperar el teclado después de un SysRq-R [tip] » « One liners( 10 ): limpiando metadatos