Artículos sobre programación en el lenguaje 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
Algoritmo de optimización de reacciones químicas (CRO) (Parte I): Química de procesos en la optimización

Algoritmo de optimización de reacciones químicas (CRO) (Parte I): Química de procesos en la optimización

En la primera parte de este artículo, nos sumergiremos en el mundo de las reacciones químicas y descubriremos un nuevo enfoque de la optimización. La optimización de reacciones químicas (Chemical Reaction Optimization, CRO) utiliza principios derivados de las leyes de la termodinámica para lograr resultados eficientes. Desvelaremos los secretos de la descomposición, la síntesis y otros procesos químicos que se convirtieron en la base de este innovador método.
preview
Visualización de transacciones en un gráfico (Parte 2): Visualización gráfica de datos

Visualización de transacciones en un gráfico (Parte 2): Visualización gráfica de datos

Aquí vamos a desarrollar un script desde cero que simplifica la descarga de pantallas de impresión de operaciones para analizar las entradas de operaciones. Toda la información necesaria sobre una operación debe mostrarse cómodamente en un gráfico con la posibilidad de dibujar distintos plazos.
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
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
Desarrollamos un asesor experto multidivisa (Parte 15): Preparamos el asesor experto para el trading real

Desarrollamos un asesor experto multidivisa (Parte 15): Preparamos el asesor experto para el trading real

Al acercarnos gradualmente un asesor experto listo, debemos prestar atención a las cuestiones que son secundarias en la etapa de prueba de la estrategia comercial, pero que se vuelven importantes al pasar a la negociación real.
preview
La teoría del caos en el trading (Parte 1): Introducción, aplicación a los mercados financieros e indicador de Lyapunov

La teoría del caos en el trading (Parte 1): Introducción, aplicación a los mercados financieros e indicador de Lyapunov

¿Puede aplicarse la teoría del caos a los mercados financieros? En este artículo analizaremos en qué se diferencian la teoría clásica del caos y los sistemas caóticos del concepto propuesto por Bill Williams.
preview
Redes neuronales: así de sencillo (Parte 94): Optimización de la secuencia de entrada

Redes neuronales: así de sencillo (Parte 94): Optimización de la secuencia de entrada

Al trabajar con series temporales, siempre utilizamos los datos de origen en su secuencia histórica. Pero, ¿es ésta la mejor opción? Existe la opinión de que cambiar la secuencia de los datos de entrada mejorará la eficacia de los modelos entrenados. En este artículo te invito a conocer uno de los métodos para optimizar la secuencia de entrada.
preview
Desarrollo de un sistema de repetición (Parte 71): Ajuste del tiempo (IV)

Desarrollo de un sistema de repetición (Parte 71): Ajuste del tiempo (IV)

En este artículo, mostraré cómo implementar lo presentado en el artículo anterior en el servicio de repetición/simulación. Pero, como suele ocurrir con muchas cosas en la vida, es habitual que surjan problemas. Y este caso no fue una excepción. Sigue leyendo y descubre cuál será el tema del próximo artículo de esta serie. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuyo objetivo no sea el aprendizaje y el estudio de los conceptos mostrados.
preview
Desarrollo de un sistema de repetición (Parte 70): Ajuste del tiempo (III)

Desarrollo de un sistema de repetición (Parte 70): Ajuste del tiempo (III)

En este artículo, mostraré cómo utilizar la función CustomBookAdd de manera correcta y funcional. Aunque pueda parecer sencillo, tiene muchas implicaciones. Por ejemplo, permite indicar al indicador de mouse si el símbolo personalizado está en subasta, en negociación o si el mercado está cerrado. El contenido expuesto aquí tiene como único objetivo ser didáctico. En ningún caso debe considerarse una aplicación cuya finalidad sea distinta a la de aprender y estudiar los conceptos mostrados.
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
Cómo ver las transacciones directamente en el gráfico sin tener que perderse en el historial de transacciones

Cómo ver las transacciones directamente en el gráfico sin tener que perderse en el historial de transacciones

