Trading System Genetic Algorithm


Código fuente avanzado. Com. Haga click aquí para descargar. Los algoritmos genéticos pertenecen a una clase de algoritmos de aprendizaje de máquina que se han utilizado con éxito en una serie de áreas de investigación. Existe un interés creciente por su uso en economía financiera, pero hasta ahora ha habido poco análisis formal. En el mercado de valores, una regla técnica de negociación es una herramienta popular para los analistas y los usuarios para hacer su investigación y decidir comprar o vender sus acciones. La clave para el éxito de una regla comercial es la selección de valores para todos los parámetros y sus combinaciones. Sin embargo, el rango de parámetros puede variar en un dominio grande, por lo que es difícil para los usuarios encontrar la mejor combinación de parámetros. Mediante el uso de un algoritmo genético, podemos buscar tanto la estructura como los parámetros de las reglas al mismo tiempo. Hemos optimizado un sistema comercial que ha sido desarrollado por Alfredo Rosa utilizando algoritmos genéticos. Una nueva y compleja regla comercial de 16 barras ha sido descubierta y probada en FIB italiana con brillantes resultados. Términos de indexación: Matlab, fuente, código, minería de datos, sistema de comercio, predicción del mercado de valores, extracción de reglas comerciales, algoritmos genéticos, sistemas comerciales, gráfico de barras, gráfico de velas, patrones de precios, combinación de parámetros. Figura 1. Estructura genética Un patrón de precios complejo optimizado descubierto por algoritmos genéticos. Código de demostración (archivos P protegidos) disponible para evaluación de rendimiento. Matlab Financial Toolbox, Genetic Algorithm y Direct Search Toolbox son necesarios. Recomendamos comprobar la conexión segura con PayPal, para evitar fraudes. Esta donación debe considerarse un estímulo para mejorar el código mismo. Genetic Trading System - Haga clic aquí para su donación. Para obtener el código fuente hay que pagar una pequeña suma de dinero: 90 EUROS (menos de 126 dólares). Una vez que haya hecho esto, por favor envíenos un correo electrónico luigi. rosatiscali. it Tan pronto como sea posible (en pocos días) recibirá nuestro nuevo lanzamiento de Genetic Trading System. Alternativamente, puede otorgar utilizando nuestras coordenadas bancarias: Un sistema de comercio de Forex basado en un algoritmo genético En línea: 04 Abril 2012 Recibido: 20 de abril de 2010 Aceptado: 21 de marzo 2012 Citar este artículo como: Mendes, L. Godinho, P. Dias, En este trabajo se describirá un algoritmo genético que tiene como objetivo optimizar un conjunto de reglas que constituyen un sistema de trading Para el mercado Forex. Cada individuo de la población representa un conjunto de diez reglas técnicas de negociación (cinco para entrar en una posición y otras cinco para salir). Estas reglas tienen 31 parámetros en total, que corresponden a los genes individuales. La población evolucionará en un entorno determinado, definida por una serie temporal de un par de divisas específico. La idoneidad de un determinado individuo representa lo bien que ha podido adaptarse al medio ambiente, y se calcula aplicando las reglas correspondientes a la serie cronológica, y luego calculando la relación entre el beneficio y la reducción máxima (la relación de Stirling) . Se han utilizado dos pares de divisas: EUR / USD y GBP / USD. Se utilizaron diferentes datos para la evolución de la población y para la prueba de los mejores individuos. Se discuten los resultados obtenidos por el sistema. Las mejores personas son capaces de lograr muy buenos resultados en la serie de entrenamiento. En la serie de pruebas, las estrategias desarrolladas muestran cierta dificultad para lograr resultados positivos, si se tienen en cuenta los costos de transacción. Si se ignoran los costos de transacción, los resultados son en su mayoría positivos, lo que demuestra que las mejores personas tienen alguna capacidad de pronóstico. Alvarez-Díaz, M. Alvarez, A. Pronosticando tipos de cambio utilizando algoritmos genéticos. Appl. Econ. Letón. 10 (6), 319322 (2003) CrossRef Brabazon, A. ONeill, M. Evolución de las normas técnicas de comercio de los mercados de divisas a la vista utilizando la evolución gramatical. Comput. Manag. Sci. 1 (3), 311327 (2004) MATH CrossRef Davis, L. Manual de Algoritmos Genéticos. Van Nostrand - Reinhold, Nueva York (1991) Dempster, M. A.H. Jones, C. M. Un sistema de comercio adaptativo en tiempo real que utiliza la programación genética. Cantidad. Finance 1 (4), 397413 (2001) CrossRef Dunis, C. Harris, A. et al. Optimización de los modelos de trading intradía con algoritmos genéticos. Red Neural La medida de la elección de la medida de rendimiento influye en la evaluación de los fondos de cobertura J. Bank. Finanzas 31 (9), 26322647 (2007) CrossRef Fama, E. F. Eficiente de los mercados de capital: una revisión de la teoría y el trabajo empírico. J. Finanzas 25 (2), 383417 (1970) CrossRef Goldberg, D. Algoritmos Genéticos en Búsqueda, Optimización y Aprendizaje Automático. Addison - Wesley, Reading (1989) MATH Grefenstette, J. J. Algoritmos genéticos para cambiar ambientes. En: Parallel Problem Solving de Nature 2, Bruselas (1992) Harding, D. Nakou, G. et al. Los pros y los contras de la reducción como una medida estadística de riesgo para las inversiones. AIMA Journal, April 1617 (2003) Hirabayashi, A. Aranha, C. et al. Optimización de la regla comercial en divisas usando algoritmo genético. Hryshko, A. Downs, T. Sistema para el intercambio de divisas usando algoritmos genéticos y aprendizaje de refuerzo (GECCO09, 2009). Int. J. Syst. Sci. 35 (13), 763774 (2004) MATH CrossRef Kaboudan, M. A. Predicción de la programación genética de los precios de las acciones. Comput. Econ. 16 (3), 207236 (2000) MATH CrossRef LeBaron, B. Rentabilidad técnica de las reglas de negociación e intervención en divisas. J. Int. Econ. 49 (1), 125143 (1999) CrossRef LeBaron, B. Rentabilidad técnica de los mercados de divisas en los años noventa (2002) Levich, R. M. Thomas, L. R. La importancia de las ganancias técnicas de las reglas de negociación en el mercado de divisas: un enfoque de "bootstrap". J. Int. Dinero Financ. 12 (5), 451474 (1993) CrossRef Lo, A. W. La hipótesis de los mercados adaptativos. J. Portf. Manag. 30 (5), 1529 (2004) CrossRef Menkhoff, L. Taylor, M. P. La pasión obstinada de los profesionales de cambio: análisis técnico. J. Econ. Iluminado. 45 (4), 936972 (2007) CrossRef Meyers, T. A. El Curso de Análisis Técnico. McGraw-Hill, Nueva York (1989) Mitchell, M. Introducción a Algoritmos Genéticos. MIT Press, Cambridge (1996) Neely, C. Weller, P. Comercio técnico intradía en el mercado de divisas. J. Int. Dinero Financ. 22 (2), 223237 (2003) CrossRef Neely, C. Weller, P. et al. Es el análisis técnico en el mercado de divisas rentable Un enfoque de programación genética. J. Financ. Cantidad. Anal. 32 (4), 405426 (1997) CrossRef Neely, C. J. Weller, P. A. Et al. La hipótesis de los mercados adaptativos: evidencia del mercado de divisas. J. Financ. Cantidad. Anal. 44 (02), 467488 (2009) CrossRef Olson, D. ¿Las ganancias de las normas comerciales en los mercados cambiarios han disminuido con el tiempo? J. Bank. Finance 28 (1), 85105 (2004) CrossRef Osman, I. H. Kelly, J. P. Meta-Heurística: Aplicaciones de la teoría y del amplificador. Kluwer Académico, Dordrecht (1996) MATH Park, C.-H. Irwin, S. H. ¿Qué sabemos sobre la rentabilidad del análisis técnico J. Econ. Surv. 21 (4), 786826 (2007) CrossRef Pictet, O. V. Dacorogna, M. M. Et al. Usando algoritmos genéticos para optimización robusta en aplicaciones financieras. Red Neural World 5 (4), 573587 (1995) Reeves, C. R. Usando algoritmos genéticos con poblaciones pequeñas. En: Actas de la Quinta Conferencia Internacional sobre Algoritmos Genéticos. Morgan Kaufmann, San Mateo (1993) Rothlauf, F. Goldberg, D. Representaciones redundantes en la computación evolutiva. Illinois Laboratorio de Algoritmos Genéticos (IlliGAL) Informe (2002) Schulmeister, S. Componentes de la rentabilidad del comercio de divisas técnicas. Appl. Financ. Econ. 18 (11), 917930 (2008) CrossRef Sweeney, R. J. Superando el mercado de divisas. J. Finanzas 41 (1), 163182 (1986) Wilson, G. Banzhaf, W. Interday intercambio de divisas utilizando la programación genética lineal. En: Actas de la 12ª Conferencia Anual sobre Computación Genética y Evolutiva GECCO10 (2010) Información sobre el copyright Springer ScienceBusiness Media, LLC 2012 Autores y Afiliaciones Lus Mendes 1 Pedro Godinho 2 Joana Dias 3 Enviar mensaje por correo electrónico 1. Faculdade de Economía Universidad de Coimbra Coimbra Portugal 2 Facultad de Economía y GEMF Universidad de Coimbra Coimbra Portugal Facultad de Economía e Inesc Coimbra Universidad de Coimbra Coimbra Portugal Acerca de este artículo Imprimir ISSNSnowCron SnowCron Algoritmo Genético en FOREX Trading Systems Utilizando Algoritmo Genético para crear rentable FOREX Trading Strategy. Algoritmo Genético en Cortex Redes Neuronales Software Feedforward Backpropagation Neural Network Aplicación para cálculos genéticos basados ​​en comercio de Forex. Este ejemplo utiliza conceptos e ideas del artículo anterior, por lo que lea el Algoritmo Genético de redes neuronales en FOREX Trading Systems en primer lugar, aunque no es obligatorio. Acerca de este texto En primer lugar, lea la cláusula de exención de responsabilidad. Este es un ejemplo de usar la funcionalidad de algoritmo genético del Software de redes neuronales de Cortex, no un ejemplo de cómo hacer negocios rentables. Yo no soy tu gurú, tampoco debería ser responsable de tus pérdidas. Cortex Neural Networks Software tiene redes neurales en él, y FFBP hemos discutido antes es sólo una forma de elegir una estrategia de comercio de divisas. Es una buena técnica, potente y cuando se aplica correctamente, muy prometedor. Sin embargo, tiene un problema - enseñar a la Red Neural. Necesitamos saber la salida deseada. Es bastante fácil de hacer cuando hacemos la aproximación de función, simplemente tomamos el valor real de una función, porque sabemos lo que debería ser. Cuando hacemos la predicción de redes neuronales. Utilizamos la técnica (descrita en artículos anteriores) de enseñar la Red Neural sobre la historia, de nuevo, si predecimos, digamos, un tipo de cambio, sabemos (durante el entrenamiento) cuál es la predicción correcta. Sin embargo, cuando estamos construyendo un sistema comercial, no tenemos idea de cuál es la decisión comercial correcta, incluso si sabemos el tipo de cambio. Como cuestión de hecho, tenemos muchas estrategias de compraventa de divisas que podemos utilizar en cualquier momento, y Necesitamos encontrar una buena - cómo ¿Qué debemos alimentar como la salida deseada de nuestra red neuronal Si siguió nuestro artículo anterior, usted sabe, que hemos engañado para hacer frente a este problema. Enseñamos a la Red Neural para hacer la predicción del tipo de cambio (o indicador basado en el tipo de cambio) y luego utilizamos esta predicción para hacer el comercio. Luego, fuera de la parte de la Red Neural del programa, tomamos una decisión sobre qué Red Neural es la mejor. Algoritmos genéticos pueden hacer frente a este problema directamente, pueden resolver el problema declarado como encontrar las mejores señales comerciales. En este artículo vamos a utilizar Cortex Neural Networks Software para crear un programa de este tipo. Usando el Algoritmo Genético Los Algoritmos Genéticos están muy bien desarrollados, y muy diversos. Si quieres aprender todo sobre ellos, te sugiero que utilices Wikipedia, ya que este artículo trata solo de lo que puede hacer el software de Redes Neuronales Cortex. Tener software de redes neuronales de corteza. Podemos crear una Red Neural que toma algo de entrada, digamos, los valores de un indicador, y produce algo de salida, digamos, señales comerciales (comprar, vender, mantener) y detener la pérdida / tomar los niveles de beneficios para las posiciones que se abren. Por supuesto, si sembramos estos pesos de la Red Neural al azar, los resultados comerciales serán terribles. Sin embargo, digamos que creamos una docena de tales NN. Entonces podemos probar el rendimiento de cada uno de ellos, y elegir el mejor, el ganador. Esta fue la primera generación de NNs. Para continuar a la segunda generación, tenemos que permitir que nuestro ganador para procrear, pero para evitar copias idénticas, vamos a añadir algún ruido al azar a sus pesos descententes. En la segunda generación, tenemos a nuestro ganador de primera generación ya sus copias imperfectas (mutadas). Vamos a hacer las pruebas de nuevo. Tendremos otro ganador, que es MEJOR entonces cualquier otra Red Neural en la generación. Y así. Simplemente permitimos que los ganadores se reproduzcan y eliminen a los perdedores, al igual que en la evolución de la vida real, y obtendremos nuestra Red Neural de mejor comercio. Sin ningún conocimiento previo sobre lo que debe ser el sistema comercial (algoritmo genético). Algoritmo Genético de Red Neural: Ejemplo 0 Este es el primer ejemplo de algoritmo genético. Y una muy simple. Vamos a caminar paso a paso para aprender todos los trucos que usarán los siguientes ejemplos. El código tiene comentarios en línea, así que solo debemos enfocar momentos clave. En primer lugar, hemos creado una red neuronal. Está utilizando pesos al azar, y todavía no se enseñó. Luego, en ciclo, hacemos 14 copias de ella, usando MUTATIONNN fumction. Esta función hace una copia de una red neuronal de origen. Añadiendo valores aleatorios de 0 a (en nuestro caso) 0,1 a todos los pesos. Mantenemos las manijas a 15 NNs resultantes en una matriz, podemos hacerlo, ya que handle es sólo un número entero. La razón por la que usamos 15 NNs no tiene nada que ver con el comercio: Cortex Neural Networks Software puede trazar hasta 15 líneas en un gráfico simultáneamente. Podemos utilizar diferentes enfoques para la prueba. En primer lugar, podemos utilizar el conjunto de aprendizaje, todo de una vez. En segundo lugar, podemos probar, por ejemplo, 12000 resordes (de 100000), y caminar a través del conjunto de aprendizaje, desde el principio hasta el final. Esto hará que los conocimientos sean diferentes, ya que buscaremos redes neuronales que sean rentables en cualquier parte de los datos, no sólo en el conjunto. El segundo enfoque puede darnos problemas, si los datos cambian, desde el principio hasta el final. A continuación, la red evolucionará, obteniendo la capacidad de negociar al final del conjunto de datos, y la pérdida de la capacidad de comercio en su inicio. Para resolver ese problema, vamos a tomar 12000 registros aleatorios fragmentos de datos, y lo alimentan a la Red Neural. Es simplemente un ciclo sin fin, ya que 100000 ciclos nunca serán alcanzados a nuestra velocidad. A continuación, agregamos un niño por cada red, con pesos ligeramente diferentes. Tenga en cuenta, que 0,1 para mutación tange no es la única opción, como cuestión de hecho, incluso este parámetro puede ser optimizado mediante el algoritmo genético. Los NNs recién creados se añaden después de los ya existentes. De esta manera tenemos 30 NNs en una matriz, 15 viejos y 15 nuevos. Entonces vamos a hacer el siguiente ciclo de pruebas, y matar a los perdedores, de ambas generaciones. Para hacer las pruebas, aplicamos la Red Neural a nuestros datos, para producir salidas, y luego llamar a la función de prueba, que utiliza estas salidas para simular el comercio. Los resultados de la negociación se utilizan para deside, que NNs son los mejores. Utilizamos un intervalo de registros nLearn, desde nStart hasta nStart nLearn, donde nStart es un punto aleatorio dentro del conjunto de aprendizaje. El siguiente código es un truco. La razón por la que lo usamos es para ilustrar el hecho de que el algoritmo genético puede crear algoritmos genéticos. Pero no necesariamente será el mejor, y también, para sugerir, que podemos mejorar el resultado, si implicamos algunas limitaciones al proceso de aprendizaje. Es posible, que nuestro sistema de comercio funciona muy bien en los oficios largos, y muy pobre en corto, o viceversa. Si, por ejemplo, las operaciones largas son MUY buenas, este algoritmo genético puede ganar, incluso con grandes pérdidas en operaciones cortas. Para evitarlo, asignamos más peso a las operaciones largas en operaciones impares y cortas en ciclos pares. Esto es sólo un ejemplo, no hay garantía, que mejorará algo. Más abajo, en la discusión sobre correcciones. Técnicamente, usted no tiene que hacerlo, o puede hacerlo de manera diferente. Añada beneficios a una matriz ordenada. Devuelve una posición de inserción, entonces usamos esta posición para agregar el identificador de red neuronal, aprendiendo y probando beneficios a arrays no ordenados. Ahora tenemos datos para la red neuronal actual en el mismo índice de matriz que su beneficio. La idea es llegar a la matriz de NNs, ordenados por la rentabilidad. Dado que la matriz se clasifica por beneficios, para eliminar la mitad de las redes, que son menos rentables, sólo tenemos que quitar NNs 0 a 14 Las decisiones comerciales se basan en el valor de la señal de red neuronal, desde este punto de vista el programa es idéntico a Ejemplos del artículo anterior. FOREX Trading Strategy: Discusión del ejemplo 0 En primer lugar, echemos un vistazo a los gráficos. El primer gráfico de ganancia durante la primera iteración no es bueno en absoluto, como era de esperar, la Red Neural pierde dinero (image evolution00gen0.png copiada después de la primera iteración de la carpeta de imágenes): La imagen para obtener ganancias en el ciclo 15 es mejor, a veces , El algoritmo genético puede aprender muy rápido: Sin embargo, observe la saturación en una curva de beneficio. Es interesante también mirar la forma en que los beneficios individuales cambian, teniendo en cuenta, que el número de la curva, por ejemplo, 3 no es siempre para la misma Red Neural. Ya que están naciendo y terminó todo el tiempo: También tenga en cuenta, que poco forex sistema de comercio automatizado realiza pobres en operaciones cortas, y mucho mejor en largos, que pueden o no estar relacionados con el hecho de que el dólar estaba cayendo en comparación con Euros durante ese período. También puede tener algo que ver con los parámetros de nuestro indicador (tal vez, necesitamos período diferente para los cortos) o la elección de los indicadores. Aquí está la historia después de 92 y 248 ciclos: Para nuestra sorpresa, el algoritmo genético falló completamente. Vamos a tratar de averiguar por qué, y cómo ayudar a la situación. En primer lugar, no cada generación se supone que es mejor que el previuos La respuesta es no, al menos no dentro del modelo que utilizamos. Si tomamos ENTIRE el aprendizaje fijado de una vez, y lo usamos repetidamente para enseñar a nuestros NNs, entonces sí, ellos mejorarán en cada generación. Pero en su lugar, tomamos fragmentos aleatorios (12000 registros en el tiempo), y los usamos. Dos preguntas: ¿por qué el sistema fracasó en fragmentos aleatorios del conjunto de aprendizaje, y por qué no hemos utilizado conjunto de aprendizaje conjunto Bueno. Para responder a la segunda pregunta, lo hice. NNs se desempeñó mucho - en el conjunto de aprendizaje. Y no en el conjunto de pruebas, por la misma razón que falla cuando utilizamos FFPB aprendizaje. Para decirlo de otra manera, nuestros NNs se sobre-especializados, aprendieron a sobrevivir en el ambiente al que están acostumbrados, pero no fuera de él. Esto sucede mucho en la naturaleza. El enfoque que tomamos en su lugar fue la intención de compensar eso, al obligar a NNs a realizar buenos en cualquier fragmento al azar del conjunto de datos, por lo que esperamos, también podría realizar en un conjunto de pruebas desconocido. En su lugar, fallaron en las pruebas y en el conjunto de aprendizaje. Imagínense animales, viviendo en un desierto. Un montón de sol, no hay nieve en absoluto. Este es un metafor para rizing mercado, como para nuestros datos NNs desempeñar el papel del medio ambiente. Los animales aprendieron a vivir en un desierto. Imagínense animales, que viven en un clima frío. Nieve y no hay sol. Bueno, se ajustaron. Sin embargo, en nuestro experimento, colocamos aleatoriamente nuestras NN en un desierto, en la nieve, en el agua, en los árboles. Presentándolos con diferentes fragmentos de datos (aleatoriamente subiendo, bajando, planos). Los animales murieron. O, para decirlo de otra manera, hemos seleccionado la mejor red neuronal para el conjunto de datos aleatorios 1, que, digamos, era para el mercado en alza. Luego presentamos, a los ganadores ya sus hijos, una caída de los datos de los mercados. NNs se desempeñó mal, que tomó mejor de los artistas pobres, tal vez, uno de los niños mutantes, que perdió la capacidad de comercio en el mercado en alza, pero tiene cierta capacidad para hacer frente a la caída de uno. Entonces volvimos la mesa otra vez, y otra vez, conseguimos el mejor ejecutante - pero el mejor entre los ejecutantes pobres. Simplemente no dimos a nuestros NNs ninguna posibilidad de convertirse en universal. Hay técnicas que permiten que el algoritmo genético aprenda nueva información sin perder el rendimiento en la información antigua (después de todo, los animales pueden vivir en verano y en invierno, así que la evolución es capaz de manejar los cambios repetitivos). Podemos discutir estas técnicas más adelante, aunque este artículo es más sobre el uso de Cortex Neural Networks Software. Que sobre la construcción de un exitoso sistema de comercio automatizado forex. Algoritmo Genético de la Red Neural: Ejemplo 1 Ahora es el momento de hablar sobre las correcciones. Un algoritmo genético simple que creamos durante el paso anterior tiene dos defectos importantes. En primer lugar, fracasó en el comercio con el beneficio. Está bien, podemos intentar utilizar un sistema parcialmente entrenado (fue rentable al principio). El segundo defecto es más grave: no tenemos control sobre las cosas, que este sistema hace. Por ejemplo, puede aprender a ser rentable, pero con grandes reducciones. Es un hecho bien conocido, que en la vida real, la evolución puede optimizar más de un parámetro simultáneamente. Por ejemplo, podemos obtener un animal, que puede correr rápido y ser resistente al frío. ¿Por qué no intentar hacer lo mismo en nuestro sistema de comercio automatizado forex. Eso es cuando usamos correcciones, que no son más que el conjunto de castigos adicionales. Digamos, nuestro sistema negocia con drawdown 0.5, mientras que queremos confirmarlo a 0 - 0.3 intervalo. Para decirle al sistema que cometió un error, disminuimos su beneficio (uno usado para determinar, que algoritmo genético ganó) hasta el grado, que es proporcional al tamaño de DD. Entonces, el algoritmo de evolución cuida el resto. Hay pocos factores más, que queremos tener en cuenta: podemos querer tener más o menos el mismo número de operaciones de compra y venta, queremos tener más operaciones rentables, luego de fracasos, tal vez queramos que el gráfico de ganancias Ser lineal y así sucesivamente. En evolution01.tsc implementamos un conjunto simple de correcciones. En primer lugar, utilizamos un gran número para un valor de corrección inicial. Lo multiplicamos a un valor pequeño (usualmente, entre 0 y 1), dependiendo del castigo que queramos aplicar. Entonces multiplicamos nuestro beneficio a esta corrección. Como resultado, el beneficio es corregido, para reflejar cuánto el algoritmo genético corresponde a nuestros otros criterios. Luego usamos el resultado para encontrar una red neuronal ganadora. FOREX Trading Strategy: Discutir el ejemplo 1 El ejemplo 1 funciona mucho mejor que el ejemplo 0. Durante los primeros 100 ciclos, aprendió mucho y los gráficos de beneficios parecen tranquilizadores. Sin embargo, como en el ejemplo 0, las operaciones largas son mucho más rentables, lo que probablemente significa que hay un problema en nuestro enfoque. Sin embargo, el sistema encontró un equilibrio entre un par de condiciones iniciales contradictorias: Hay una dinámica positiva tanto en el conjunto de aprendizaje y, más importante, en el conjunto de pruebas. En cuanto al aprendizaje adicional, en el ciclo 278 podemos ver, que nuestro sistema se sobreentrenó. Significa, todavía tenemos progreso en el conjunto de aprendizaje: Pero el conjunto de pruebas muestra debilidad: Este es un problema común con NNs: cuando lo enseñamos en el conjunto de aprendizaje, aprende a tratar con él, ya veces, aprende demasiado bien - a la Grado, cuando pierde el rendimiento en el conjunto de pruebas. Para hacer frente a ese problema, se utiliza una solución tradicional: seguimos buscando la Red Neural. Que funciona mejor en el conjunto de pruebas, y guardarlo, sobrescribiendo el anterior mejor, cada vez que se alcanza un nuevo pico. Este es el mismo enfoque, que usamos en el entrenamiento FFBP, excepto, esta vez tenemos que hacerlo nosotros mismos (añadir código, que busca una mejor red neuronal en un conjunto de pruebas, y llamando a SAVENN, o la exportación de pesos de la red neuronal a un archivo). De esta manera, cuando deje de entrenar, tendrá el mejor intérprete en el juego de prueba guardado y esperando por usted. Tenga en cuenta también, que no es el máx. Beneficio que buscas, pero el rendimiento óptimo, por lo que considerar el uso de correcciones, cuando se busca un mejor desempeño en un conjunto de pruebas. Algoritmo genético para FOREX Análisis técnico: ¿Dónde ahora? Después de obtener su ganador Neural Network. Puede seguir los pasos, descritos en el artículo anterior, para exportar pesos de esa Red Neural. Y luego utilizarlos en su plataforma de comercio en tiempo real, como Meta Trader, Trade Station y así sucesivamente. Alternativamente, puede centrarse en otras formas de optimizar la Red Neural. A diferencia del algoritmo FFBP, aquí puede obtener avay de usar conjuntos de aprendizaje y pruebas y mover el aprendizaje secuencial. Descargar Cortex Order Cortex Ver lista de precios La visibilidad es muy importante para este sitio. Si te gusta por favor enlace a este URLCreating un sistema de comercio dentro de sistema de comercio de laboratorio Lab sistema de comercio generará automáticamente sistemas de comercio en cualquier mercado en unos minutos utilizando un programa de computadora muy avanzado conocido como AIMGP (Inducción automática de código de máquina con programación genética ). Creación de un sistema de comercio dentro de Trading System Lab se lleva a cabo en 3 sencillos pasos. En primer lugar, se ejecuta un preprocesador simple que automáticamente extrae y preprocesa los datos necesarios del mercado con el que desea trabajar. TSL acepta CSI, MetaStock, AIQ, TradeStation, datos de Internet gratis, ASCII, TXT, CSV, CompuTrac, DowJones, FutureSource, TeleChart2000v3, TechTools, XML, datos binarios e Internet Streaming. En segundo lugar, el generador del sistema de comercio (GP) se ejecuta durante varios minutos, o más, para desarrollar un nuevo sistema de comercio. Puede utilizar sus propios datos, patrones, indicadores, relaciones intermarcas o datos fundamentales dentro de TSL. En tercer lugar, el sistema de comercio evolucionado está formateado para producir nuevas señales del sistema de comercio desde TradeStation o muchas otras plataformas comerciales. TSL escribirá automáticamente Easy Language, Java, Assembler, código C, código C y WealthLab Script Language. El Sistema de Negociación puede ser negociado manualmente, negociado a través de un corredor, o negociado automáticamente. Usted puede crear el sistema de comercio usted mismo o podemos hacerlo por usted. Entonces, o usted o su corredor pueden negociar el sistema manualmente o automáticamente. Trading System Labs Genética Programa contiene varias características que reducen la posibilidad de ajuste de curva, o la producción de un sistema de comercio que no continúe realizando en el futuro. En primer lugar, los Sistemas de Negociación evolucionados tienen su tamaño podado hasta el tamaño más bajo posible a través de lo que se llama Presión de Parsimonia, tomando como base el concepto de longitud de descripción mínima. Por lo tanto, el sistema de comercio resultante es tan simple como sea posible y generalmente se cree que cuanto más simple sea el sistema de comercio, mejor se llevará a cabo en el futuro. En segundo lugar, la aleatoriedad se introduce en el proceso evolutivo, lo que reduce la posibilidad de encontrar soluciones que sean localmente, pero no globalmente óptimas. La aleatoriedad se introduce no sólo en las combinaciones del material genético utilizado en los Sistemas de Negociación evolucionados, sino también en Parsimony Pressure, Mutation, Crossover y otros parámetros GP de nivel superior. Se realizan pruebas fuera de la muestra mientras se está realizando el entrenamiento con la información estadística presentada en las pruebas de la muestra y fuera de la muestra del sistema de comercio. Los registros de ejecución se presentan al usuario para los datos de formación, validación y fuera de muestra. Un buen comportamiento El rendimiento de la muestra puede ser indicativo de que el sistema de comercio está evolucionando con características robustas. El deterioro sustancial en las pruebas automáticas fuera de la muestra en comparación con las pruebas en la muestra puede implicar que la creación de un robusto sistema de comercio está en duda o que el terminal o conjunto de entrada puede ser necesario cambiar. Por último, el conjunto de terminales se elige cuidadosamente para no sesgar excesivamente la selección del material genético inicial hacia cualquier sesgo o sentimiento particular del mercado. TSL no comienza su ejecución con un sistema de comercio predefinido. De hecho, inicialmente sólo se establece el conjunto de entradas y una selección de modos o modos de entrada en el mercado, para la búsqueda y asignación automática de entradas. Un patrón o indicador de comportamiento que puede ser pensado como una situación alcista puede ser utilizado, descartado o invertido dentro de la GP. Ningún patrón o indicador está preasignado a ningún sesgo particular del movimiento del mercado. Esta es una salida radical del desarrollo generado manualmente del sistema de comercio. Un sistema de comercio es un conjunto lógico de instrucciones que decirle al comerciante cuándo comprar o vender un mercado en particular. Estas instrucciones rara vez requieren la intervención de un comerciante. Los Sistemas de Negociación pueden ser negociados manualmente, observando las instrucciones de negociación en una pantalla de computadora, o pueden ser intercambiados permitiendo que la computadora ingrese los oficios en el mercado automáticamente. Ambos métodos están en uso generalizado hoy en día. Hay más administradores de dinero profesionales que se consideran operadores sistemáticos o mecánicos que aquellos que se consideran discrecionales, y el desempeño de los administradores sistemáticos de dinero es generalmente superior al de los administradores de dinero discrecional. Los estudios han demostrado que las cuentas comerciales generalmente pierden dinero más a menudo si el cliente no está usando un sistema de comercio. El significativo aumento de los sistemas de negociación en los últimos 10 años es evidente, especialmente en las empresas de corretaje de materias primas, sin embargo las empresas de corretaje de acciones y de bonos están cada vez más conscientes de los beneficios mediante el uso de Trading Systems y algunos han comenzado a ofrecer Clientes minoristas. La mayoría de los gestores de fondos mutuos ya están utilizando algoritmos informáticos sofisticados para guiar sus decisiones en cuanto a qué stock caliente a elegir o qué rotación del sector está a favor. Los ordenadores y los algoritmos se han convertido en la corriente principal en la inversión y esperamos que esta tendencia continúe mientras que los inversionistas más jóvenes y más informáticos continúan permitiendo que partes de su dinero sean administradas por Trading Systems para reducir el riesgo y aumentar los retornos. Las enormes pérdidas experimentadas por los inversionistas que participan en la compra y tenencia de acciones y fondos mutuos como el mercado de valores se derritieron en los últimos años está fomentando este movimiento hacia un enfoque más disciplinado y lógico a la inversión en el mercado de valores. El inversionista medio se da cuenta de que él o ella actualmente permite que muchos aspectos de sus vidas y vidas de sus seres queridos sean mantenidos o controlados por computadoras como los automóviles y aviones que usamos para el transporte, el equipo de diagnóstico médico que usamos para el mantenimiento de la salud, Los controladores de calefacción y refrigeración que utilizamos para el control de la temperatura, las redes que utilizamos para la información basada en Internet, incluso los juegos que jugamos para el entretenimiento. ¿Por qué entonces algunos inversores minoristas creen que pueden disparar desde la cadera en sus decisiones en cuanto a qué acciones o fondos mutuos para comprar o vender y esperar a ganar dinero Por último, el inversionista promedio se ha convertido en cauteloso de los consejos y la información remitida por corredores sin escrúpulos , Contadores, directores corporativos y asesores financieros. Durante los últimos 20 años, los matemáticos y los desarrolladores de software han buscado indicadores y patrones en los mercados de acciones y materias primas buscando información que pueda apuntar a la dirección del mercado. Esta información se puede utilizar para mejorar el rendimiento de los sistemas de negociación. Generalmente, este proceso de descubrimiento se logra mediante una combinación de prueba y error y una minería de datos más sofisticada. Por lo general, el desarrollador tomará semanas o meses de crujido de números con el fin de producir un sistema de comercio potencial. Muchas veces este sistema de comercio no funcionará bien cuando realmente se utiliza en el futuro debido a lo que se llama ajuste de curva. A lo largo de los años ha habido muchos sistemas de comercio (y las empresas de desarrollo de sistemas de comercio) que han ido y venido como sus sistemas han fallado en el comercio en vivo. Desarrollar sistemas de negociación que continúen realizando en el futuro es difícil, pero no imposible de lograr, aunque ningún desarrollador ético o administrador de dinero dará una garantía incondicional de que cualquier sistema de comercio, o de cualquier acción, bono o fondo mutuo, continuará Para producir beneficios en el futuro para siempre. Lo que llevó semanas o meses para que el desarrollador del Sistema de Negociación produjera en el pasado puede ahora ser producido en cuestión de minutos a través del uso de Trading System Lab. Trading System Lab es una plataforma para la generación automática de Trading Systems y Trading Indicators. TSL hace uso de un motor de programación genética de alta velocidad y producirá sistemas de negociación a una tasa de más de 16 millones de barras de sistema por segundo basado en 56 entradas. Tenga en cuenta que sólo unas pocas entradas realmente serán usadas o necesarias resultando en estructuras de estrategia evolucionadas generalmente simples. Con aproximadamente 40.000 a 200.000 sistemas necesarios para una convergencia, el tiempo de convergencia para cualquier conjunto de datos puede ser aproximado. Tenga en cuenta que no estamos simplemente ejecutando una optimización de la fuerza bruta de los indicadores existentes en busca de parámetros óptimos desde los que utilizar en un sistema de comercio ya estructurado. El Generador del Sistema de Negociación comienza en un origen de punto cero sin hacer suposiciones sobre el movimiento del mercado en el futuro y luego desarrolla Trading Systems a un ritmo muy alto combinando la información presente en el mercado y formulando nuevos filtros, funciones, condiciones y relaciones ya que Progresa hacia un sistema de comercio genéticamente modificado. El resultado es que un excelente sistema de comercio puede ser generado en unos pocos minutos en 20-30 años de datos de mercado diarios en prácticamente cualquier mercado. En los últimos años ha habido varios enfoques para la optimización del sistema de comercio que emplean el Algoritmo Genético menos potente. Los Programas Genéticos (GPs) son superiores a los Algoritmos Genéticos (AGs) por varias razones. En primer lugar, los GPs convergen en una solución a una tasa exponencial (muy rápido y cada vez más rápido), mientras que los algoritmos genéticos convergen a una velocidad lineal (mucho más lento y no obtener más rápido). Second, GPs actually generate Trading System machine code that combined the genetic material (indicators, patterns, inter-market data) in unique ways. These unique combinations may not be intuitively obvious and do not require initial definitions by the system developer. The unique mathematical relationships created may become new indicators, or variants in Technical Analysis, not yet developed or discovered. GAs, on the other hand, simply look for optimum solutions as they progress over the parameter range they do not discover new mathematical relationships and do not write their own Trading System code. GPs create Trading System code of various lengths, using variable length genomes, will modify the length of the Trading System through what is called non-homologous crossover and will completely discard an indicator or pattern that does not contribute to the efficiency of the Trading System. GAs use only fixed size instruction blocks, making use of only homologous crossover and do not produce variable length Trading System code, nor will they discard an inefficient indicator or pattern as readily as a GP. Finally, Genetic Programs are a recent advancement in the domain of machine learning, whereas Genetic Algorithms were discovered 30 years ago. Genetic Programs do include all of the main functionality of Genetic Algorithms crossover, reproduction, mutation and fitness, however GPs include much faster and robust features, making GPs the best choice for producing Trading Systems. The GP employed in TSLs Trading System Generator is the fastest GP currently available and is not available in any other financial market software in the world. The Genetic Programming Algorithm, Trading Simulator and Fitness Engines used within TSL took over 8 years to produce. Trading System Lab is the result of years of hard work by a team of engineers, scientists, programmers and traders, and we believe represents the most advanced technology available today for trading the markets. Optimization of trading algorithm: Introduction Hey there, Protraders Each lgotrader faces the problem of selecting the optimal parameters of the trading system when constructing trading robots. The main system parameters are often determined by considerations of logic of the traded market situation. But thin system setup most often is produced by automatic methods. The process of selecting the best system parameters is called optimization. In the general case, bringing the system to the optimal (best) condition by searching the system parameters is called optimization. Optimization is realized by finding the extremum of the target function. For optimization conducting we need to have a mathematical model of the process (in our case its a trading system that works on a certain asset), a target function (some statistical system indicator), and search algorithm of the target function extremum. Optimization processes by algorithms types can be divided into structural and parametric. Structural algorithms are designed to improve the structure of the investigated system and parametric algorithms work only with the parameters of the system. For algotrading is used parametric optimization in most cases. Using Protrader terminal and specialized tool AlgoStudio lgotrader gets access to the two most powerful parametric algorithms of the optimization: Genetic algorithm Particle swarm optimization. In order to understand the scope, as well as the strengths and weaknesses of these optimization algorithms, lets analyze their fundamentals. This algorithm was created on the theory of evolution. Es decir. the basic idea of the algorithm is the crossover and mutation of the parameters of some initial population. And the selection of those parameter combinations which most satisfy the target function. Consider the workflow of genetic algorithm in more detail. At the first stage some number of optimized parameters combinations is randomly created, lets call it the initial population. Then, supplying alternately these combinations to our mathematical model (trading system), and testing the system at some time interval, we obtain the statistical parameters of the trading system (profit, loss, the number of trades, expectation value etc.) using each of the specified combinations of parameters of our initial population. Lets compare the obtained results. Some from the system parameters sets will give us the best values of the target function. In the next step well select the best sets of system parameters and apply to them the so-called genetic operators which include Crossover and Mutation. When using the Crossover, each of the selected parameter sets is crossed with others in their population creating the new parameter sets that will inherit the signs of parental sets. When using the Mutation some part of the initial population changes some of its parameters, i. e. mutates. Received new parameter sets called the new generation. In the next step, we substitute the obtained new generation parameter sets (after the mutation and crossover) in our trading system and test it. Lets produce a selection of the best parameter sets in accordance with our target function by test results. Then repeat the above manipulations before the execution of the optimization termination condition, any parameter may be the condition, for example, the number of optimization generations, or achieving some predetermined value of the target function. Thus, after the completion of the genetic algorithm, well get the parameter sets of the investigated system which maximize or minimize the target function, for example, the profitability of the trading system. To use Genetic optimization algorithm in the Protrader 3 terminal you need to open AlgoStudio. Choose the Optimization tab and select Genetic algorithm in the menu Properties gt Optimization setup gt Type. Settings of the genetic algorithm will appear in the menu Properties gt Optimization setup, lets decipher their meaning: Type allows selecting the optimization type. Two types are available here: genetic algorithm and particle swarm optimization. Cycle limit is the number of iterations for finding the optimal solution. Basic genetic algorithm and particle swarm algorithm does not use this limit user cannot determine for how long the optimization will pass (more time better results). Genetic algorithm which is implemented in the Protrader 3 produces the number of iterations equal to the value of this parameter. Optimize search of the maximum or minimum of the target function. This parameter determines which type of the target function extremum will be searched. Use gradient allows genetic algorithm to use gradient optimization in parallel with the classical genetic algorithm. Use elitism allows genetic algorithm to store the best population value (individual ). This works well with average and large target areas and with large chromosome amount. Recommended to use this setting. Chromosome count is the number of items which are used by genetic algorithm. This parameter depends on the task, so it is not possible to determine the optimal value. Typically, a value is in the range 10. 50, but sometimes can be higher. Generally, a large target area requires a large number of chromosomes. Use sharing allows genetic algorithm to use the procedure of sharing which periodically checks the chromosomes (that are placed close to each other) and uses mutation of one of them. Also supports the proper arrangement of chromosomes. Crossover/Mutation probabilit y these are very important parameters of the genetic algorithm that determine the amount () of mutation and crossover. The execution of this condition is desirable: Crossover probability Mutation probability 100 . The large crossover value means that genetic algorithm will search for the decision in local target area. The large mutation value means that genetic algorithm will search well in global target area. After setting all the settings, you need to select the optimized parameters in the Strategy variables window. Specify the minimum and maximum possible values for each parameter and also determine the step change of the parameter in the Prec. columna. The final step in the optimization process setup will be the definition of target function Targets and setting of the weight of each selected target function in the optimization process. Explanation of the target function types will be given in a future article. Particle swarm optimization Lets move to the second of optimization algorithms available to users of the Protrader 3 terminal. Like the genetic algorithm, particle swarm algorithm was established on the basis of observation of nature, namely, on the principle of moving the flock of birds. Each bird in the flock is watching for its comrades, and when one bird finds food, the whole flock will know about it. Thus, a flock of birds is extremely efficient executes the function of searching the food. Particle swarm optimization, using a similar principle, will search for an extremum of target function in the solution space of a specified trading system. Lets imagine the trading system which Profit factor depends on two parameters n and k. Es decir. our goal is to optimize the two parameters of the trading system. Accept the Profit factor of the trading system as a target function. Then the space of possible solutions to assigned task will be two-dimensional, and somewhere in the space of solutions a point will exist which corresponds to a system parameters combination in which the trading system shows the maximum profitability. For simplicity, specify the initial number of particles equal to two (particle x and particle y). They will be randomly located on the solutions plane. According to the picture, profitability of the system at point y is higher than at a point x, according to the rules of the algorithm, particle x moves to a new point along calculated vector at design speed in the direction of the particle which is closer to the extremum of the target function (Profit factor). Also whole totality of the particles has global displacement vector in the solution space in the direction of the target function extremum. Thus, if particles are randomly scattered over the entire space of solutions then at the end of the algorithm particles will gather in the vicinity of the target function extremum, thereby defining a zone of optimal system parameters. Iterations will continue until the exit condition of the optimization wont be reached, for example, set value of the target function. Also this algorithm is corrected by the speed of particles movement in the solution space, such amendment is known as Inertia. These amendments provide the balancing between breadth of research and the search speed of the target function extremum. To use Particle swarm optimization in Protrader 3 terminal, you need to open AlgoStudio and select Particle swarm optimization in the window Optimization gt Properties gt Optimization setup gt Type. Settings of the Particle swarm optimization will appear in the menu Properties gt Optimization setup, lets decipher their meaning: Particles count the number of particles that is used in the current calculation. Local/Global gravity factors these parameters define the balance between finding a local extremum and complete analysis of the solution space, by analogy with Crossover and Mutation in genetic algorithm. Inertia determines how long the particle will move to the reversal. Maximal velocity defines the maximal speed. It should be increased for large solution spaces. Smaller values give the best results for small solution spaces. Part to move is the percentage of particles that will move. It should be between 0 and 1. The default value is 1 (all particles will move). To start the optimization, tap the Run button. We considered the general principles of optimization in this article and also described the optimization algorithms that are implemented in the Protrader 3 terminal. In the next article we will consider the types of the target function in detail, and also will configure the optimizer.

Comments