Artículos con ejemplos de programación en el lenguaje MQL5

icon

Le espera una gran variedad de diferentes artículos sobre la creación de indicadores y robots comerciales para la plataforma MetaTrader usando el lenguaje MQL5. Cada artículo va acompañado con los códigos fuente, Usted puede abrir e iniciarlos en el editor MetaEditor de una manera independiente.

Estos artículos serán útiles tanto para los principiantes en el trading automático, como para los operadores experimentados en la programación y el trading. Aquí encontrará no sólo los ejemplos, sino también las nuevas ideas.

Nuevo artículo
últimas | mejores
preview
Técnicas de remuestreo para la evaluación de predicciones y clasificaciones en MQL5

Técnicas de remuestreo para la evaluación de predicciones y clasificaciones en MQL5

En este artículo exploraremos e implementaremos métodos para evaluar la calidad de los modelos que utilizan un único conjunto de datos como conjuntos de entrenamiento y validación.
preview
Cliente en Connexus (Parte 7): Añadir la capa de cliente

Cliente en Connexus (Parte 7): Añadir la capa de cliente

En este artículo continuamos con el desarrollo de la biblioteca Connexus. En este capítulo creamos la clase CHttpClient, responsable de enviar una solicitud y recibir un orden. También cubrimos el concepto de simulaciones, dejando la biblioteca desacoplada de la función WebRequest, lo que permite una mayor flexibilidad para los usuarios.
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
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
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
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
Del básico al intermedio: Array (IV)

Del básico al intermedio: Array (IV)

En este artículo, veremos cómo podemos hacer algo muy parecido a lo que se encuentra en lenguajes como C, C++ y Java. Se trata de enviar un número casi infinito de parámetros dentro de una función o procedimiento. Aunque, aparentemente, se trate de un tema avanzado. En mi opinión, lo que se verá aquí puede ser implementado con facilidad por cualquier persona que haya comprendido los conceptos anteriores. Siempre y cuando se hayan comprendido los conceptos vistos anteriormente. 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
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
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
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: 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
Mecanismos de compuertas en el aprendizaje en conjuntos

Mecanismos de compuertas en el aprendizaje en conjuntos

En este artículo, continuamos nuestra exploración de los modelos ensamblados analizando el concepto de compuertas, concretamente cómo pueden ser útiles para combinar los resultados de los modelos con el fin de mejorar la precisión de las predicciones o la generalización de los modelos.
preview
Creación de un Panel de administración de operaciones en MQL5 (Parte IX): Organización del código (II): Modularización

Creación de un Panel de administración de operaciones en MQL5 (Parte IX): Organización del código (II): Modularización

En este debate, damos un paso más allá al desglosar nuestro programa MQL5 en módulos más pequeños y manejables. Estos componentes modulares se integrarán posteriormente en el programa principal, mejorando su organización y facilidad de mantenimiento. Este enfoque simplifica la estructura de nuestro programa principal y permite reutilizar los componentes individuales en otros asesores expertos (EA) y desarrollos de indicadores. Al adoptar este diseño modular, creamos una base sólida para futuras mejoras, lo que beneficia tanto a nuestro proyecto como a la comunidad de desarrolladores en general.
preview
Del básico al intermedio: Definiciones (II)

Del básico al intermedio: Definiciones (II)

En este artículo, veremos y exploraremos un poco más sobre la directiva #define, pero esta vez nos centraremos en su segunda forma de utilización. Es decir, la creación de macros. Como sé que este tema puede resultar un poco complicado al principio, he decidido utilizar una aplicación que ya hemos estado explorando desde hace algún tiempo. Espero que disfrutes del contenido de este artículo.
preview
Simulación de mercado (Parte 09): Sockets (III)

Simulación de mercado (Parte 09): Sockets (III)

Este artículo es la continuación del anterior. En él veremos cómo se implementará el Asesor Experto, centrándonos principalmente en cómo debe hacerse el código del servidor. El código del artículo anterior no es suficiente para que las cosas funcionen como deberían, por lo que es necesario profundizar en él. Por esta razón, es necesario que leas ambos artículos para comprender mejor lo que ocurrirá.
preview
Solicitudes en Connexus (Parte 6): Creación de una solicitud y respuesta HTTP

Solicitudes en Connexus (Parte 6): Creación de una solicitud y respuesta HTTP

En este sexto artículo de la serie de la biblioteca Connexus, nos centraremos en una solicitud HTTP completa, cubriendo cada componente que la conforma. Crearemos una clase que represente la solicitud en su conjunto, lo que nos ayudará a reunir las clases creadas anteriormente.
preview
Analizamos el código binario de los precios en bolsa (Parte II): Convirtiendo a BIP39 y escribiendo un modelo GPT

Analizamos el código binario de los precios en bolsa (Parte II): Convirtiendo a BIP39 y escribiendo un modelo GPT

