Artículos de programación MQL4 y MQL5

icon

Aprenda el lenguaje de programación de estrategias comerciales MQL5 leyendo numerosos artículos la mayor parte de los cuales han sido escritos por Ustedes - miembros de MQL5.community. Con el fin de buscar rápidamente la respuesta sobre una u otra cuestión de programación, todos los artículos están divididos en categorías: "Integración", "Probador", "Estrategias comerciales", etc.

Siga las nuevas publicaciones y participe en sus discusiones en el foro de MQL5.community!

Nuevo artículo
últimas | mejores
preview
Análisis espectral singular unidimensional

Análisis espectral singular unidimensional

El artículo aborda aspectos teóricos y prácticos del método de análisis espectral singular (ARS), un método eficaz de análisis de series temporales que permite representar la compleja estructura de una serie como una descomposición en componentes simples, como la tendencia, las fluctuaciones estacionales (periódicas) y el ruido.
preview
Desarrollo de un sistema de repetición (Parte 69): Ajuste del tiempo (II)

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.
preview
Redes neuronales en el trading: Detección de objetos con reconocimiento de escena (HyperDet3D)

Redes neuronales en el trading: Detección de objetos con reconocimiento de escena (HyperDet3D)

Le proponemos que conozca un nuevo enfoque de la detección de objetos mediante hiper-redes: una hiper-red de generación de coeficientes de peso para el modelo básico que permite tener en cuenta las peculiaridades del estado actual del mercado. Este enfoque mejora la precisión de las previsiones adaptando el modelo a las distintas condiciones comerciales.
preview
Desarrollo de un sistema de repetición (Parte 67): Refinando el indicador de control

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.
preview
Características del Wizard MQL5 que debe conocer (Parte 33): Núcleos de procesos gaussianos

Características del Wizard MQL5 que debe conocer (Parte 33): Núcleos de procesos gaussianos

Los núcleos del proceso gaussiano son la función de covarianza de la distribución normal que podría desempeñar un papel en el pronóstico. Exploramos este algoritmo único en una clase de señal personalizada de MQL5 para ver si podría usarse como una señal de entrada y salida principal.
preview
Formulación de un Asesor Experto Multipar Dinámico (Parte 3): Estrategias de reversión a la media y de impulso

Formulación de un Asesor Experto Multipar Dinámico (Parte 3): Estrategias de reversión a la media y de impulso

En este artículo, analizaremos la tercera parte de nuestro proceso de creación de un asesor experto (EA) dinámico para múltiples pares, centrándonos específicamente en la integración de las estrategias de trading de reversión a la media y momentum. Analizaremos cómo detectar y reaccionar ante las desviaciones de los precios respecto a la media (puntuación Z), y cómo medir el impulso en varios pares de divisas para determinar la dirección de la operación.
preview
Dominando los registros (Parte 4): Guardar registros en archivos

Dominando los registros (Parte 4): Guardar registros en archivos

En este artículo, te enseñaré operaciones básicas con archivos y cómo configurar un controlador flexible para personalizarlo. Actualizaremos la clase CLogifyHandlerFile para escribir los registros directamente en un archivo. Realizaremos una prueba de rendimiento simulando una estrategia en el EURUSD durante una semana, generando registros en cada tick, con una duración total de 5 minutos y 11 segundos. El resultado se comparará en un artículo futuro, en el que implementaremos un sistema de almacenamiento en caché para mejorar el rendimiento.
preview
Simulación de mercado (Parte 15): Sockets (IX)

Simulación de mercado (Parte 15): Sockets (IX)

En este artículo, explicaré una de las posibles soluciones a lo que he estado intentando mostrar. Es decir, cómo permitir que un usuario de Excel realice una acción en MetaTrader 5 sin enviar órdenes ni abrir o cerrar una posición. La idea es que el usuario utilice Excel para realizar un análisis fundamental de algún símbolo. Y que, usando únicamente Excel, pueda indicar a un Asesor Experto que se esté ejecutando en MetaTrader 5 que debe abrir o cerrar una posición determinada.
preview
Redes neuronales en el trading: Estudio de la estructura local de datos