En este artículo, crearemos una herramienta sencilla para visualizar cómodamente posiciones y transacciones directamente en el gráfico con navegación mediante teclas. Esto permitirá a los operadores examinar visualmente las transacciones individuales y recibir toda la información sobre los resultados comerciales directamente en el momento.
preview
Desarrollo de Sistemas Avanzados de Trading ICT: Implementación de señales en un indicador de Order Blocks

Desarrollo de Sistemas Avanzados de Trading ICT: Implementación de señales en un indicador de Order Blocks

En este artículo, aprenderás a desarrollar un indicador de Order Blocks basado en el volumen de la profundidad de mercado y a optimizarlo mediante buffers para mejorar su precisión. Concluimos esta fase del proyecto y nos preparamos para las siguientes, en las que implementaremos una clase de gestión de riesgos y un bot de trading que aprovechará las señales generadas por el indicador.
preview
Desarrollo de un sistema de repetición (Parte 68): Ajuste del tiempo (I)

Desarrollo de un sistema de repetición (Parte 68): Ajuste del tiempo (I)

A continuación, continuaremos con el trabajo de lograr que el indicador del mouse nos informe sobre el tiempo restante de la barra en momentos de baja liquidez. Aunque a primera vista parece sencillo, verás que esta tarea es mucho más complicada. Esto se debe a algunos obstáculos que tendremos que superar. Por eso, es importante que sigas esta primera parte para poder comprender las siguientes.
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 66): Presionando play en el servicio (VII)

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

En este artículo, implementaremos una primera solución para identificar cuándo puede aparecer una nueva barra en el gráfico. Esta solución es aplicable a diversas situaciones. Sin embargo, comprender su desarrollo puede ayudarte a entender varios aspectos. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuyo objetivo no sea el aprendizaje y el estudio de los conceptos presentados.
preview
Elementos del análisis de correlación en MQL5: Prueba chi-cuadrado de Pearson de independencia y ratio de correlación.

Elementos del análisis de correlación en MQL5: Prueba chi-cuadrado de Pearson de independencia y ratio de correlación.

El artículo analiza las herramientas clásicas del análisis de correlaciones. Se hace hincapié en los breves antecedentes teóricos, así como en la aplicación práctica de la prueba de independencia chi-cuadrado de Pearson y la ratio de correlación.
preview
Desarrollo de un sistema de repetición (Parte 65): Presionando play en el servicio (VI)

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

En este artículo, mostraré cómo lo implementaremos y resolveremos el problema del indicador del mouse cuando se utiliza junto con la aplicación de repetición/simulación. El contenido expuesto aquí tiene como único propósito la enseñanza. En ningún caso debe considerarse una aplicación cuya finalidad no sea el aprendizaje y estudio de los conceptos presentados.
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
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
Modificaciones más notables del algoritmo de búsqueda cooperativa artificial (Artificial Cooperative Search, ACSm)

Modificaciones más notables del algoritmo de búsqueda cooperativa artificial (Artificial Cooperative Search, ACSm)

Aquí consideraremos la evolución del algoritmo ACS: tres modificaciones destinadas a mejorar las características de convergencia y la eficiencia del algoritmo. Transformación de uno de los principales algoritmos de optimización. De las modificaciones matriciales a los planteamientos revolucionarios en materia de formación de la población.
preview
Desarrollo de un sistema de repetición (Parte 62): Presionando play en el servicio (III)

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

En este artículo comenzaremos a abordar el problema del exceso de ticks, que puede afectar a la aplicación cuando usamos datos reales. Este exceso complica muchas veces la correcta temporización necesaria para construir la barra de un minuto dentro de la ventana adecuada.
preview
Desarrollo de un sistema de repetición (Parte 61): Presionando play en el servicio (II)

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

En este artículo, analizaremos las modificaciones necesarias para que el sistema de repetición/simulación pueda operar de manera más eficiente y segura. También mostraré algo de interés para quienes deseen aprovechar al máximo el uso de clases. Además, abordaré un problema específico de MQL5 que reduce el rendimiento del código al trabajar con clases y explicaré cómo resolverlo.
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
Redes neuronales: así de sencillo (Parte 93): Predicción adaptativa en los ámbitos de la frecuencia y el tiempo (Parte final)