Seguimos intentando descifrar los movimientos de los precios.... ¿Qué tal un análisis lingüístico del "diccionario de mercado" que obtendríamos convirtiendo el código binario de precios en BIP39? En el presente artículo, nos adentramos en un enfoque innovador del análisis de los datos bursátiles y exploramos cómo pueden aplicarse las modernas técnicas de procesamiento del lenguaje natural al lenguaje del mercado.
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
ADAM poblacional (Estimación Adaptativa de Momentos)

ADAM poblacional (Estimación Adaptativa de Momentos)

Este artículo presenta la transformación del conocido y popular método de optimización ADAM basado en gradientes en un algoritmo basado en poblaciones y su modificación con la introducción de individuos híbridos. El nuevo enfoque permite crear agentes que combinen elementos de soluciones exitosas mediante una distribución de probabilidades. Una innovación clave es la generación de poblaciones híbridas que acumulan de forma adaptativa la información de las soluciones más prometedoras, mejorando la eficacia de la búsqueda en espacios multidimensionales complejos.
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
Creación de un Panel de administración de operaciones en MQL5 (Parte V): Autenticación de dos factores (2FA)

Creación de un Panel de administración de operaciones en MQL5 (Parte V): Autenticación de dos factores (2FA)

Hoy discutiremos cómo mejorar la seguridad del Panel de administrador comercial que actualmente se encuentra en desarrollo. Exploraremos cómo implementar MQL5 en una nueva estrategia de seguridad, integrando la API de Telegram para la autenticación de dos factores (2FA). Esta discusión proporcionará información valiosa sobre la aplicación de MQL5 para reforzar las medidas de seguridad. Además, examinaremos la función MathRand, centrándonos en su funcionalidad y cómo se puede utilizar de forma efectiva dentro de nuestro marco de seguridad. ¡Sigue leyendo para descubrir más!
preview
Asesores Expertos Auto-Optimizables con MQL5 y Python (Parte VI): Cómo aprovechar el doble descenso profundo

Asesores Expertos Auto-Optimizables con MQL5 y Python (Parte VI): Cómo aprovechar el doble descenso profundo

El aprendizaje automático tradicional enseña a los profesionales a estar atentos para no sobreajustar sus modelos. Sin embargo, esta ideología está siendo cuestionada por nuevos hallazgos publicados por diligentes investigadores de Harvard, quienes han descubierto que lo que parece ser un sobreajuste puede, en algunas circunstancias, ser el resultado de finalizar prematuramente los procedimientos de entrenamiento. Demostraremos cómo podemos utilizar las ideas publicadas en el artículo de investigación para mejorar nuestro uso de la IA en la previsión de retornos del mercado.
preview
Dominando los registros (Parte 2): Formateo de registros

Dominando los registros (Parte 2): Formateo de registros

En este artículo, exploraremos cómo crear y aplicar formateadores de registros en la biblioteca. Veremos todo, desde la estructura básica de un formateador hasta ejemplos de implementación práctica. Al finalizar, tendrás el conocimiento necesario para formatear registros dentro de la biblioteca y comprenderás cómo funciona todo detrás de escena.
preview
Simulación de mercado (Parte 14): Sockets (VIII)

Simulación de mercado (Parte 14): Sockets (VIII)

Muchos podrían sugerir que deberíamos dejar de usar Excel y pasar a Python directamente, haciendo uso de algunos paquetes que permitirían a Python crear un archivo de Excel para poder analizar los resultados después. Pero, como se mencionó en el artículo anterior, aunque esta solución sea la más sencilla para muchos programadores, no será bien recibida por algunos usuarios. Y, en este asunto, el usuario siempre tiene la razón. Tú, como programador, debes encontrar la forma de hacer que las cosas funcionen.
preview
Simulación de mercado (Parte 07): Sockets (I)

Simulación de mercado (Parte 07): Sockets (I)

Sockets. ¿Sabes para qué sirven o cómo usarlos en MetaTrader 5? Si la respuesta es no, comencemos aprendiendo un poco sobre ellos. Este artículo trata de lo más básico. Pero, como existen diversas maneras de hacer lo mismo, y lo que realmente nos interesa es siempre el resultado, quiero mostrar que sí, existe una forma sencilla de pasar datos desde MetaTrader 5 hacia otros programas, como, por ejemplo, Excel. Sin embargo, la idea principal no es transferir datos de MetaTrader 5 a Excel, sino hacer lo contrario. Es decir, transferir datos desde Excel, o desde cualquier otro programa, hacia MetaTrader 5.
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
Del básico al intermedio: Objetos (II)

Del básico al intermedio: Objetos (II)

