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
Un algoritmo de selección de características que utiliza aprendizaje basado en energía en MQL5 puro

Un algoritmo de selección de características que utiliza aprendizaje basado en energía en MQL5 puro

En este artículo presentamos la implementación de un algoritmo de selección de características descrito en un artículo académico titulado "FREL: Un algoritmo de selección de características estable", llamado Ponderación de características como aprendizaje regularizado basado en energía.
preview
Encabezado en Connexus (Parte 3): Dominando el uso de encabezado HTTP para solicitudes WebRequest

Encabezado en Connexus (Parte 3): Dominando el uso de encabezado HTTP para solicitudes WebRequest

Continuamos desarrollando la biblioteca Connexus. En este capítulo, exploramos el concepto de cabeceras en el protocolo HTTP, explicando qué son, para qué sirven y cómo usarlos en las solicitudes. Cubrimos los principales encabezados utilizados en las comunicaciones con API y mostramos ejemplos prácticos de cómo configurarlos en la biblioteca.
preview
Algoritmo de Big Bang y Big Crunch

Algoritmo de Big Bang y Big Crunch

En el presente artículo, le presentamos el método Big Bang - Big Crunch, que consta de dos fases clave: la creación cíclica de puntos aleatorios y su compresión hasta una solución óptima. Este enfoque combina exploración y refinamiento, lo cual permite encontrar soluciones progresivamente mejores y descubre nuevas oportunidades en el campo de la optimización.
preview
Cambiamos a MQL5 Algo Forge (Parte 1): Creación del repositorio principal

Cambiamos a MQL5 Algo Forge (Parte 1): Creación del repositorio principal

Mientras trabajan en proyectos en el MetaEditor, los desarrolladores se enfrentan a la necesidad de gestionar las versiones del código. A pesar de los planes de traslado a GIT y el lanzamiento de MQL5 Algo Forge, la integración aún no está completa. El presente artículo analizará posibles formas de mejorar la usabilidad de las herramientas actuales.
preview
Reimaginando las estrategias clásicas (Parte V): Análisis de múltiples símbolos en USDZAR

Reimaginando las estrategias clásicas (Parte V): Análisis de múltiples símbolos en USDZAR

En esta serie de artículos, revisamos las estrategias clásicas para ver si podemos mejorarlas utilizando la IA. En el artículo de hoy, examinaremos una estrategia popular de análisis de símbolos múltiples utilizando una cesta de valores correlacionados, nos centraremos en el exótico par de divisas USDZAR.
preview
Desarrollo de asesores expertos autooptimizables en MQL5 (Parte 6): Prevención del cierre de posiciones

Desarrollo de asesores expertos autooptimizables en MQL5 (Parte 6): Prevención del cierre de posiciones

Únase a nuestro debate de hoy, en el que buscaremos un procedimiento algorítmico para minimizar el número total de veces que nos detienen en operaciones ganadoras. El problema al que nos enfrentamos es muy complejo, y la mayoría de las soluciones que se plantean en los debates comunitarios carecen de normas establecidas y fijas. Nuestro enfoque algorítmico para resolver el problema aumentó la rentabilidad de nuestras operaciones y redujo nuestra pérdida media por operación. Sin embargo, aún quedan avances por realizar para filtrar completamente todas las operaciones que se detendrán. Nuestra solución es un buen primer paso que cualquiera puede probar.
preview
Cambiando a MQL5 Algo Forge (Parte 3): Uso de repositorios de terceros en su propio proyecto

Cambiando a MQL5 Algo Forge (Parte 3): Uso de repositorios de terceros en su propio proyecto

Hoy veremos cómo podemos conectar el código de otra persona desde cualquier repositorio en el almacenamiento MQL5 Algo Forge a nuestro proyecto. En el presente artículo, finalmente abordaremos esta tarea prometedora pero también compleja: cómo conectar y utilizar en la práctica bibliotecas de repositorios de terceros del almacenamiento MQL5 Algo Forge en nuestro proyecto.
preview
Desarrollo de un sistema de repetición (Parte 51): Esto complica las cosas (III)

Desarrollo de un sistema de repetición (Parte 51): Esto complica las cosas (III)

