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
Creación de clases de negociación similares a MQL5 en Python para MetaTrader 5

Creación de clases de negociación similares a MQL5 en Python para MetaTrader 5

El paquete Python de MetaTrader 5 ofrece una forma sencilla de crear aplicaciones de trading para la plataforma MetaTrader 5 en lenguaje Python. Aunque se trata de una herramienta potente y útil, este módulo no es tan fácil de usar como el lenguaje de programación MQL5 a la hora de crear una solución de trading algorítmico. En este artículo, vamos a crear clases de trading similares a las que se ofrecen en MQL5 para crear una sintaxis similar y facilitar la creación de robots de trading en Python como en MQL5.
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
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
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
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
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
Dominando los registros (Parte 3): Exploración de controladores para guardar registros

Dominando los registros (Parte 3): Exploración de controladores para guardar registros

En este artículo, exploraremos el concepto de controladores en la librería de registro, comprenderemos cómo funcionan y crearemos tres implementaciones iniciales: Console, Database y File. Cubriremos todo, desde la estructura básica de los controladores hasta las pruebas prácticas, preparando el terreno para su plena funcionalidad en futuros artículos.
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
Introducción a MQL5 (Parte 14): Guía para principiantes sobre cómo crear indicadores personalizados (III)

Introducción a MQL5 (Parte 14): Guía para principiantes sobre cómo crear indicadores personalizados (III)

Aprenda a construir un indicador de patrón armónico en MQL5 utilizando objetos gráficos. Descubra cómo detectar puntos de oscilación, aplicar retrocesos de Fibonacci y automatizar el reconocimiento de patrones.
preview
Búsqueda oscilatoria determinista (DOS) — Deterministic Oscillatory Search (DOS)

Búsqueda oscilatoria determinista (DOS) — Deterministic Oscillatory Search (DOS)

El algoritmo de búsqueda oscilatoria determinista (DOS) es un método de optimización global innovador que combina las ventajas de los algoritmos de gradiente y enjambre sin usar números aleatorios. El mecanismo de oscilaciones e inclinaciones de aptitud permite a DOS explorar espacios de búsqueda complejos de manera determinista.
preview
Redes neuronales en el trading: Extracción eficiente de características para una clasificación precisa (Mantis)

Redes neuronales en el trading: Extracción eficiente de características para una clasificación precisa (Mantis)

Le presentamos a Mantis, un modelo básico ligero para la clasificación de series temporales basado en el Transformer con preentrenamiento contrastivo y atención híbrida que ofrece precisión y escalabilidad récord.
preview
Los componentes de Vista y Controlador para tablas en el paradigma MVC de MQL5: elementos redimensionables

Los componentes de Vista y Controlador para tablas en el paradigma MVC de MQL5: elementos redimensionables

En este artículo, añadiremos la funcionalidad de cambiar el tamaño de los controles arrastrando los bordes y las esquinas del elemento con el ratón.
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
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
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
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
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.
preview
Características del Wizard MQL5 que debe conocer (Parte 56): Fractales de Bill Williams

Características del Wizard MQL5 que debe conocer (Parte 56): Fractales de Bill Williams

Los fractales de Bill Williams son un indicador potente que es fácil pasar por alto cuando se ve por primera vez en un gráfico de precios. Parece demasiado recargado y probablemente no lo suficientemente incisivo. Nuestro objetivo es desvelar este indicador examinando lo que sus diversos patrones podrían lograr cuando se analizan con pruebas de avance en todos los casos, con un asesor experto creado por un asistente.
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
El componente View para tablas en el paradigma MQL5 MVC: Elemento gráfico base

El componente View para tablas en el paradigma MQL5 MVC: Elemento gráfico base

El artículo trata sobre el proceso de desarrollo de un elemento gráfico básico para el componente View como parte de la implementación de tablas en el paradigma MVC (Modelo-Vista-Controlador) en MQL5. Este es el primer artículo sobre el componente View y el tercero de una serie de artículos sobre la creación de tablas para el terminal cliente MetaTrader 5.
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
El componente View para tablas en el paradigma MQL5 MVC: Controles sencillos

El componente View para tablas en el paradigma MQL5 MVC: Controles sencillos

El artículo trata sobre controles simples como componentes de elementos gráficos más complejos del componente View dentro del marco de implementación de tablas en el paradigma MVC (Model-View-Controller). La funcionalidad básica del controlador se implementa para la interacción de los elementos con el usuario y entre sí. Este es el segundo artículo sobre el componente View (Vista) y el cuarto de una serie de artículos sobre la creación de tablas para el terminal cliente MetaTrader 5.
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
Redes neuronales en el trading: Extracción eficiente de características para una clasificación precisa (Final)

Redes neuronales en el trading: Extracción eficiente de características para una clasificación precisa (Final)