Redes neuronales: así de sencillo (Parte 93): Predicción adaptativa en los ámbitos de la frecuencia y el tiempo (Parte final)

En este artículo, continuamos la aplicación de los planteamientos del modelo ATFNet, que combina de forma adaptativa los resultados de 2 bloques (frecuencia y tiempo) dentro de la predicción de series temporales.
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
Redes neuronales: así de sencillo (Parte 92): Predicción adaptativa en los ámbitos de la frecuencia y el tiempo

Redes neuronales: así de sencillo (Parte 92): Predicción adaptativa en los ámbitos de la frecuencia y el tiempo

Los autores del método FreDF confirmaron experimentalmente la ventaja de la previsión combinada en los ámbitos de la frecuencia y el tiempo. Sin embargo, el uso del hiperparámetro de peso no es óptimo para series temporales no estacionarias. En este artículo, nos familiarizaremos con el método de combinación adaptativa de previsiones en los ámbitos de la frecuencia y el tiempo.
preview
Desarrollo de un sistema de repetición (Parte 59): Un nuevo futuro

Desarrollo de un sistema de repetición (Parte 59): Un nuevo futuro

La correcta comprensión de las cosas nos permite hacer más con menos esfuerzo. En este artículo, explicaré por qué es necesario ajustar la aplicación de la plantilla antes de que el servicio comience a interactuar realmente con el gráfico. Además, ¿qué tal si mejoramos el indicador del mouse para que podamos hacer más cosas con él?
preview
Operar con noticias de manera sencilla (Parte 2): Gestión de riesgos

Operar con noticias de manera sencilla (Parte 2): Gestión de riesgos

En este artículo, se introducirá la herencia en nuestro código anterior. Se implementará un nuevo diseño de base de datos para brindar eficiencia. Además, se creará una clase de gestión de riesgos para abordar los cálculos de volumen.
preview
Visualización de transacciones en un gráfico (Parte 1): Seleccionar un periodo para el análisis

Visualización de transacciones en un gráfico (Parte 1): Seleccionar un periodo para el análisis

Aquí vamos a desarrollar un script desde cero que simplifica la descarga de pantallas de impresión de transacciones para analizar entradas comerciales. Toda la información necesaria sobre una única operación se puede mostrar cómodamente en un gráfico con la posibilidad de dibujar diferentes marcos temporales.
preview
Aprendiendo MQL5 de principiante a profesional (Parte III): Tipos de datos complejos y archivos de inclusión

Aprendiendo MQL5 de principiante a profesional (Parte III): Tipos de datos complejos y archivos de inclusión

Este artículo es el tercero de una serie de materiales sobre los principales aspectos de la programación en MQL5. Aquí nos encargaremos de tipos de datos complejos que no describimos en el artículo anterior, como estructuras, uniones, clases y el tipo de datos "función". También veremos cómo añadir modularidad a nuestro programa utilizando la directiva #include del preprocesador.
preview
Desarrollamos un asesor experto multidivisa (Parte 14): Cambio de volumen adaptable en el gestor de riesgos

Desarrollamos un asesor experto multidivisa (Parte 14): Cambio de volumen adaptable en el gestor de riesgos

El gestor de riesgos que hemos desarrollado en los últimos artículos solo contiene funciones básicas. Hoy trataremos de analizar sus posibles formas de desarrollo, lo que nos permitirá aumentar los resultados comerciales sin interferir con la lógica de las estrategias de negociación.
preview
Estrategia de trading del SP500 en MQL5 para principiantes

Estrategia de trading del SP500 en MQL5 para principiantes

Descubra cómo aprovechar MQL5 para pronosticar el S&P 500 con precisión, combinando análisis técnico clásico para lograr mayor estabilidad y algoritmos con principios probados en el tiempo para obtener información sólida del mercado.
preview
Trading con spreads en el mercado Fórex utilizando el factor de estacionalidad