En este artículo, veremos cómo controlar, de forma simple, vía código, algunas propiedades de objetos. Veremos cómo podemos colocar más de un objeto en un mismo gráfico, usando, para esto, una aplicación. Y, además, empezaremos a ver la importancia de definir un nombre corto para todo y cualquier indicador que vayamos a implementar.
preview
Desarrollo de un sistema de repetición (Parte 64): Presionando play en el servicio (V)

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.
preview
Algoritmo de optimización caótica — Chaos optimization algorithm (COA)

Algoritmo de optimización caótica — Chaos optimization algorithm (COA)

Hoy hablaremos de un algoritmo de optimización caótica (COA) mejorado, que combina los efectos del caos con mecanismos de búsqueda adaptativos. El algoritmo usa un conjunto de mapeos caóticos y componentes inerciales para explorar el espacio de búsqueda. El artículo revela los fundamentos teóricos de los métodos caóticos de optimización financiera.
preview
Implementación de un modelo de tabla en MQL5: Aplicación del concepto MVC (Modelo-Vista-Controlador)

Implementación de un modelo de tabla en MQL5: Aplicación del concepto MVC (Modelo-Vista-Controlador)

En este artículo, analizamos el proceso de desarrollo de un modelo de tabla en MQL5 utilizando el patrón arquitectónico MVC (Modelo-Vista-Controlador) para separar la lógica de datos, la presentación y el control, lo que permite obtener un código estructurado, flexible y escalable. Consideramos la implementación de clases para construir un modelo de tabla, incluyendo el uso de listas enlazadas para almacenar datos.
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: Mejora de la eficiencia del Transformer mediante la reducción de la nitidez (Final)

Redes neuronales en el trading: Mejora de la eficiencia del Transformer mediante la reducción de la nitidez (Final)

El SAMformer ofrece una solución a los problemas clave del Transformer en la previsión de series temporales a largo plazo, incluida la complejidad del entrenamiento y la escasa generalización a muestras pequeñas. Su arquitectura poco profunda y la optimización con control de nitidez garantizan que se eviten los malos mínimos locales. En este artículo, proseguiremos la aplicación de enfoques utilizando MQL5 y evaluaremos su valor práctico.
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
Del básico al intermedio: Objetos (I)

Del básico al intermedio: Objetos (I)

En este artículo, empezaremos a ver cómo podremos trabajar con objetos directamente en el gráfico. Esto usando un código construido especialmente para mostrarnos algo. Trabajar con objetos es algo muy interesante y bastante divertido. Como este será el primer contacto, empezaremos con algo muy simple.
preview
Optimización y ajuste de código sin procesar para mejorar los resultados de las pruebas retrospectivas

Optimización y ajuste de código sin procesar para mejorar los resultados de las pruebas retrospectivas

Mejore su código MQL5 optimizando la lógica, refinando los cálculos y reduciendo el tiempo de ejecución para mejorar la precisión de las pruebas retrospectivas. Ajuste los parámetros, optimice los bucles y elimine ineficiencias para obtener un mejor rendimiento.
preview
Del básico al intermedio: Herencia

Del básico al intermedio: Herencia

Sin duda, se trata de un artículo al que deberás dedicarle bastante tiempo para entender cómo y por qué funcionan las cosas que se muestran aquí. Esto se debe simplemente a que todo lo que se verá y mostrará aquí está orientado originalmente a lo que sería la programación orientada a objetos. Pero, en realidad, se basa en principios de programación estructural.
preview
Del básico al intermedio: Indicador (V)

Del básico al intermedio: Indicador (V)

En este artículo, veremos cómo podemos lidiar con solicitudes del usuario para cambiar el modo de trazado del gráfico. Esto, para que podamos lograr que un indicador, orientado a usar el modo de trazado gráfico actual, no quede extraño ni diferente de lo que el usuario de MetaTrader 5 esperaría.
preview
Del básico al intermedio: Estructuras (VII)

Del básico al intermedio: Estructuras (VII)

En este artículo se mostrará cómo podemos abordar los problemas para estructurar las cosas y crear una solución más sencilla y atractiva. Aunque el contenido está orientado a la didáctica y, por lo tanto, no se trata de un código real, es necesario asimilar muy bien los conceptos y conocimientos que se verán aquí. Así, en el futuro, podrás seguir los códigos que iremos mostrando.
preview
Introducción a MQL5 (Parte 16): Creación de asesores expertos utilizando patrones técnicos de gráficos

Introducción a MQL5 (Parte 16): Creación de asesores expertos utilizando patrones técnicos de gráficos

Este artículo presenta a los usuarios principiantes la creación de un Asesor Experto MQL5 que identifica y opera con un patrón técnico clásico de gráficos: el patrón Cabeza y Hombros. Explica cómo detectar el patrón utilizando la acción del precio, dibujarlo en el gráfico, establecer los niveles de entrada, stop loss y take profit, y automatizar la ejecución de las operaciones basándose en el patrón.