En este artículo comprenderás una de las cosas más complejas que existen en la programación MQL5: la forma correcta de obtener el ID del gráfico y por qué a veces los objetos no se trazan en él. El contenido expuesto aquí tiene como objetivo, pura y simplemente, ser didáctico. En ningún caso debe considerarse como una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos mostrados.
preview
Del básico al intermedio: Estructuras (VI)

Del básico al intermedio: Estructuras (VI)

En este artículo, veremos cómo podemos empezar a implementar una base de código estructural genérico. El objetivo es reducir nuestro trabajo a la hora de programar y aprovechar todo el potencial que ofrece el propio lenguaje de programación. En este caso, MQL5.
preview
Dominando los registros (Parte 1): Conceptos fundamentales y primeros pasos en MQL5

Dominando los registros (Parte 1): Conceptos fundamentales y primeros pasos en MQL5

¡Bienvenidos al comienzo de otro viaje! Este artículo abre una serie especial donde crearemos, paso a paso, una biblioteca para la manipulación de registros, diseñada para quienes desarrollan en el lenguaje MQL5.
preview
Vectores y valores propios: Análisis exploratorio de datos en MetaTrader 5

Vectores y valores propios: Análisis exploratorio de datos en MetaTrader 5

En este artículo exploramos diferentes formas en que los vectores propios y los valores propios pueden aplicarse en el análisis exploratorio de datos para revelar relaciones únicas en los datos.
preview
Algoritmo de búsqueda cooperativa artificial (Artificial Cooperative Search, ACS)

Algoritmo de búsqueda cooperativa artificial (Artificial Cooperative Search, ACS)

La búsqueda cooperativa artificial (Artificial Cooperative Search, ACS) es un método innovador que utiliza una matriz binaria y múltiples poblaciones dinámicas basadas en relaciones de mutualismo y cooperación para encontrar soluciones óptimas de forma rápida y precisa. El enfoque único de ACS sobre depredadores y presas le permite obtener excelentes resultados en problemas de optimización numérica.
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
Creación de un Panel de administración de operaciones en MQL5 (Parte III): Ampliación de las clases incorporadas para la gestión de temas (II)

Creación de un Panel de administración de operaciones en MQL5 (Parte III): Ampliación de las clases incorporadas para la gestión de temas (II)

En este artículo, ampliaremos cuidadosamente la biblioteca Dialog existente para incorporar la lógica de gestión de temas. Además, integraremos métodos para cambiar de tema en las clases CDialog, CEdit y CButton utilizadas en nuestro proyecto de Panel de administración. Continúe leyendo para obtener perspectivas más reveladoras.
preview
Cambiando a MQL5 Algo Forge (Parte 4): Trabajamos con versiones y lanzamientos

Cambiando a MQL5 Algo Forge (Parte 4): Trabajamos con versiones y lanzamientos

Continuaremos el desarrollo del proyecto Simple Candles y Adwizard describiendo los matices del uso del sistema de control de versiones y el repositorio MQL5 Algo Forge.
preview
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 11): EA de señales Heikin Ashi

Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 11): EA de señales Heikin Ashi

MQL5 ofrece infinitas oportunidades para desarrollar sistemas de trading automatizados adaptados a sus preferencias. ¿Sabías que incluso puede realizar cálculos matemáticos complejos? En este artículo, presentamos la técnica japonesa Heikin-Ashi como una estrategia de trading automatizada.
preview
DoEasy. Elementos de control (Parte 33): "ScrollBar" vertical

DoEasy. Elementos de control (Parte 33): "ScrollBar" vertical

En este artículo, continuaremos desarrollando los elementos gráficos de la librería DoEasy, y añadiremos el desplazamiento vertical de los controles del objeto formulario y algunas funciones y métodos útiles que serán necesarios más adelante.
preview
Desarrollo de asesores expertos autooptimizables en MQL5 (Parte 6): Reglas de negociación autoadaptativas (II)

Desarrollo de asesores expertos autooptimizables en MQL5 (Parte 6): Reglas de negociación autoadaptativas (II)