Trading con spreads en el mercado Fórex utilizando el factor de estacionalidad

El en presente artículo analizaremos las posibilidades de formar y proporcionar datos sobre el uso del factor de estacionalidad al negociar con spreads en el mercado Fórex.
preview
Optimización de carteras en Python y MQL5

Optimización de carteras en Python y MQL5

Este artículo explora técnicas avanzadas de optimización de cartera utilizando Python y MQL5 con MetaTrader 5. Demuestra cómo desarrollar algoritmos para el análisis de datos, la asignación de activos y la generación de señales comerciales, enfatizando la importancia de la toma de decisiones basada en datos en la gestión financiera moderna y la mitigación de riesgos.
preview
Herramientas econométricas para la previsión de la volatilidad: el modelo GARCH

Herramientas econométricas para la previsión de la volatilidad: el modelo GARCH

El presente artículo describe las propiedades de un modelo de heteroscedasticidad condicional no lineal (GARCH). Sobre esta base se construye el indicador iGARCH para predecir la volatilidad un paso por delante. Para estimar los parámetros del modelo se usará la biblioteca de análisis numérico ALGLIB.
preview
Desarrollo de un robot de trading en Python (Parte 3): Implementamos un algoritmo comercial basado en el modelo

Desarrollo de un robot de trading en Python (Parte 3): Implementamos un algoritmo comercial basado en el modelo

Hoy vamos a continuar con la serie de artículos sobre la creación de un robot comercial en Python y MQL5. En esta ocasión, resolveremos el problema relacionado con la creación de un algoritmo comercial en Python.
preview
Estrategia de negociación de órdenes en cascada basada en cruces de EMA para MetaTrader 5

Estrategia de negociación de órdenes en cascada basada en cruces de EMA para MetaTrader 5

El artículo guía en la demostración de un algoritmo automatizado basado en cruces de EMA para MetaTrader 5. Información detallada sobre todos los aspectos de la demostración de un Asesor Experto en MQL5 y su prueba en MetaTrader 5, desde el análisis del comportamiento del rango de precios hasta la gestión de riesgos.
preview
Desarrollamos un asesor experto multidivisa (Parte 13): Automatización de la segunda fase: selección en grupos

Desarrollamos un asesor experto multidivisa (Parte 13): Automatización de la segunda fase: selección en grupos

Ya hemos puesto en marcha la primera fase del proceso de optimización automatizada. Para distintos símbolos y marcos temporales, realizamos la optimización utilizando varios criterios y almacenamos información sobre los resultados de cada pasada en la base de datos. Ahora vamos a seleccionar los mejores grupos de conjuntos de parámetros de entre los encontrados en la primera etapa.
preview
Creación de una interfaz gráfica de usuario interactiva en MQL5 (Parte 2): Añadir controles y capacidad de respuesta

Creación de una interfaz gráfica de usuario interactiva en MQL5 (Parte 2): Añadir controles y capacidad de respuesta

Mejorar el panel GUI de MQL5 con funciones dinámicas puede mejorar significativamente la experiencia comercial de los usuarios. Al incorporar elementos interactivos, efectos de desplazamiento y actualizaciones de datos en tiempo real, el panel se convierte en una herramienta poderosa para los traders modernos.
preview
Desarrollamos un asesor experto multidivisa (Parte 12): Gestor de riesgos como en las empresas de prop-trading

Desarrollamos un asesor experto multidivisa (Parte 12): Gestor de riesgos como en las empresas de prop-trading

Ya disponemos de un cierto mecanismo de control de la reducción en el asesor experto que estamos desarrollando. Pero este es de naturaleza probabilística, ya que se basa en resultados de pruebas sobre los datos históricos de los precios. Por lo tanto, las reducciones, aunque con una probabilidad pequeña, pueden superar a veces los valores máximos previstos. Vamos a intentar añadir un mecanismo que garantice el nivel de reducción especificado.