Análisis causal de series temporales mediante entropía de transferencia
En este artículo, analizamos cómo se puede aplicar la causalidad estadística para identificar variables predictivas. Exploraremos el vínculo entre causalidad y entropía de transferencia, además de presentar código MQL5 para detectar transferencias direccionales de información entre dos variables.
Algoritmo de optimización del comportamiento social adaptativo — Adaptive Social Behavior Optimization (ASBO): Método de Schwefel, método de Box-Muller
Este artículo presenta una fascinante inmersión en el mundo del comportamiento social de los organismos vivos y su influencia en la creación de un nuevo modelo matemático, el ASBO (Adaptive Social Behavior Optimisation). Hoy exploraremos cómo los principios de liderazgo, vecindad y cooperación observados en las sociedades de seres vivos inspiran el desarrollo de algoritmos de optimización innovadores.
Construya Asesores Expertos Auto-Optimizables con MQL5 y Python
En este artículo, vamos a discutir cómo podemos construir Asesores Expertos capaces de seleccionar de forma autónoma y cambiar las estrategias de negociación en función de las condiciones imperantes en el mercado. Aprenderemos sobre las cadenas de Markov y cómo pueden sernos útiles como operadores algorítmicos.
Reimaginando las estrategias clásicas (Parte II): Ruptura de las Bandas de Bollinger
Este artículo explora una estrategia comercial que integra el análisis discriminante lineal (Linear Discriminant Analysis, LDA) con las Bandas de Bollinger, aprovechando las predicciones de zonas categóricas para obtener señales estratégicas de entrada al mercado.
Del básico al intermedio: Matriz (I)
Este artículo constituye una transición entre lo que se ha visto hasta ahora y una nueva etapa de estudios. Para comprender este artículo es necesario haber leído los artículos anteriores. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea aprender y estudiar los conceptos mostrados.
Del básico al intermedio: Matrices y cadenas (III)
En este artículo veremos dos aspectos. El primero es cómo la biblioteca estándar puede transformar valores binarios en otras formas de representación, como el sistema octal, el sistema decimal y el sistema hexadecimal. El segundo versará sobre cómo podríamos definir el ancho de nuestra contraseña basándonos en una frase secreta, con el conocimiento mostrado hasta ahora. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea aprender y estudiar los conceptos mostrados.
Del básico al intermedio: Matrices y cadenas (II)
En este artículo, demostraré que, aunque aún estamos en una fase inicial y muy básica, ya podemos implementar alguna aplicación interesante. En este caso, crearemos un generador de contraseñas bastante sencillo. Así podremos aplicar algunos de los conceptos explicados hasta ahora. Además, mostraré cómo se pueden desarrollar soluciones para algunos problemas específicos.
Del básico al intermedio: Matrices y cadenas (I)
En este artículo, empezaremos a explorar algunos tipos especiales de datos. Empezaremos definiendo qué es una cadena de texto (string) y explicando cómo utilizar algunos procedimientos básicos. Esto nos permitirá trabajar con este tipo de dato, que puede resultar curioso, aunque en ciertos momentos puede resultar un poco confuso para principiantes. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea aprender y estudiar los conceptos mostrados.
Del básico al intermedio: Precedencia de operadores
Se trata, sin duda, del tema más complicado de explicar únicamente con la parte teórica. Por esta razón, te aconsejo que practiques lo que se mostrará aquí. Aunque al principio todo parezca simple, esta cuestión sobre los operadores solo se comprenderá bien con la práctica aliada a un estudio constante. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea aprender y estudiar los conceptos mostrados.
Del básico al intermedio: Comando FOR
En este artículo hablaremos de los conceptos más básicos sobre el comando FOR. Todo lo que se mostrará aquí debe asimilarse y comprenderse a fondo. A diferencia de otros comandos que hemos tratado anteriormente, este comando FOR tiene ciertas peculiaridades que lo hacen muy complejo con rapidez. Así que, querido lector, no permitas que este tipo de material se acumule. Comienza a estudiarlo y practicarlo cuanto antes. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea aprender y estudiar los conceptos mostrados.
Algoritmo de campo eléctrico artificial (AEFA) — Artificial Electric Field Algorithm (AEFA)
Este artículo presenta el algoritmo de campo eléctrico artificial (AEFA) inspirado en la ley de Coulomb de la fuerza electrostática. El algoritmo modela fenómenos eléctricos para resolver problemas de optimización complejos usando partículas cargadas y las interacciones de estas. El AEFA presenta propiedades únicas en el contexto de otros algoritmos relacionados con las leyes de la naturaleza.
Del básico al intermedio: Comando SWITCH
En este artículo aprenderemos a utilizar el comando SWITCH en su forma más simple y básica. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos presentados.
Desarrollo de un sistema comercial basado en el libro de órdenes (Parte I): el indicador
El libro de órdenes —Depth of Market— es, sin duda, un elemento muy relevante para la ejecución de operaciones rápidas, especialmente en algoritmos de alta frecuencia (HFT). En esta serie de artículos, exploraremos este tipo de evento comercial que podemos obtener a través del bróker en muchos de los símbolos negociados. Empezaremos con un indicador en el que se pueden configurar la paleta de colores, la posición y el tamaño del histograma que se mostrará directamente en el gráfico. También veremos cómo generar eventos BookEvent para probar el indicador en condiciones específicas. Otros posibles temas que trataremos en artículos futuros son el almacenamiento de estas distribuciones de precios y las formas de utilizarlas en el simulador de estrategias.
Del básico al intermedio: Directiva Include
En este artículo, hablaremos de una directiva de compilación ampliamente utilizada en los diversos códigos que puedes encontrar en MQL5. Aunque esta directiva de compilación se explicará aquí de manera bastante básica y superficial, es importante comenzar a entender cómo usarla, ya que pronto será indispensable para avanzar hacia un nivel de programación superior. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos presentados.
Del básico al intermedio: Comandos BREAK y CONTINUE
En este artículo veremos cómo usar los comandos RETURN, BREAK y CONTINUE dentro de un bucle. Entender lo que cada uno de estos comandos hace en el flujo de ejecución de un bucle es algo muy importante para que puedas trabajar con aplicaciones más elaboradas. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos presentados.
Del básico al intermedio: Comando WHILE y DO WHILE
En este artículo veremos de manera práctica y bastante didáctica el primer comando de bucle. A pesar de que muchos principiantes sienten temor al enfrentarse a la necesidad de crear bucles, saber cómo hacerlo de manera adecuada y segura, es algo que solo la experiencia y la práctica pueden proporcionar. Pero, ¿quién sabe? Tal vez pueda ayudarte a reducir las dificultades y el sufrimiento, mostrándote los principales problemas y precauciones que debes tener al utilizar bucles en tus códigos. El contenido expuesto aquí tiene como objetivo exclusivamente la enseñanza didáctica. En ningún caso debe considerarse como una aplicación destinada a otro fin que no sea el aprendizaje y estudio de los conceptos presentados.
Combinación de estrategias de análisis técnico y fundamental en MQL5 para principiantes
En este artículo, analizaremos cómo integrar sin problemas el seguimiento de tendencias y los principios fundamentales en un Asesor Experto para crear una estrategia más sólida. Este artículo demostrará lo fácil que es para cualquiera comenzar a desarrollar algoritmos comerciales personalizados utilizando MQL5.
Algoritmo de búsqueda por vecindad — Across Neighbourhood Search (ANS)
El artículo revela el potencial del algoritmo ANS como paso importante en el desarrollo de métodos de optimización flexibles e inteligentes capaces de considerar la especificidad del problema y la dinámica del entorno en el espacio de búsqueda.
Del básico al intermedio: Comando IF ELSE
En este artículo veremos cómo trabajar con el comando IF y su compañero ELSE. Este es el comando más importante y significativo que existe en cualquier lenguaje de programación. Sin embargo, aunque es muy sencillo de usar, a veces genera cierta confusión cuando nos falta experiencia en su uso y en los conceptos asociados. El contenido expuesto aquí tiene como objetivo exclusivamente la enseñanza didáctica. En ningún caso debe considerarse como una aplicación destinada a otro fin que no sea el aprendizaje y estudio de los conceptos presentados.
Del básico al intermedio: Paso por valor o por referencia
En este artículo entenderás en la práctica la diferencia entre el paso por valor y el paso por referencia. Aunque parece algo aparentemente sencillo y que no suele causar problemas, muchos programadores con una considerable experiencia suelen enfrentarse a verdaderos contratiempos con sus códigos, precisamente por este pequeño detalle. Saber cuándo, cómo y por qué usar un paso por valor o un paso por referencia marcará una gran diferencia en tu vida como programador. El contenido presentado aquí tiene como único objetivo la enseñanza. En ningún caso debe considerarse como una aplicación destinada a otro fin que no sea el aprendizaje y el estudio de los conceptos mostrados.
Del básico al intermedio: Operadores
En este artículo, exploraremos los operadores básicos. Aunque es un tema fácil de comprender, existen pequeños detalles que marcan una gran diferencia a la hora de incorporar expresiones matemáticas en formato de código. Sin comprender adecuadamente estos detalles, muchos programadores con poca o ninguna experiencia terminan abandonando su intento de crear sus propias soluciones.
Del básico al intermedio: Variables (III)
Aquí veremos cómo utilizar las variables y constantes predefinidas por el lenguaje MQL5. Además, echaremos un vistazo a otro tipo especial de variable: las funciones. Saber trabajar de manera correcta con estas variables puede marcar la diferencia entre una aplicación que funciona y una que no. Para comprender lo que se expondrá aquí es necesario haber entendido lo visto en los artículos anteriores.
Indicador personalizado: Trazado de puntos de entradas parciales en cuentas netting
En este artículo, exploraremos una forma interesante y diferente de crear un indicador en MQL5. En lugar de centrarnos en una tendencia o patrón gráfico, el objetivo será gestionar nuestras propias posiciones, incluyendo las entradas y salidas parciales. Utilizaremos intensivamente matrices dinámicas y algunas funciones comerciales (Trade) relacionadas con el historial de transacciones y las posiciones abiertas para indicar en el gráfico dónde se llevaron a cabo estas operaciones.
Algoritmo de optimización de reacciones químicas (CRO) (Parte II): Ensamblaje y resultados
En la segunda parte, reuniremos los operadores químicos en un único algoritmo y presentaremos un análisis detallado de sus resultados. Descubramos cómo el método de optimización de reacciones químicas (CRO) aborda la solución de problemas complejos en funciones de prueba.
Del básico al intermedio: Variables (II)
En este artículo vamos a ver cómo trabajar con variables del tipo estática. Este tema suele confundir a muchos programadores, tanto principiantes como aquellos con algo de experiencia. Esto se debe a que existen algunos cuidados y trucos que deben observarse al usar este mecanismo. El contenido expuesto aquí tiene como objetivo, pura y simplemente, la enseñanza didáctica. En ningún caso debe considerarse como una aplicación cuya finalidad no sea el aprendizaje y estudio de los conceptos presentados.
Del básico al intermedio: Variables (I)
Muchos programadores principiantes tienen muchas dificultades para comprender por qué sus códigos no funcionan como esperan. Existen muchos detalles que hacen que un código sea realmente funcional. No se trata simplemente de escribir toda una serie de funciones y operaciones para que un código funcione. ¿Qué tal si aprendemos de la manera correcta cómo se crea un código real en lugar de copiar y pegar fragmentos de código encontrados aquí y allá? El contenido expuesto aquí tiene como objetivo, pura y simplemente, la didáctica. En ningún caso debe considerarse como una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos mostrados.
Desarrollo de un sistema de repetición (Parte 73): Una comunicación inusual (II)
En este artículo, veremos cómo transferir información en tiempo real entre el indicador y el servicio, y comprenderemos por qué pueden surgir problemas al modificar el timeframe y cómo resolverlos correctamente. Como bono, tendrás acceso a la última versión de la aplicación de repetición/simulador. El contenido es exclusivamente didáctico y no debe utilizarse con otros fines.
Desarrollo de un sistema de repetición (Parte 72): Una comunicación inesperada (I)
Lo que construiremos será complejo de entender. Por esta razón, en este artículo solo presentaré el inicio de la construcción. Léelo con calma, ya que es esencial comprender su contenido para pasar al siguiente paso. El objetivo de este contenido es meramente didáctico, sin aplicación práctica más allá del aprendizaje y estudio de los conceptos presentados.
Desarrollo de un sistema de repetición (Parte 71): Ajuste del tiempo (IV)
En este artículo, mostraré cómo implementar lo presentado en el artículo anterior en el servicio de repetición/simulación. Pero, como suele ocurrir con muchas cosas en la vida, es habitual que surjan problemas. Y este caso no fue una excepción. Sigue leyendo y descubre cuál será el tema del próximo artículo de esta serie. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuyo objetivo no sea el aprendizaje y el estudio de los conceptos mostrados.
Desarrollo de un sistema de repetición (Parte 70): Ajuste del tiempo (III)
En este artículo, mostraré cómo utilizar la función CustomBookAdd de manera correcta y funcional. Aunque pueda parecer sencillo, tiene muchas implicaciones. Por ejemplo, permite indicar al indicador de mouse si el símbolo personalizado está en subasta, en negociación o si el mercado está cerrado. El contenido expuesto aquí tiene como único objetivo ser didáctico. En ningún caso debe considerarse una aplicación cuya finalidad sea distinta a la de aprender y estudiar los conceptos mostrados.
Desarrollo de un sistema de repetición (Parte 69): Ajuste del tiempo (II)
Aquí entenderemos por qué necesitamos utilizar la función iSpread. Al mismo tiempo, comprenderemos cómo el sistema nos informa del tiempo restante de la barra cuando no hay ticks disponibles para hacerlo. El contenido presentado aquí tiene como único propósito la enseñanza y la didáctica. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos mostrados.
Cómo ver las transacciones directamente en el gráfico sin tener que perderse en el historial de transacciones
En este artículo, crearemos una herramienta sencilla para visualizar cómodamente posiciones y transacciones directamente en el gráfico con navegación mediante teclas. Esto permitirá a los operadores examinar visualmente las transacciones individuales y recibir toda la información sobre los resultados comerciales directamente en el momento.
Desarrollo de Sistemas Avanzados de Trading ICT: Implementación de señales en un indicador de Order Blocks
En este artículo, aprenderás a desarrollar un indicador de Order Blocks basado en el volumen de la profundidad de mercado y a optimizarlo mediante buffers para mejorar su precisión. Concluimos esta fase del proyecto y nos preparamos para las siguientes, en las que implementaremos una clase de gestión de riesgos y un bot de trading que aprovechará las señales generadas por el indicador.
Desarrollo de un sistema de repetición (Parte 68): Ajuste del tiempo (I)
A continuación, continuaremos con el trabajo de lograr que el indicador del mouse nos informe sobre el tiempo restante de la barra en momentos de baja liquidez. Aunque a primera vista parece sencillo, verás que esta tarea es mucho más complicada. Esto se debe a algunos obstáculos que tendremos que superar. Por eso, es importante que sigas esta primera parte para poder comprender las siguientes.
Desarrollo de un sistema de repetición (Parte 67): Refinando el indicador de control
En este artículo, mostraré lo que un poco de refinamiento en el código es capaz de lograr. Dicho refinamiento tiene como objetivo simplificar nuestro código, hacer un mayor uso de las llamadas a la biblioteca de MQL5 y, sobre todo, conseguir que sea mucho más estable, seguro y fácil de usar en otros códigos que desarrollemos en el futuro. El contenido expuesto aquí tiene un propósito puramente didáctico. En ningún caso debe considerarse como una aplicación cuya finalidad no sea el aprendizaje y estudio de los conceptos mostrados.
Desarrollo de un sistema de repetición (Parte 66): Presionando play en el servicio (VII)
En este artículo, implementaremos una primera solución para identificar cuándo puede aparecer una nueva barra en el gráfico. Esta solución es aplicable a diversas situaciones. Sin embargo, comprender su desarrollo puede ayudarte a entender varios aspectos. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuyo objetivo no sea el aprendizaje y el estudio de los conceptos presentados.
Desarrollo de un sistema de repetición (Parte 65): Presionando play en el servicio (VI)
En este artículo, mostraré cómo lo implementaremos y resolveremos el problema del indicador del mouse cuando se utiliza junto con la aplicación de repetición/simulación. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y estudio de los conceptos presentados.
Desarrollo de un sistema de repetición (Parte 64): Presionando play en el servicio (V)
En este artículo, mostraré cómo corregir dos errores presentes en el código. Sin embargo, he intentado explicarlas de manera que tú, aspirante a programador, entiendas que las cosas no siempre ocurrirán como habías previsto. Pero esto no debe ser motivo de desesperación, sino una oportunidad para aprender. El contenido expuesto aquí tiene como único propósito ser didáctico. En ningún caso debe interpretarse como una aplicación cuya finalidad sea distinta al aprendizaje y estudio de los conceptos presentados.
Desarrollo de un sistema de repetición (Parte 63): Presionando play en el servicio (IV)
En este archivo, resolveremos por fin los problemas de simulación de los ticks en una barra de un minuto, de manera que puedan coexistir con ticks reales. De esta manera, evitaremos enfrentarnos a problemas en el futuro. El contenido expuesto aquí tiene como único objetivo la didáctica. En ningún caso debe interpretarse como una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos mostrados.
Modificaciones más notables del algoritmo de búsqueda cooperativa artificial (Artificial Cooperative Search, ACSm)
Aquí consideraremos la evolución del algoritmo ACS: tres modificaciones destinadas a mejorar las características de convergencia y la eficiencia del algoritmo. Transformación de uno de los principales algoritmos de optimización. De las modificaciones matriciales a los planteamientos revolucionarios en materia de formación de la población.