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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Optimización de arrecifes de coral — Coral Reefs Optimization (CRO)
Este artículo presenta un análisis exhaustivo del algoritmo de optimización de arrecifes de coral (CRO), un método metaheurístico inspirado en los procesos biológicos de formación y desarrollo de los arrecifes de coral. El algoritmo modela aspectos clave de la evolución de los corales: la reproducción externa e interna, el asentamiento de larvas, la reproducción asexual y la competencia por un espacio limitado en el arrecife. El artículo se centra en una versión mejorada del algoritmo.
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.
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.
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.
Características del Wizard MQL5 que debe conocer (Parte 54): Aprendizaje por refuerzo con SAC híbrido y tensores
Soft Actor Critic es un algoritmo de aprendizaje por refuerzo que analizamos en un artículo anterior, donde también presentamos Python y ONNX en esta serie como enfoques eficientes para entrenar redes. Revisamos el algoritmo con el objetivo de aprovechar los tensores, gráficos computacionales que a menudo se utilizan en Python.
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.
Procesos gaussianos en aprendizaje automático: modelo de regresión en MQL5
En este artículo, analizaremos los conceptos básicos de los procesos gaussianos (GP) como modelo de aprendizaje automático probabilístico y demostraremos su aplicación a problemas de regresión utilizando datos sintéticos.
Un nuevo enfoque para los criterios personalizados en las optimizaciones (Parte 1): Ejemplos de funciones de activación
El primero de una serie de artículos que analizan las matemáticas de los criterios personalizados, con especial atención a las funciones no lineales utilizadas en las redes neuronales, el código MQL5 para su implementación y el uso de compensaciones específicas y correccionales.
Estudiamos la predicción conformal de series temporales financieras
En este artículo, nos familiarizaremos con las predicciones conformales y la biblioteca MAPIE que las implementa. Este enfoque es uno de los más modernos en aprendizaje automático y nos permite centrarnos en la gestión de riesgos para modelos de aprendizaje automático existentes y diversos. Las predicciones conformales, por sí mismas, no suponen una forma de encontrar patrones en los datos. Solo determinan el grado de confianza de los modelos existentes para predecir ejemplos específicos y permiten filtrar las predicciones fiables.
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.
Herramientas de trading de MQL5 (Parte 1): Creación de una herramienta interactiva de asistencia para operaciones con órdenes pendientes
En este artículo, presentamos el desarrollo de una herramienta interactiva de asistencia para el trading en MQL5, diseñada para simplificar la colocación de órdenes pendientes en el mercado de divisas. Describimos el diseño conceptual, centrándonos en una interfaz gráfica de usuario (GUI) intuitiva que permite establecer visualmente en el gráfico los niveles de entrada, stop-loss y take-profit. Además, detallamos la implementación en MQL5 y el proceso de backtesting para garantizar la fiabilidad de la herramienta, sentando así las bases para las funciones avanzadas que se describen en las siguientes partes.
Redes neuronales en el trading: Generalización de series temporales sin vinculación a datos (Final)
En este artículo veremos cómo Mamba4Cast convierte la teoría en un algoritmo comercial funcional, allanando además el camino para experimentos propios. No pierda la oportunidad de adquirir una gama completa de conocimientos y lograr inspiración para desarrollar su propia estrategia.
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.
Simulación de mercado (Parte 23): Iniciando SQL (VI)
En este artículo, exploraremos cómo realizar la visualización y, en consecuencia, entender cómo está estructurada una base de datos. Esto se hizo al observar el diagrama interno de la base de datos. Aunque este tipo de cosa parezca algo innecesario, puede ser bastante válido si tú pretendes, de hecho, convertirte en un administrador de bases de datos. Y sí, hay personas que viven de hacer mantenimiento y creación de bases de datos.
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.
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.
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.
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!
Desarrollamos un asesor experto multidivisas (Parte 24): Añadimos una nueva estrategia (I)
En este artículo, veremos cómo conectar una nueva estrategia al sistema de optimización automática que hemos creado. Veamos qué tipo de EA necesitamos crear y si será posible hacerlo sin cambiar los archivos de la librería o minimizando los cambios necesarios.
Aprendizaje automático y Data Science (Parte 38): Aprendizaje por transferencia de IA en los mercados de divisas
Los avances en inteligencia artificial que acaparan los titulares, desde ChatGPT hasta los coches autónomos, no se basan en modelos aislados, sino en el conocimiento acumulado que se transfiere desde diversos modelos o campos comunes. Ahora bien, este mismo enfoque de «aprender una vez, aplicar en todas partes» puede aplicarse para ayudarnos a transformar nuestros modelos de IA en el trading algorítmico. En este artículo, vamos a aprender cómo podemos aprovechar la información obtenida de diversos instrumentos para mejorar las predicciones sobre otros utilizando el aprendizaje por transferencia.
Estrategia de Evolución de Adaptación de la Matriz de Covarianza — Covariance Matrix Adaptation Evolution Strategy (CMA-ES)
Hoy analizaremos uno de los algoritmos de optimización sin gradiente más interesantes, que aprende a comprender la geometría de la función objetivo. Consideremos la implementación clásica de CMA-ES con una ligera modificación: la sustitución de la distribución normal por una distribución potencial. Asimismo, veremos un análisis detallado de las bases matemáticas del algoritmo, su implementación práctica y un análisis honesto: dónde el CMA-ES es imbatible y dónde es mejor evitarlo.
Redes neuronales en el trading: Actor—Director—Crítico (Final)
El framework Actor—Director—Critic supone una evolución de la arquitectura clásica de aprendizaje de agentes. El artículo presenta la experiencia práctica de su aplicación y adaptación a las condiciones de los mercados financieros.
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.
Simulación de mercado (Parte 21): Iniciando SQL (IV)
Muchos de ustedes, queridos lectores, pueden tener un nivel de experiencia muy superior al mío en lo que respecta a trabajar con bases de datos y, así, por esta razón, tener una visión diferente de la mía. Pero, como era necesario definir y desarrollar alguna forma de explicar el motivo por el cual las bases de datos se crean como se crean, explicar por qué SQL tiene el formato que tiene y, sobre todo, por qué surgieron las claves primarias y las claves foráneas, fue necesario dejar las cosas un poco abstractas.
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.
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.
Operar con noticias de manera sencilla (Parte 4): Mejora del rendimiento
Este artículo profundizará en los métodos para mejorar el tiempo de ejecución del experto en el probador de estrategias. El código se escribirá para dividir los tiempos de los eventos de noticias en categorías por hora. Las horas de estos eventos noticiosos se accederán dentro de la hora especificada. Esto garantiza que el EA pueda gestionar de manera eficiente las operaciones basadas en eventos tanto en entornos de alta como de baja volatilidad.
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.
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.