Redes neuronales en el trading: Estudio de la estructura local de datos

La identificación y preservación eficaz de la estructura local de los datos del mercado en condiciones de ruido es una tarea importante en el trading. El uso del mecanismo de Self-Attention ha ofrecido buenos resultados en el procesamiento de estos datos, pero el método clásico no tiene en cuenta las características locales de la estructura original. En este artículo, le propongo familiarizarse con un algoritmo que considera estas dependencias estructurales.
preview
Análisis de múltiples símbolos con Python y MQL5 (Parte II): Análisis de componentes principales para la optimización de carteras

Análisis de múltiples símbolos con Python y MQL5 (Parte II): Análisis de componentes principales para la optimización de carteras

La gestión del riesgo de las cuentas de trading es un reto para todos los operadores. ¿Cómo podemos desarrollar aplicaciones de trading que aprendan dinámicamente los modos de riesgo alto, medio y bajo para diversos símbolos en MetaTrader 5? Al utilizar el Análisis de Componentes Principales (Principal Components Analysis, PCA), obtenemos un mejor control sobre la variación de la cartera. Demostraré cómo crear aplicaciones que aprendan estos tres modos de riesgo a partir de datos de mercado obtenidos de MetaTrader 5.
preview
Desarrollamos un asesor experto multidivisas (Parte 25): Conectamos una nueva estrategia (II)

Desarrollamos un asesor experto multidivisas (Parte 25): Conectamos una nueva estrategia (II)

En este artículo seguiremos conectando la nueva estrategia con el sistema de optimización automática que hemos creado. Asimismo, veremos qué cambios habrá que introducir en el EA de creación del proyecto de optimización y en los EAs de la segunda y tercera fase.
preview
Análisis de las brechas temporales de precios en MQL5 (Parte I): Creando un indicador básico

Análisis de las brechas temporales de precios en MQL5 (Parte I): Creando un indicador básico

El análisis de brechas temporales ayuda a los tráders a identificar posibles puntos de reversión del mercado. El artículo analiza qué es un desfase temporal, cómo interpretarlo y de qué manera se puede utilizar para detectar la inyección de un gran volumen en el mercado.
preview
Simulación de mercado (Parte 17): Sockets (XI)

Simulación de mercado (Parte 17): Sockets (XI)

Implementar la parte que se ejecutará aquí en MetaTrader 5 no es complicado. Pero hay diversos aspectos a los que hay que prestar atención. Esto es para que tú, querido lector, consigas hacer que el sistema funcione de verdad. Recuerda una cosa: no se ejecutará un único programa. En realidad, estarás ejecutando tres programas a la vez. Es importante que cada uno se implemente y se construya de forma que trabajen y se comuniquen entre sí. Es crucial que cada uno sepa qué está intentando o deseando hacer el otro.
preview
Desarrollamos un asesor experto multidivisas (Parte 22): Inicio de la transición a la sustitución dinámica de ajustes

Desarrollamos un asesor experto multidivisas (Parte 22): Inicio de la transición a la sustitución dinámica de ajustes

Si hemos empezado a automatizar la optimización periódica, también deberíamos ocuparnos de la actualización automática de los ajustes de los asesores expertos que ya están trabajando en la cuenta comercial. También deberíamos permitirle ejecutar un asesor experto en el simulador de estrategias y cambiar su configuración en una sola pasada.
preview
Desarrollo de un sistema de repetición (Parte 72): Una comunicación inesperada (I)

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.
preview
Exploramos modelos de regresión para inferencia causal y operaciones bursátiles

Exploramos modelos de regresión para inferencia causal y operaciones bursátiles

Este artículo explora la posibilidad de usar modelos de regresión en el trading algorítmico. Los modelos de regresión, a diferencia de la clasificación binaria, permiten crear estrategias de trading más flexibles mediante la evaluación cuantitativa de los cambios de precio previstos.
preview
Simulación de mercado (Parte 08): Sockets (II)

Simulación de mercado (Parte 08): Sockets (II)