Este artículo analiza la optimización de los niveles y períodos del RSI para obtener mejores señales de trading. Presentamos métodos para estimar los valores óptimos del RSI y automatizar la selección de periodos mediante búsquedas por cuadrículas y modelos estadísticos. Por último, implementamos la solución en MQL5 mientras aprovechamos Python para el análisis. Nuestro enfoque pretende ser pragmático y directo para ayudarle a resolver problemas potencialmente complicados con sencillez.
preview
Del básico al intermedio: Plantilla y Typename (IV)

Del básico al intermedio: Plantilla y Typename (IV)

En este artículo, veremos de forma muy didáctica cómo resolver el problema que se planteó al final del artículo anterior. Allí se intentaba crear una plantilla de tipo para poder crear una plantilla de una unión de datos.
preview
Marcado de datos en el análisis de series temporales (Parte 6): Aplicación y prueba en EA utilizando ONNX

Marcado de datos en el análisis de series temporales (Parte 6): Aplicación y prueba en EA utilizando ONNX

Esta serie de artículos presenta varios métodos de etiquetado de series temporales, que pueden crear datos que se ajusten a la mayoría de los modelos de inteligencia artificial, y el etiquetado de datos específico según las necesidades puede hacer que el modelo de inteligencia artificial entrenado se ajuste más al diseño esperado, mejorar la precisión de nuestro modelo, ¡e incluso ayudar al modelo a dar un salto cualitativo!
preview
Reimaginando las estrategias clásicas en MQL5 (Parte IX): Análisis de múltiples marcos temporales (II)

Reimaginando las estrategias clásicas en MQL5 (Parte IX): Análisis de múltiples marcos temporales (II)

En la discusión de hoy, examinamos la estrategia de análisis de múltiples marcos temporales para aprender en qué marco temporal nuestro modelo de IA funciona mejor. Nuestro análisis nos lleva a concluir que los marcos temporales mensuales y horarios producen modelos con tasas de error relativamente bajas en el par EURUSD. Utilizamos esto para nuestro beneficio y creamos un algoritmo comercial que hace predicciones de IA en el marco de tiempo mensual y ejecuta sus operaciones en el marco de tiempo horario.
preview
Desarrollamos un asesor experto multidivisas (Parte 27): Componente para mostrar textos de varias líneas

Desarrollamos un asesor experto multidivisas (Parte 27): Componente para mostrar textos de varias líneas

Si es necesario mostrar información textual en un gráfico, podemos utilizar la función Comment(), pero sus capacidades son bastante limitadas. Por ello, en este artículo, crearemos nuestro propio componente: un cuadro de diálogo de pantalla completa capaz de mostrar texto de varias líneas con configuraciones de fuente flexibles y soporte de desplazamiento.
preview
Desarrollo de un sistema de repetición (Parte 50): Esto complica las cosas (II)

Desarrollo de un sistema de repetición (Parte 50): Esto complica las cosas (II)

Vamos resolver la cuestión del ID del gráfico, pero al mismo tiempo, vamos empezar a garantizar que el usuario pueda hacer uso de una plantilla personal, enfocada en analizar el activo que desea estudiar y simular. El contenido expuesto aquí tiene como objetivo, pura y simplemente, ser didáctico. En ningún caso debe considerarse como una aplicación cuya finalidad no sea el aprendizaje y el estudio de los conceptos mostrados.
preview
Integración de MQL5 con paquetes de procesamiento de datos (Parte 4): Gestión de Big Data

Integración de MQL5 con paquetes de procesamiento de datos (Parte 4): Gestión de Big Data

Esta parte explora técnicas avanzadas para integrar MQL5 con potentes herramientas de procesamiento de datos y se centra en el manejo eficiente de grandes volúmenes de datos para mejorar el análisis comercial y la toma de decisiones.
preview
DoEasy. Elementos de control (Parte 29): Control auxiliar "ScrollBar"

DoEasy. Elementos de control (Parte 29): Control auxiliar "ScrollBar"

En este artículo, comenzaremos a desarrollar el control auxiliar ScrollBar y sus objetos derivados: las barras de desplazamiento verticales y horizontales. ScrollBar (barra de desplazamiento) se usa para desplazar el contenido del formulario si va más allá del contenedor. Por lo general, las barras de desplazamiento se encuentran en la parte inferior y derecha del formulario. La barra horizontal en la parte inferior desplaza el contenido hacia la izquierda y hacia la derecha, mientras que la barra vertical desplaza el contenido hacia arriba y hacia abajo.
preview
DoEasy. Funciones de servicio (Parte 3): Patrón "Barra exterior"

