Thursday, November 3, 2016

Forex Trading Algorítmico Un Cuento Práctica Para Ingenieros

Forex Trading algorítmico: Un cuento práctica para Ingenieros Como ustedes saben, el (Forex) mercado de divisas se utiliza para el comercio entre los pares de divisas. Pero puede que no sea consciente de que es el mercado más líquido del mundo. Hace unos años, impulsados ​​por la curiosidad, di mis primeros pasos en el mundo de los algoritmos de las operaciones de cambio mediante la creación de una cuenta de demostración y jugando a cabo simulaciones (con dinero falso) sobre la plataforma de comercio Meta Trader 4. Tras una semana de 'trading', que había casi duplicado mi dinero. Alentados por mi propio éxito, cavé profundo y finalmente inscribí en una serie de foros. Al poco tiempo, me estaba gastando horas leyendo acerca de los sistemas de negociación algorítmica (conjuntos de reglas que determinan si usted debe comprar o vender), indicadores personalizados. estados de ánimo del mercado, y más. Mi primer cliente Alrededor de este tiempo, por casualidad, me enteré de que alguien estaba tratando de encontrar un desarrollador de software para automatizar un sistema de comercio simple. Esto fue en mis días de colegio cuando yo estaba aprendiendo acerca de la programación concurrente en Java (hilos, semáforos, y todo eso). Pensé que este sistema automatizado esto no podría ser mucho más complicado que mi trabajo avanzado curso de ciencias de datos, así que le pregunté sobre el trabajo y vine a bordo. El cliente quería que el sistema construido con MQL4. un lenguaje de programación funcional utilizada por la plataforma Meta Trader 4 para la realización de acciones de valores relacionados. MQL5 ya ha sido puesto en libertad. Como era de esperar, aborda algunos de los problemas de MQL4 y viene con más funciones incorporadas, lo que hace la vida más fácil. El papel de la plataforma de negociación (Meta Trader 4, en este caso) es proporcionar una conexión a un broker de Forex. El corredor entonces ofrece una plataforma con información en tiempo real sobre el mercado y ejecuta sus órdenes de compra / venta. Para los lectores no familiarizados con las operaciones de cambio, aquí está la información proporcionada por la fuente de datos: A través de Meta Trader 4, puede acceder a todos estos datos con funciones internas, accesible en varios plazos: cada minuto (M1), cada cinco minutos (M5), M15, M30, cada hora (H1), H4, D1, W1, MN . El movimiento del precio actual se llama una garrapata. En otras palabras, una garrapata es un cambio en la Oferta o Consultar precio para un par de divisas. Durante mercados activos, puede haber numerosos tics por segundo. Durante mercados lentos, no puede haber minutos sin una garrapata. La garrapata es el latido del corazón de un robot de Forex. Cuando usted realiza un pedido a través de una plataforma de este tipo, a comprar o vender un determinado volumen de una determinada moneda. También establece stop-loss y límites tener fines de lucro. El límite de stop-loss es la máxima cantidad de pips (variaciones de precios) que usted puede permitirse el lujo de perder antes de renunciar a un oficio. El límite de la toma de lucro es la cantidad de pips que usted va a acumular en su favor antes de cobrar. Si usted desea aprender más acerca de los conceptos básicos del comercio (por ejemplo, pepitas, tipos de órdenes, extensión, deslizamiento, las órdenes de mercado, y más), ver aquí. Especificaciones algorítmicos comerciales de los clientes eran simples: querían un robot basado en dos indicadores. Para el fondo, los indicadores son muy útiles cuando se trata de definir un estado del mercado y tomar decisiones comerciales, a medida que se basan en datos del pasado (por ejemplo, valor precio más alto en los últimos n días). Muchos vienen incorporadas para Meta Trader 4. Sin embargo, los indicadores que mi cliente estaba interesado en el vino de un sistema de comercio personalizado. Querían el comercio cada vez que dos de estos indicadores personalizados cortadas, y sólo en un cierto ángulo. Como llegó a mis manos sucias, me enteré de que los programas MQL4 tienen la siguiente estructura: [Preprocessor directivas] [Parámetros externos] [Variables globales] [Función Init] [Función deinit] [Función Inicio] [Funciones personalizadas] La función de arranque es el corazón de cada MQL4 programa desde que se ejecuta cada vez que se mueve el mercado (ergo, esta función se ejecutará una vez por garrapatas). Este es el caso, independientemente del período de tiempo que esté utilizando. Por ejemplo, usted podría estar operando en la H1 (una hora) plazo, sin embargo, la función de inicio ejecutaría muchos miles de veces por período de tiempo. Para solucionar esto, me obligué a la función para ejecutar una vez por unidad de tiempo: Obtención de los valores de los indicadores: La lógica de decisión, incluyendo la intersección de los indicadores y sus ángulos: Envío de los pedidos: Si usted está interesado, puede encontrar el código completo, ejecutable en GitHub. Back-Testing Una vez construí mi sistema de comercio algorítmico, que quería saber: 1) si se comportaba de manera apropiada, y 2) si se trataba de ningún bien. Back-testing es el proceso de probar una en particular (automatizado o no) sistema bajo los acontecimientos del pasado. En otras palabras, se prueba el sistema con el pasado como un proxy para el presente. MT4 viene con una herramienta aceptable para el back-prueba un sistema de comercio de Forex (hoy en día, hay herramientas más profesionales que ofrecen una mayor funcionalidad). Para empezar, configurar sus plazos y ejecutar el programa bajo una simulación; la herramienta simulará cada tick sabiendo que por cada unidad debe abrir a cierto precio, cerca a un precio determinado y, alcanzar altos y bajos especificados. Después de comparar las acciones del programa contra los precios históricos, tendrás un buen sentido de si es o no está ejecutando correctamente. Los indicadores que se había elegido, junto con la lógica de decisión, no eran rentables. A partir de back-testing, que había registré relación rentabilidad del robot para algunos intervalos de tiempo al azar; ni que decir, yo sabía que mi cliente no iba a hacerse rico con IT - los indicadores que había elegido, junto con la lógica de decisión, no fuera rentable. Como muestra, aquí están los resultados de la ejecución del programa a través de la ventana M15 para 164 operaciones: Tenga en cuenta que nuestro equilibrio (la línea azul) termina por debajo de su punto de partida. Una advertencia: dice que un sistema es "rentable" o "no rentables" no siempre es genuino. A menudo, los sistemas son (in) útil para períodos de tiempo basado en el mercado "estado de ánimo": Parámetro optimización, y sus mentiras Aunque back-testing me había hecho desconfiar de la utilidad de este robot, yo estaba intrigado cuando empecé a jugar con sus parámetros externos y noté grandes diferencias en la relación global Retorno. Esta ciencia particular se conoce como optimización de parámetros. Hice algunas pruebas áspera para tratar de inferir el significado de los parámetros externos de la relación rentabilidad y se acercó con algo como esto: O, limpiado: Usted puede pensar que (como yo) que se debe utilizar el parámetro A. Pero la decisión no es tan sencillo como puede parecer. En concreto, tenga en cuenta la imprevisibilidad de parámetro A: para valores de error pequeñas, su retorno cambia dramáticamente. En otras palabras, parámetro A es muy probable que el exceso de predecir los resultados futuros, ya que cualquier incertidumbre, cualquier cambio en absoluto dará lugar a un peor rendimiento. Pero de hecho, el futuro es incierto! Y por lo que el retorno de parámetro A también es incierto. La mejor opción, de hecho, es confiar en la imprevisibilidad. A menudo, un parámetro con un menor máxima rentabilidad, pero previsibilidad superiores (menos fluctuación) será preferible un parámetro con alta rentabilidad pero pobre previsibilidad. La única cosa que usted puede estar seguro es que usted no sabe el futuro del mercado, y pensando que sepa cómo el mercado va a ejecutar un trabajo basado en datos del pasado es un error. A su vez, se debe reconocer esta imprevisibilidad. Pensando en usted sabe cómo el mercado va a ejecutar un trabajo basado en datos del pasado es un error. Esto no significa necesariamente que debemos utilizar de parámetros B, porque incluso los más bajos rendimientos de Parámetro realiza mejor que Parámetro B; esto es sólo para demostrar que los parámetros Optimización pueden resultar en pruebas que exageran probables resultados futuros, y tal pensamiento no es obvia. En general Consideraciones Forex Trading algorítmico Desde esa primera experiencia de las operaciones de cambio algorítmico, he construido varios sistemas de trading automatizado para los clientes, y yo puedo decir que siempre hay espacio para explorar. Por ejemplo, recientemente he construido un sistema basado en la búsqueda de los llamados movimientos "Big Fish"; es decir, enormes pips variaciones en minúsculas, diminutas unidades de tiempo. Este es un tema que me fascina. La construcción de su propio sistema de simulación es una excelente opción para aprender más sobre el mercado de divisas, y las posibilidades son infinitas. Por ejemplo, usted podría tratar de descifrar la distribución de probabilidad de las variaciones de precios en función de la volatilidad en un mercado (EUR / USD, por ejemplo), y tal vez hacer un modelo de simulación de Montecarlo utilizando la distribución por estado de volatilidad, con cualquier grado de exactitud quieres. Voy a dejar esto como un ejercicio para el lector con ganas. El mundo de cambio puede ser abrumador a veces, pero espero que este relato le ha dado algunos puntos sobre cómo ponerse en marcha. Otras lecturas Hoy en día, hay una gran piscina de herramientas para construir, probar y mejorar el sistema de comercio de Automatismos: Trading Blox para las pruebas, NinjaTrader para el comercio, OCaml para la programación, por nombrar algunos. He leído mucho sobre el mundo misterioso que es el mercado de divisas. Aquí están algunas de escritura-ups que recomiendo para los programadores y entusiastas lectores:


No comments:

Post a Comment