¿Qué te parece si creamos algo práctico con sockets? Bien, en este artículo empezaremos a crear un minichat. Acompáñanos y descubre cómo se hace, porque será algo bastante interesante. Recuerda que el código que se mostrará aquí tiene un objetivo puramente didáctico. En realidad, no deberías utilizar este código con fines comerciales ni en una aplicación finalizada, ya que no cuenta con ningún tipo de seguridad en la transmisión de datos y es posible ver el contenido que se está transportando a través del socket.
preview
Del básico al intermedio: Estructuras (V)

Del básico al intermedio: Estructuras (V)

En este artículo, veremos cómo se realiza la sobrecarga de un código estructural. Sé que esto es bastante difícil de entender al principio, sobre todo si es la primera vez que ves esto. Es muy importante que asimiles estos conceptos y entiendas muy bien lo que sucede aquí antes de intentar aventurarte en cosas más complicadas y elaboradas.
preview
Del básico al intermedio: Array (III)

Del básico al intermedio: Array (III)

En este artículo, veremos cómo trabajar con arrays en MQL5, hasta el punto de transferir información entre funciones y procedimientos mediante arrays. El objetivo es prepararte para lo que se verá y explicará en artículos futuros. No obstante, es extremadamente recomendable que estudies muy bien lo que se mostrará en este artículo.
preview
Del básico al intermedio: Estructuras (IV)

Del básico al intermedio: Estructuras (IV)

En este artículo, veremos cómo producir el llamado código estructural, en el que se coloca todo el contexto y las formas de manipular variables e información dentro de una estructura, con el fin de generar un contexto adecuado para la implementación de cualquier código. Veremos la necesidad de utilizar la cláusula private para separar lo que es público de lo que no, espetando así la regla de encapsulamiento y manteniendo el contexto para el que se creó una estructura de datos.
preview
Trading por pares: negociación algorítmica con optimización automática en la diferencia de puntuación Z

Trading por pares: negociación algorítmica con optimización automática en la diferencia de puntuación Z

En este artículo, veremos qué es el trading por pares y cómo se realiza el comercio de correlaciones. También crearemos un asesor experto para automatizar el trading por pares y añadiremos la capacidad de optimizar automáticamente dicho algoritmo comercial a partir de los datos históricos. Además, como parte del proyecto, aprenderemos a calcular la divergencia de dos pares utilizando la puntuación z.
preview
Websockets para MetaTrader 5: conexiones de cliente asíncronas con la API de Windows

Websockets para MetaTrader 5: conexiones de cliente asíncronas con la API de Windows

Este artículo detalla el desarrollo de una biblioteca personalizada vinculada dinámicamente y diseñada para facilitar las conexiones asíncronas de clientes WebSocket para las aplicaciones MetaTrader 5.
preview
Redes neuronales en el trading: Previsión probabilística de series temporales (K2VAE)

Redes neuronales en el trading: Previsión probabilística de series temporales (K2VAE)

Le invitamos a explorar la implementación original del framework K²VAE, un modelo flexible capaz de aproximar linealmente dinámicas complejas en el espacio latente. Este artículo le mostraremos cómo implementar componentes clave en MQL5, incluidas las matrices parametrizadas y su gestión fuera de las capas estándar de redes neuronales. Este material resultará útil a quienes busquen un enfoque práctico para crear modelos de series temporales interpretables.
preview
Herramientas de trading de MQL5 (Parte 4): Mejorando el panel del escáner multitemporal con posicionamiento dinámico y funciones de alternancia

Herramientas de trading de MQL5 (Parte 4): Mejorando el panel del escáner multitemporal con posicionamiento dinámico y funciones de alternancia

En este artículo, actualizamos el panel de control del escáner multitemporal MQL5 con funciones de arrastre y alternancia. Hemos habilitado la opción de arrastrar el panel de control y una opción para minimizar/maximizar que permite un mejor uso de la pantalla. Implementamos y probamos estas mejoras para lograr una mayor flexibilidad operativa en el trading.
preview
Introducción a MQL5 (Parte 19): Automatización de la detección de las ondas de Wolfe

Introducción a MQL5 (Parte 19): Automatización de la detección de las ondas de Wolfe

