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.
Formulación de un Asesor Experto Multipar Dinámico (Parte 2): Diversificación y optimización de carteras
La diversificación y optimización de la cartera distribuye estratégicamente las inversiones entre múltiples activos para minimizar el riesgo, al tiempo que selecciona la combinación ideal de activos para maximizar la rentabilidad basándose en métricas de rendimiento ajustadas al riesgo.
Desarrollo de un sistema de repetición (Parte 58): Volvemos a trabajar en el servicio
Después de haber tomado un descanso en el desarrollo y perfeccionamiento del servicio usado en la repetición/simulación, retomaremos el trabajo en él. Ahora que no utilizaremos algunos recursos, como las variables globales del terminal, es necesario reestructurar por completo algunas partes de él. No se preocupen, este proceso se explicará adecuadamente para que todos puedan seguir el desarrollo del servicio.
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.
Desarrollo de un sistema de repetición (Parte 74): Un nuevo Chart Trade (I)
En este artículo, modificaremos el último código visto en esta secuencia sobre Chart Trade. Estos cambios son necesarios para adaptar el código al modelo actual del sistema de repetición/simulador. El contenido expuesto aquí tiene como único propósito ser didáctico. En ningún caso debe considerarse una aplicación destinada a otros fines que no sean el aprendizaje y el estudio de los conceptos mostrados.
Características del Wizard MQL5 que debe conocer (Parte 18): Búsqueda de arquitectura neural con vectores propios
Búsqueda de arquitectura neuronal, un enfoque automatizado para determinar la configuración ideal de la red neuronal, puede ser una ventaja cuando se enfrentan muchas opciones y grandes conjuntos de datos de prueba. Analizamos cómo, cuando se combinan vectores propios, este proceso puede resultar aún más eficiente.
Algoritmo de optimización de neuroboides — Neuroboids Optimization Algorithm (NOA)
Hoy hablaremos de una nueva metaheurística de optimización inspirada en la naturaleza: el NOA (Neuroboids Optimisation Algorithm), que combina principios de inteligencia colectiva y redes neuronales. A diferencia de los métodos clásicos, el algoritmo usa una población de "neuroboides" autodidactas, cada uno con su propia red neuronal que adapta la estrategia de búsqueda en tiempo real. En el artículo se revela la arquitectura del algoritmo, los mecanismos de autoaprendizaje de los agentes y las perspectivas de aplicación de este enfoque híbrido a problemas complejos de optimización.
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.
Algoritmo de tiro con arco - Archery Algorithm (AA)
Este artículo detalla un algoritmo de optimización inspirado en el tiro con arco, centrado en el uso del método de la ruleta como mecanismo de selección de zonas prometedoras para las "flechas". Este método nos permite evaluar la calidad de las soluciones y seleccionar las más prometedoras para seguir estudiándolas.
Optimización del modelo de nubes atmosféricas — Atmosphere Clouds Model Optimization (ACMO): Teoría
Este artículo se centra en el algoritmo metaheurístico Atmosphere Clouds Model Optimisation (ACMO), que modela el comportamiento de las nubes para resolver problemas de optimización. El algoritmo usa los principios de generación, movimiento y propagación de nubes, adaptándose a las "condiciones meteorológicas" del espacio de soluciones. El artículo revela cómo una simulación meteorológica del algoritmo encuentra soluciones óptimas en un espacio de posibilidades complejo y detalla las etapas del ACMO, incluida la preparación del "cielo", el nacimiento de las nubes, su movimiento y la concentración de la lluvia.
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.
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.
Desarrollo de un sistema de repetición (Parte 53): Esto complica las cosas (V)
En este artículo, presentaré un tema muy importante, que pocos comprenden realmente: Eventos personalizados. Peligros. Ventajas y fallos causados por tales elementos. Este tema es clave para quienes desean convertirse en programadores profesionales en MQL5 o en cualquier otro tipo de lenguaje. Por ello, nos centraremos en MQL5 y MetaTrader 5.
Algoritmo de campo eléctrico artificial (AEFA) — Artificial Electric Field Algorithm (AEFA)
Este artículo presenta el algoritmo de campo eléctrico artificial (AEFA) inspirado en la ley de Coulomb de la fuerza electrostática. El algoritmo modela fenómenos eléctricos para resolver problemas de optimización complejos usando partículas cargadas y las interacciones de estas. El AEFA presenta propiedades únicas en el contexto de otros algoritmos relacionados con las leyes de la naturaleza.
Optimización por herencia sanguínea — Blood inheritance optimization (BIO)
Les presento mi nuevo algoritmo basado en la población, el BIO (Blood Inheritance Optimization), inspirado en el sistema de herencia del grupo sanguíneo humano. En este algoritmo, cada solución tiene un "grupo sanguíneo" distinto que determina su forma de evolucionar. Al igual que en la naturaleza, el grupo sanguíneo de un niño se hereda según reglas específicas, en el BIO las nuevas soluciones obtienen sus características mediante un sistema de herencia y mutaciones.
Simulación de mercado (Parte 05): Creación de la clase C_Orders (II)
En este artículo, explicaré cómo Chart Trade, junto con el asesor experto, gestionará la solicitud de cierre de todas las posiciones abiertas del usuario. Parece sencillo, pero hay algunos factores que complican la situación y que es necesario saber gestionar.
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.
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.
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.
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.
Desarrollamos un asesor experto multidivisas (Parte 26): Informador para instrumentos comerciales
Antes de continuar con el desarrollo de asesores expertos multidivisas, vamos a intentar crear un nuevo proyecto utilizando la biblioteca desarrollada. Usando este ejemplo, descubriremos cómo organizar mejor el almacenamiento del código fuente y cómo puede ayudarnos el uso del nuevo repositorio de código de MetaQuotes.
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.
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.
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.
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.
Técnicas avanzadas de gestión y optimización de la memoria en MQL5
Descubra técnicas prácticas para optimizar el uso de la memoria en los sistemas de trading MQL5. Aprenda a crear asesores expertos e indicadores eficientes, estables y de rápido rendimiento. Exploraremos cómo funciona realmente la memoria en MQL5, las trampas comunes que ralentizan sus sistemas o provocan fallos y, lo más importante, cómo solucionarlos.
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.
Algoritmo de optimización caótica — Chaos optimization algorithm (COA): Continuación
Continuamos el estudio del algoritmo de optimización caótica. La segunda parte del artículo está dedicada a los aspectos prácticos de la implementación del algoritmo, sus pruebas y conclusiones.
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.
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.
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.
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.
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.
Simulación de mercado (Parte 20): Iniciando el SQL (III)
Aunque podemos hacer cosas con una base de datos de unas 10 entradas, esto se asimila mucho mejor cuando trabajamos con un archivo que tenga más de 15 mil registros. Es decir, si tú intentaras crear eso manualmente, sería una tarea enorme. Sin embargo, es difícil encontrar una base de datos, incluso con fines didácticos, disponible para descargar. Pero, en realidad, no necesitamos recurrir a eso. Podemos usar MetaTrader 5 para crear una base de datos para nosotros. En este artículo, veremos cómo hacerlo.
Simulación de mercado (Parte 22): Iniciando el SQL (V)
Antes de que tires la toalla y decidas abandonar el estudio sobre cómo usar SQL, déjame recordarte, mi querido lector, que aquí todavía estamos usando solo lo más básico de lo básico. Aún no hemos explorado algunas cosas que es posible hacer en SQL. En cuanto las exploremos, verás que SQL es mucho más práctico de lo que parece. Aunque, muy probablemente, yo termine cambiando la dirección de lo que estamos creando. Esto se debe a que el proceso de creación es dinámico. Voy a mostrar un poco más sobre cómo hacer las cosas en SQL. Esto se debe a que, de hecho, es algo que necesitas entender y conocer. Simplemente pensar que eres más capaz que toda una comunidad de programadores y desarrolladores solo te hará perder tiempo y oportunidades. Ten calma, porque esto se va a volver aún más interesante.
Simulación de mercado (Parte 18): Iniciando SQL (I)
Da igual si vamos a usar uno u otro programa de SQL, ya sea MySQL, SQL Server, SQLite, OpenSQL o cualquier otro. Todos tienen algo en común. Ese algo en común es el lenguaje SQL. Aunque no vayas a usar una WorkBench, podrás manipular o trabajar con una base de datos directamente en MetaEditor o a través de MQL5 para hacer cosas en MetaTrader 5, pero necesitarás tener conocimientos de SQL. Así que aquí aprenderemos, al menos, lo básico.
Simulación de mercado (Parte 19): Iniciando SQL (II)
Como expliqué en el primer artículo sobre SQL, no tiene sentido que pierdas el tiempo programando rutinas para conseguir hacer algo que SQL ya incluye. Sin embargo, si no sabes lo más básico, no lograrás hacer nada con SQL para aprovechar lo que esta herramienta tiene para ofrecernos. Por ello, en este artículo veremos cómo ejecutar tareas fundamentales en bases de datos.
Operando con el Calendario Económico MQL5 (Parte 7): Preparación para la prueba de estrategias con análisis de eventos noticiosos basado en recursos
En este artículo, preparamos nuestro sistema de trading en MQL5 para la prueba de estrategias utilizando datos del Calendario económico almacenados como recurso, lo que permite analizarlos fuera del entorno en vivo. Implementamos la carga y el filtrado de eventos por tiempo, moneda e impacto, y luego lo validamos en el Probador de Estrategias. Esto permite realizar pruebas retrospectivas efectivas de estrategias basadas en noticias.
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.