DoEasy. Funciones de servicio (Parte 3): Patrón "Barra exterior"

En este artículo desarrollaremos el patrón Price Action "Barra exterior" en la biblioteca DoEasy y optimizaremos los métodos de acceso a la gestión de los patrones de precios. Además, trabajaremos en la corrección de los fallos y errores detectados durante las pruebas de la biblioteca.
preview
Desarrollo de un sistema de repetición (Parte 73): Una comunicación inusual (II)

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.
preview
Pruebas de robustez en asesores expertos

Pruebas de robustez en asesores expertos

En el desarrollo de una estrategia hay muchos detalles complejos a tener en cuenta, muchos de los cuales no se destacan para los traders principiantes. Como resultado, muchos comerciantes, incluido yo mismo, hemos tenido que aprender estas lecciones a las duras penas. Este artículo se basa en mis observaciones de errores comunes que la mayoría de los traders principiantes encuentran al desarrollar estrategias en MQL5. Ofrecerá una variedad de consejos, trucos y ejemplos para ayudar a identificar la descalificación de un EA y probar la solidez de nuestros propios EA de una manera fácil de implementar. El objetivo es educar a los lectores, ayudándolos a evitar futuras estafas al comprar EA, así como a prevenir errores en el desarrollo de su propia estrategia.
preview
Desarrollo de un sistema de repetición — Simulación de mercado (Parte 07): Primeras mejoras (II)

Desarrollo de un sistema de repetición — Simulación de mercado (Parte 07): Primeras mejoras (II)

En el artículo anterior realizamos correcciones en algunos puntos y agregamos pruebas a nuestro sistema de repetición para garantizar la mayor estabilidad posible. Asimismo, comenzamos a crear y utilizar un archivo de configuración para dicho sistema.
preview
Desarrollo de un sistema de repetición (Parte 44): Proyecto Chart Trade (III)

Desarrollo de un sistema de repetición (Parte 44): Proyecto Chart Trade (III)

En el artículo anterior, expliqué cómo puedes manipular los datos de la plantilla para usarlos en un OBJ_CHART. Allí solo introduje el tema sin entrar en muchos detalles, ya que en esa versión el trabajo se hizo de una manera muy simplificada. Sin embargo, se hizo de esa forma precisamente para facilitar la explicación del contenido. Pues, a pesar de parecer simple hacer ciertas cosas, algunas no son tan evidentes, y sin comprender la parte más simple y básica, no entenderás realmente lo que estoy haciendo.
preview
DoEasy. Elementos de control (Parte 5): Objeto básico WinForms, control "Panel", parámetro AutoSize

DoEasy. Elementos de control (Parte 5): Objeto básico WinForms, control "Panel", parámetro AutoSize

En este artículo, crearemos un objeto básico para todos los objetos de la biblioteca WinForms y comenzaremos a implementar la propiedad AutoSize del objeto WinForms "Panel", es decir, el cambio automático del tamaño para que se ajuste a su contenido interno.
preview
Desarrollo de un sistema de repetición (Parte 48): Conceptos que hay que entender y comprender

Desarrollo de un sistema de repetición (Parte 48): Conceptos que hay que entender y comprender

¿Qué tal aprender algo nuevo? En este artículo, aprenderás cómo transformar scripts y servicios y por qué es útil hacerlo.
preview
Algoritmos de optimización de la población: Resiliencia ante el estancamiento en los extremos locales (Parte I)

Algoritmos de optimización de la población: Resiliencia ante el estancamiento en los extremos locales (Parte I)

El presente artículo presenta un experimento único cuyo objetivo es investigar el comportamiento de los algoritmos de optimización basados en poblaciones en el contexto de su capacidad para abandonar eficientemente los mínimos locales cuando la diversidad en la población es baja y alcanzar los máximos globales. Los trabajos en este campo nos permitirán comprender mejor qué algoritmos específicos pueden continuar con éxito la búsqueda a partir de las coordenadas fijadas por el usuario como punto de partida, y qué factores influyen en su éxito en este proceso.
preview
Del básico al intermedio: Variables (I)

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.
preview
Del básico al intermedio: Unión (I)