Este artículo explica cómo identificar mediante programación los patrones de onda de Wolfe alcistas y bajistas y cómo operar con ellos utilizando MQL5. Veremos cómo identificar las estructuras de la onda de Wolfe mediante programación y cómo ejecutar operaciones basadas en ellas utilizando MQL5. Esto incluye detectar puntos de inflexión clave, validar las reglas de los patrones y preparar el EA para que actúe en función de las señales que detecte.
preview
Del básico al intermedio: Comando FOR

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.
preview
Dominando los registros (Parte 5): Optimizar el controlador con caché y rotación

Dominando los registros (Parte 5): Optimizar el controlador con caché y rotación

Este artículo mejora la biblioteca de registro agregando formateadores en los controladores, la clase CIntervalWatcher para administrar ciclos de ejecución, optimización con almacenamiento en caché y rotación de archivos, pruebas de rendimiento y ejemplos prácticos. Con estas mejoras, aseguramos un sistema de registro eficiente, escalable y adaptable a diferentes escenarios de desarrollo.
preview
Cómo funciones centenarias pueden actualizar nuestras estrategias comerciales

Cómo funciones centenarias pueden actualizar nuestras estrategias comerciales

En este artículo hablaremos de las funciones de Rademacher y Walsh. Asimismo, exploraremos formas de aplicar estas funciones para analizar series temporales financieras y estudiaremos diversas aplicaciones en el comercio.
preview
Indicador de estacionalidad por horas, días de la semana y meses

Indicador de estacionalidad por horas, días de la semana y meses

Este artículo explica cómo desarrollar una herramienta para analizar patrones de precios recurrentes en los mercados financieros, ya sea por el día del mes (1-31), el día de la semana (lunes a domingo) o la hora del día (0-23). El indicador analiza datos históricos, calcula la rentabilidad media de cada periodo y muestra los resultados en forma de histograma con una previsión. Incluye parámetros personalizables: tipo de estacionalidad, número de barras analizadas, visualización como porcentajes o valores absolutos, colores del gráfico.
preview
De novato a experto: Noticias animadas utilizando MQL5 (VI) Estrategia de órdenes pendientes para el trading basado en noticias

De novato a experto: Noticias animadas utilizando MQL5 (VI) Estrategia de órdenes pendientes para el trading basado en noticias

En este artículo, nos centramos en la integración de una lógica de ejecución de órdenes basada en las noticias, lo que permite que el asesor experto actúe, y no solo informe. Acompáñanos a descubrir cómo implementar la ejecución automática de operaciones en MQL5 y convertir el asesor experto «News Headline» en un sistema de trading plenamente automatizado y capaz de responder en tiempo real. Los Asesores Expertos ofrecen ventajas significativas para los desarrolladores de algoritmos gracias a la amplia gama de funciones que admiten. Hasta ahora, nos hemos centrado en desarrollar una herramienta de presentación de noticias y eventos del calendario, que incluye paneles de análisis basados en inteligencia artificial e indicadores técnicos.
preview
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 32): Motor de reconocimiento de velas japonesas en Python (II) — Detección con TA-Lib

Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 32): Motor de reconocimiento de velas japonesas en Python (II) — Detección con TA-Lib

En este artículo, hemos pasado de codificar manualmente la detección de patrones de velas japonesas en Python a aprovechar TA-Lib, una biblioteca que reconoce más de sesenta patrones distintos. Estas formaciones ofrecen información valiosa sobre posibles cambios de tendencia en el mercado y continuaciones de tendencias. Sigue leyendo para obtener más información.
preview
Del básico al intermedio: Arrays y cadenas (I)

Del básico al intermedio: Arrays 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.
preview
Redes neuronales en el trading: Integración de la teoría del caos en la previsión de series temporales (Attraos)

Redes neuronales en el trading: Integración de la teoría del caos en la previsión de series temporales (Attraos)

