Dedicado a Paduel por su incansable labor difundiendo la programación en Python

 

Seguramente recordéis a Antonio Rodríguez aka Paduel, al cual entrevistamos hace unos meses aquí en X-Trader.net. Antonio realiza una excelente labor ayudando a todo aquel que desee aprender a programar en Python y aplicarlo al trading desde su grupo en Telegram, Python para Trading

Recientemente Paduel me avisaba de que había creado una función para poder leer directamente los archivos en formato HST desde Python. Para los que no lo sepan, el formato HST almacena los históricos para cada símbolo y timeframe en Metatrader y se almacenan dentro de la carpeta history\<nombre_servidor_broker> que cuelga de la carpeta de datos de cada Metatrader. Se trata de ficheros binarios que almacenan toda la información y que pueden ser leídos offline, sin necesidad de tener conexión al broker.


Ejemplo de ruta de los archivos HST en Metatrader

La cuestión es que hasta la fecha, si queríamos leer estos datos desde Python o R, no nos quedaba otra que exportarlos a CSV desde el History Center de Metatrader, una tarea sin lugar a dudas bastante tediosa. Afortunadamente Paduel nos da la solución con las dos funciones que podéis encontrar en el siguiente Gist que tiene Paduel en GitHub. En particular, podéis encontrar la función para Python 3 en https://gist.github.com/paduel/44513e5373ad88ec1d7b71e03bd90603. Una vez importada la función dentro del código, ya sea en nuestro script o en un Jupyter Notebook, basta con llamar a la función con el nombre del archivo como argumento tal que:

df = read_hst('EURUSD15.hst')

Con esa línea estaremos creado una variable llamada df que recibirá un dataframe de Pandas conteniendo el histórico del EURUSD en timeframe de 15 minutos directamente desde Metatrader. Todo en cuestión de segundos y sin tener que ponerse a hacer conversiones. ¡¡¡Bravo Paduel!!!

Como soy un poco tocapelotas, me decidí a echarle morro y comentarle a Paduel en Twitter que todo esto del Python está muy bien (de hecho me parece impresionante la comunidad que se ha creado y la ingente cantidad de recursos que existen para este entorno de programación), pero que estaría muy bien tenerlo para R (ya saben, mi eterna pelea, ¡Python vs R! :D). Finalmente quedamos en que Paduel me daba el punto de partida y yo lo remataba.

Conversacion entre Paduel y X-Trader en Twitter

Sin embargo a Paduel le dio un ataque y en un par de días sacó la versión para R del invento que podéis encontrar en https://gist.github.com/paduel/3a163cd363b06f418663a9723340eb1d. Una vez importemos la función dentro de R, instalad el paquete Anytime y teclead por ejemplo lo siguiente (es importante que el archivo HST esté en la carpeta de trabajo que hayamos definido en R):

df<-read_hst("GBPJPY60.hst")

Con esa sencilla línea importamos el histórico del par GBPJPY en timeframe de 1 hora. Si todo ha ido bien, habremos creadoun dataframe en R con todos los datos del archivo HST. Para comprobarlo, basta con teclear head(df) y ver que tenemos almacenados las columnas con los datos como en el siguiente pantallazo:


Ahora ya no hay excusa para trastear con los datos de Metatrader directamente en Python y/o R, ¡a trabajar!

 

Saludos,
X-Trader