Del básico al intermedio: Unión (I)

En este artículo, veremos qué es una unión. Aquí, mediante la experimentación, analizaremos las primeras construcciones en las que podría utilizarse una unión. No obstante, lo que se mostrará aquí es solo la parte básica de todo un conjunto de conceptos e información que se explorará más a fondo en artículos futuros. 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
Creación de un Panel de administración de operaciones en MQL5 (Parte IV): Capa de seguridad de inicio de sesión

Creación de un Panel de administración de operaciones en MQL5 (Parte IV): Capa de seguridad de inicio de sesión

Imagine un actor malicioso infiltrándose en la sala del administrador comercial y obteniendo acceso a las computadoras y al panel de administración que se utilizan para comunicar información valiosa a millones de comerciantes en todo el mundo. Una intrusión de este tipo podría tener consecuencias desastrosas, como el envío no autorizado de mensajes engañosos o clics aleatorios en botones que desencadenan acciones no deseadas. En esta discusión, exploraremos las medidas de seguridad en MQL5 y las nuevas características de seguridad que hemos implementado en nuestro Panel de administración para protegernos contra estas amenazas. Al mejorar nuestros protocolos de seguridad, nuestro objetivo es proteger nuestros canales de comunicación y mantener la confianza de nuestra comunidad comercial global. Encuentre más información en la discusión de este artículo.
preview
Factorización de matrices: lo básico

Factorización de matrices: lo básico

Como el objetivo aquí es ser didáctico. Mantendré las cosas en su forma más sencilla. Es decir, implementaremos solo lo necesario: la multiplicación de matrices. Verás que esto será suficiente para simular la multiplicación de una matriz por un escalar. La gran dificultad que muchas personas tienen a la hora de implementar un código utilizando la factorización de matrices es que, a diferencia de una factorización escalar, donde en casi todos los casos el orden de los factores no altera el resultado, cuando se usan matrices, la cosa no es así.
preview
Factorización de matriсes: un modelado más práctico

Factorización de matriсes: un modelado más práctico

Es muy probable que no te hayas dado cuenta de que el modelado de las matrices era un tanto extraño, ya que no se indicaban filas y columnas, solo columnas. Esto resulta muy raro al leer un código que realiza factorizaciones de matrices. Si esperabas ver las filas y columnas indicadas, podrías haberte sentido bastante confundido al intentar implementar la factorización. Además, esa forma de modelar las matrices no es, ni de cerca, la mejor manera. Esto se debe a que, cuando modelamos matrices de esa forma, nos enfrentamos a ciertas limitaciones que nos obligan a usar otras técnicas o funciones que no serían necesarias si el modelado se realiza de manera más adecuada.
preview
Optimización de la quimiotaxis bacteriana - Bacterial Chemotaxis Optimisation (BCO)

Optimización de la quimiotaxis bacteriana - Bacterial Chemotaxis Optimisation (BCO)

Este artículo presenta la versión original del algoritmo de optimización de la quimiotaxis bacteriana (BCO) y su versión modificada. Hoy veremos con detalle todas las diferencias, centrándonos en la nueva versión de BCOm, que simplifica el mecanismo de movimiento bacteriano, reduce la dependencia de la historia de cambios de posición y utiliza operaciones matemáticas más sencillas en comparación con la versión original, sobrecargada computacionalmente. También realizaremos pruebas y extraeremos conclusiones.
preview
Introducción a las curvas ROC (Receiver Operating Characteristic)

Introducción a las curvas ROC (Receiver Operating Characteristic)

Las curvas ROC son representaciones gráficas que se utilizan para evaluar el rendimiento de los clasificadores. A pesar de que los gráficos ROC son relativamente sencillos, existen conceptos erróneos y dificultades comunes a la hora de utilizarlos en la práctica. El objetivo de este artículo es ofrecer una introducción a los gráficos ROC como herramienta para los profesionales que desean comprender la evaluación del rendimiento de los clasificadores.