El framework de Attraos integra la teoría del caos en la previsión de series temporales a largo plazo tratándolas como proyecciones de sistemas dinámicos caóticos multidimensionales. Usando la invarianza de los atractores, el modelo aplica la reconstrucción del espacio de fases y la memoria dinámica con varias resoluciones para preservar las estructuras históricas.
preview
Kit de herramientas de negociación MQL5 (Parte 8): Cómo implementar y utilizar la librería History Manager en sus proyectos

Kit de herramientas de negociación MQL5 (Parte 8): Cómo implementar y utilizar la librería History Manager en sus proyectos

Descubra cómo importar y utilizar sin esfuerzo la librería History Manager en su código MQL5 para procesar los historiales de operaciones en su cuenta MetaTrader 5 en el último artículo de esta serie. Con simples llamadas a funciones de una sola línea en MQL5, puede gestionar y analizar de forma eficaz sus datos de trading. Además, aprenderá a crear diferentes scripts de análisis del historial comercial y a desarrollar un asesor experto basado en precios como ejemplos prácticos de uso. El EA de ejemplo aprovecha los datos de precios y la librería History Manager para tomar decisiones de trading informadas, ajustar los volúmenes de operaciones e implementar estrategias de recuperación basadas en operaciones cerradas anteriormente.
preview
Desarrollo de un sistema de repetición (Parte 63): Presionando play en el servicio (IV)

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.
preview
Simulación de mercado (Parte 13): Sockets (VII)

Simulación de mercado (Parte 13): Sockets (VII)

Cuando tú desarrollas algo, ya sea en xlwings o en cualquier otro paquete que nos permita leer y escribir directamente en Excel, en realidad deberías notar que todos los programas, funciones o procedimientos se ejecutan y luego finalizan su tarea. No permanecen allí dentro de un bucle, y, por más que intentes hacer las cosas de otra forma.
preview
Redes neuronales en el trading: Modelo Universal de Generación de Trayectorias (UniTraj)

Redes neuronales en el trading: Modelo Universal de Generación de Trayectorias (UniTraj)

La comprensión del comportamiento de los agentes es importante en distintos ámbitos, pero la mayoría de los métodos se centran en una única tarea (comprensión, eliminación del ruido, predicción), lo cual reduce su eficacia en escenarios del mundo real. En este artículo, propongo al lector introducir un modelo capaz de adaptarse a diferentes tareas.
preview
De novato a experto: Utilidad de control de parámetros

De novato a experto: Utilidad de control de parámetros

Imagínese transformar las propiedades de entrada tradicionales de un EA o indicador en una interfaz de control en tiempo real directamente en el gráfico. Este análisis se basa en nuestro trabajo fundamental sobre el indicador Market Periods Synchronizer, lo que supone una evolución significativa en la forma en que visualizamos y gestionamos las estructuras de mercado en marcos temporales superiores (HTF). Aquí, convertimos ese concepto en una herramienta totalmente interactiva: un panel de control que ofrece control dinámico y una visualización mejorada de la acción del precio en múltiples períodos directamente en el gráfico. Acompáñanos a explorar cómo esta innovación transforma la manera en que los traders interactúan con sus herramientas.
preview
Simulación de mercado: La unión hace la fuerza (III)

Simulación de mercado: La unión hace la fuerza (III)

En este artículo presentaré nuestro sistema para simular operaciones a mercado. Aunque está prácticamente terminado, todavía quedan algunas cosas por implementar y unos pocos cambios por realizar. Sin embargo, confieso que, después de todo lo que ya hemos desarrollado, estoy cansado de seguir atrapado en la implementación de este sistema.
preview
Características del Wizard MQL5 que debe conocer (Parte 28): Revisión de las GAN con una introducción a las tasas de aprendizaje

Características del Wizard MQL5 que debe conocer (Parte 28): Revisión de las GAN con una introducción a las tasas de aprendizaje

La Tasa de Aprendizaje, es un tamaño de paso hacia un objetivo de entrenamiento en muchos procesos de entrenamiento de algoritmos de aprendizaje automático. Examinamos el impacto que sus múltiples horarios y formatos pueden tener en el rendimiento de una Red Generativa Adversarial, un tipo de red neuronal que ya habíamos examinado en un artículo anterior.