El framework Mantis transforma series temporales complejas en tokens informativos y sirve como una base sólida para un agente comercial inteligente en tiempo real.
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
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
Dominar los Fair Value Gaps: formación, lógica y automatización del trading con Breakers y Market Structure Shifts (MSS)

Dominar los Fair Value Gaps: formación, lógica y automatización del trading con Breakers y Market Structure Shifts (MSS)

Este artículo tiene como objetivo exponer y explicar los Fair Value Gaps, la lógica que subyace a su formación y aparición, y su aplicación al trading automatizado mediante Breakers y cambios en la estructura del 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
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
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
Del básico al intermedio: Arrays y cadenas (II)

Del básico al intermedio: Arrays 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.
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
Redes neuronales en el trading: Modelo multivariado de extremo a extremo para la predicción de series temporales (GinAR)

Redes neuronales en el trading: Modelo multivariado de extremo a extremo para la predicción de series temporales (GinAR)

Le invitamos a explorar un enfoque innovador para la previsión de series temporales con datos faltantes usando el framework GinAR. El artículo muestra la implementación de componentes clave en OpenCL, lo que garantiza un alto rendimiento. En este artículo, analizaremos con detalle la integración de estas soluciones en MQL5. Esto nos permitirá comprender cómo aplicar el método en la práctica en el trading.
preview
Algoritmo de optimización de la fuerza central — Central Force Optimization (CFO)

Algoritmo de optimización de la fuerza central — Central Force Optimization (CFO)

Este artículo presenta un algoritmo de optimización de la fuerza central (CFO) inspirado en las leyes de la gravedad. Hoy investigaremos cómo los principios de atracción física pueden resolver problemas de optimización en los que las soluciones "más difíciles" atraen a sus homólogas menos exitosas.
preview
Optimización Extrema — Extremal Optimization (EO)

Optimización Extrema — Extremal Optimization (EO)

En este artículo analizamos el algoritmo de Optimización Extremal (OE), un método de optimización inspirado en el modelo de criticidad autoorganizada de Bak-Sneppen, donde la evolución se produce mediante la eliminación de los componentes del sistema que representan el peor caso. La versión modificada del algoritmo para poblaciones específicas demuestra un cambio de enfoque, alejándose de los principios teóricos en favor de la eficiencia práctica, lo cual lleva a la creación de potentes herramientas computacionales
preview
Análisis de las brechas temporales de precios en MQL5 (Parte II): Creamos un mapa de calor de la distribución de liquidez a lo largo del tiempo

Análisis de las brechas temporales de precios en MQL5 (Parte II): Creamos un mapa de calor de la distribución de liquidez a lo largo del tiempo

Hoy veremos una guía detallada sobre cómo crear un indicador de mapa de calor para MetaTrader 5 que visualice la distribución de precios a lo largo del tiempo como un mapa de calor. El artículo revela la base matemática del análisis de densidad temporal, donde cada nivel de precio está coloreado desde el rojo (tiempo mínimo de estancia) hasta el azul (tiempo máximo de estancia).
preview
Desarrollo de un sistema de repetición (Parte 60): Presionando play en el servicio (I)

Desarrollo de un sistema de repetición (Parte 60): Presionando play en el servicio (I)

Llevamos bastante tiempo trabajando únicamente con los indicadores. Pero ahora ha llegado el momento de hacer que el servicio vuelva a ejecutar su trabajo y podamos ver el gráfico construyéndose con los datos proporcionados. Sin embargo, como no todo es tan simple, será necesario observar para entender lo que nos espera.
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
Formulación de un Asesor Experto Multipar Dinámico (Parte 4): Ajuste de volatilidad y riesgo

Formulación de un Asesor Experto Multipar Dinámico (Parte 4): Ajuste de volatilidad y riesgo

Esta fase permite ajustar con precisión tu EA multipar para adaptar el tamaño de las operaciones y el riesgo en tiempo real utilizando indicadores de volatilidad como el ATR, lo que mejora la consistencia, la protección y el rendimiento en diversas condiciones de mercado.
preview
Creación de un Panel de administración de operaciones en MQL5 (Parte IX): Organización del código (III): Módulo de comunicación

Creación de un Panel de administración de operaciones en MQL5 (Parte IX): Organización del código (III): Módulo de comunicación

Únase a nosotros para profundizar en los últimos avances en el diseño de la interfaz MQL5, mientras presentamos el panel de comunicaciones rediseñado y continuamos nuestra serie sobre la creación del nuevo Panel de administración utilizando los principios de la modularización. Desarrollaremos la clase CommunicationsDialog paso a paso, explicando detalladamente cómo heredarla de la clase Dialog. Además, aprovecharemos las matrices y la clase ListView en nuestro desarrollo. Obtenga información útil para mejorar sus habilidades de desarrollo en MQL5: ¡lea el artículo y participe en el debate en la sección de comentarios!