viernes, 12 de diciembre de 2008

Uploading a File desde Metatrader: Wininet API functions

If you read in english, please check this UploadingFileTest.mq4 out. It is fully commented in english.

En el post anterior del blog hemos indicado cómo hacer una descarga de un fichero de posible utilidad en nuestras estrategias empleando la API función URLDownloadToFile() de nuestro sistema operativo.
En este post vamos a indicar cómo se puede hacer lo contrario: subir (upload) un fichero que queramos que esté en nuestro ordenador a internet mediante una conexión FTP. Para ello vamos a emplear las funciones API de windows que están contenidas en la librería dinámica wininet.dll. Toda la información al respecto de estas y otras muchas funciones de esta librería están detalladas en Microsoft MSDN Library.
Importante. Igual que se puede establecer una conexión con estas funciones para upload un fichero, se puede igualmente hacer una conexión para download un fichero (conexiones FTP) o incluso establecer una conexión HTTP o incluso una segura de tipo HTTPS, tal como se explica en el link de Microsoft indicado. Es decir que podríamos download el fichero VIX del post anterior con este sistema que estamos comentando ahora en vez de emplear la función del post anterior que sólo vale para download dede una URL.
Requisito previo:
Lógicamente, tener un sitio donde poder upload el fichero. Para ello date de alta en algún servidor (gratuito) que permita realizar conexiones FTP. Existen muchos, cada uno con sus peculiaridades de permisos y posibilidades de ejecutar ASP, FTP, P2P, etc. Éste que menciono http://www1.websamba.com es en el que me he dado de alta yo en el ejemplo. Aunque quizás sea mejor http://www.somee.com ya que permite FTP y ASP, ASP.NET en completa funcionalidad.
Bueno, una vez que tengas un sitio donde hacer pruebas para alojar tus ficheros, descárgate el script de prueba UploadingFileTest.mq4 y colócalo en tu carpeta de "scripts" de tu plataforma de Metatrader. Ábrelo con el editor y sustituye el nombre de tu servidor FTP, el nombre de usuario y tu password y, por último, escribe la ruta y el nombre del fichero que quieras upload en las variables del script. Compílalo y pruébalo.

Y ahora...,sé que te estarás preguntando...y ¿para qué demonios quiero yo poder hacer un upload de un fichero? ¿De qué me puede servir en mis trades?
Existen varias respuestas de utilidad que irás conociendo a medida que desarrolles tus expert advisors (estrategias automáticas de trading). Sólo te voy a decir la más clara, que seguramente te hará cambiar de idea en cuanto a la utilidad de esta posibilidad que comento en este post.
Imagina que, después del proceso comentado en el primer post de este blog, consigues, por fin!, una estrategia de trading que funciona (es decir, con la que consistentemente ganas más dinero del que cedes al mercado). Bueno, imagina ahora que desarrollas el expert advisor correspondiente de dicha estrategia o estrategias y que lo pones a funcionar en tu plataforma de Metatrader. En días normales, seguro que estás al tanto de qué va pasando, de las trades que te va haciendo el expert advisor y de los resultados que vas consiguiendo de profit, etc. Pero ahora imagina, que, por el motivo que sea, te tienes que ausentar durante varios días del lugar donde tienes a tu Pc ejecutando Metatrader y tu expert advisor. Entonces te preguntarás: ¿qué hago? Si me voy no podré ver qué es lo que está pasando y puede ser que algo vaya mal y sea necesario actuar y parar al expert advisor. Si lo paro, puede ser que me pierda buenas oportunidades de trading que estoy espererando...Por otro lado sabes que aunque instales la plataforma Metatrader en otro ordenador que te puedas llevar contigo, tu broker nunca te permitirá visualizar las operaciones ni abrir un duplicado de una cuenta que está activa en otro ordenador, ya que te pedirá que primero cierres una de ellas...
Ahora sí!!! que empieza a tener sentido el poder subir (upload) un fichero a un sitio que puedas visualizar siempre que quieras aunque estés de viaje o lejos del sitio donde tienes ejecutando el Metatrader con tu cuenta.
Creas un indicator que cada vez que se produzca un cambio en las órdenes pendientes o activas de tu cuenta (motivadas por la ejecución del expert advisor) te recoja cada una de ellas así como el profit total en un fichero (.csv, por ejemplo). Y además que a continuación te lo upload a un servidor web con ftp gratuito.
De esta forma, aunque estés lejos podrás, leyendo ese fichero remoto, estar al tanto de qué es lo que te está haciendo tu expert advisor para que, en caso de necesidad, via teléfono, le digas a tu broker que cancele tal o cual orden o que le puedas avisar a alguien de confianza para que te cancele tal o cual orden en el Pc de origen donde se está ejecutando el expert advisor.
Otra de las posibilidades es el poder compartir, o hacer común a muchos usuarios, los resultados y las órdenes en ejecución o pendientes de ejecutar de estrategias de trading que se estén siguiendo. En este sentido intentaré, próximamente, hacer esto último para los lectores de este blog.
Un saludo y suerte con el aprendizaje en Metatrader.