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.
Descarga de datos del Fondo Monetario Internacional en Python
Descarga de datos del Fondo Monetario Internacional en Python: extraemos datos del FMI para su uso en estrategias monetarias macroeconómicas. ¿Cómo puede la macroeconomía ayudar a los tráders y tráders algorítmicos?
Indicador de estacionalidad por horas, días de la semana y meses
Este artículo explica cómo desarrollar una herramienta para analizar patrones de precios recurrentes en los mercados financieros, ya sea por el día del mes (1-31), el día de la semana (lunes a domingo) o la hora del día (0-23). El indicador analiza datos históricos, calcula la rentabilidad media de cada periodo y muestra los resultados en forma de histograma con una previsión. Incluye parámetros personalizables: tipo de estacionalidad, número de barras analizadas, visualización como porcentajes o valores absolutos, colores del gráfico.
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: Iniciando SQL en MQL5 (I)
En este artículo, comenzaremos a explorar el uso de SQL dentro de un código MQL5. Veremos cómo podemos crear una base de datos. O, mejor dicho, cómo podemos crear un archivo de base de datos en SQLite, utilizando, para ello, recursos o procedimientos incluidos en el lenguaje MQL5. Veremos también cómo crear una tabla y, después, cómo crear una relación entre tablas mediante una clave primaria y una clave foránea. Todo esto usando, nuevamente, MQL5. Veremos lo sencillo que es crear un código que, en el futuro, podrá portarse a otras implementaciones de SQL, usando una clase que nos ayude a ocultar la implementación creada. Y, lo más importante de todo, veremos que, en diversos momentos, podemos correr el riesgo de que algo no salga bien al usar SQL. Esto se debe a que, dentro del código MQL5, un código SQL siempre se colocará dentro de una STRING.
Minería de datos de los balances de los bancos centrales y obtención de un panorama de la liquidez global
La minería de datos del balance de los bancos centrales ofrece una imagen de la liquidez global en el mercado Forex y en las divisas clave. Hoy combinaremos datos de la Fed, el BCE, el BOJ y el PBoC en un índice compuesto y utilizaremos el aprendizaje automático para descubrir patrones ocultos. Este enfoque convierte los datos sin procesar en señales comerciales reales combinando el análisis fundamental y técnico.
Características del Wizard MQL5 que debe conocer (Parte 55): SAC con Prioritized Experience Replay (PER)
Los búferes de reproducción en el aprendizaje por refuerzo son especialmente importantes con algoritmos fuera de política como DQN o SAC. Esto pone entonces el foco en el proceso de muestreo de este búfer de memoria. Mientras que las opciones predeterminadas con SAC, por ejemplo, utilizan una selección aleatoria de este búfer, los búferes de reproducción de experiencia priorizada ajustan esto mediante un muestreo del búfer basado en una puntuación TD. Repasamos la importancia del aprendizaje por refuerzo y, como siempre, examinamos solo esta hipótesis (no la validación cruzada) en un asesor experto creado por un asistente.
Simulación de mercado: Position View (VII)
En este artículo, comenzaremos a realizar algunas mejoras en el indicador de posición, para poder interactuar con él y modificar las líneas de precio, o cerrar una posición directamente mediante la interacción con el indicador de posición. Antes de entrar realmente en la implementación, conviene aclarar algo, sobre todo para quienes no estén al tanto. No es posible, de ninguna manera, usar un indicador para modificar algo en el servidor de trading. Esto se debe a que MetaTrader 5 cuenta con un sistema de seguridad que permite únicamente a los Asesores Expertos actuar sobre una orden o una posición. Ninguna otra aplicación que no sea un Asesor Experto podrá manipular órdenes o posiciones.
De novato a experto: Noticias animadas utilizando MQL5 (VI) Estrategia de órdenes pendientes para el trading basado en noticias
En este artículo, nos centramos en la integración de una lógica de ejecución de órdenes basada en las noticias, lo que permite que el asesor experto actúe, y no solo informe. Acompáñanos a descubrir cómo implementar la ejecución automática de operaciones en MQL5 y convertir el asesor experto «News Headline» en un sistema de trading plenamente automatizado y capaz de responder en tiempo real. Los Asesores Expertos ofrecen ventajas significativas para los desarrolladores de algoritmos gracias a la amplia gama de funciones que admiten. Hasta ahora, nos hemos centrado en desarrollar una herramienta de presentación de noticias y eventos del calendario, que incluye paneles de análisis basados en inteligencia artificial e indicadores técnicos.
Optimización basada en biogeografía — Biogeography-Based Optimization (BBO)
La optimización basada en biogeografía (BBO) supone un elegante método de optimización global inspirado en los procesos naturales de migración de especies entre islas de archipiélagos. El algoritmo se basa en una idea simple pero poderosa: las soluciones de alta calidad comparten activamente sus características, mientras que las soluciones de baja calidad adoptan activamente nuevas características, creando un flujo natural de información desde las mejores soluciones hacia las peores. El BBO, un operador de mutación adaptativa único que ofrece un excelente equilibrio entre exploración y explotación, demuestra una alta eficiencia en una variedad de tareas.
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: Position View (II)
En este artículo, mostraré, de la forma más simple y práctica posible, cómo podrás usar un indicador como forma de observar posiciones abiertas en el servidor de trading. Lo hago así, y poco a poco, precisamente para mostrar que no necesitas incorporar necesariamente todo esto en un Asesor Experto. Muchos de ustedes ya deben de estar bastante acostumbrados a hacer esto, por un motivo u otro. La verdad es que eso es una tontería, ya que, a medida que avancemos en esta implementación, quedará claro que podrás crear o implementar diversos tipos de indicadores para este propósito.
Aprendizaje automático y Data Science (Parte 36): Cómo lidiar con mercados financieros sesgados
Los mercados financieros no están perfectamente equilibrados. Algunos mercados son alcistas, otros bajistas y otros presentan comportamientos laterales que indican incertidumbre en cualquier dirección. Esta información desequilibrada, cuando se utiliza para entrenar modelos de aprendizaje automático, puede resultar engañosa, ya que los mercados cambian con frecuencia. En este artículo vamos a analizar varias maneras de abordar este problema.
Acceso a la información de ticks de MetaTrader desde los servicios de MQL5 a una aplicación de Python mediante sockets
A veces no todo se puede programar en el lenguaje MQL5. E incluso si fuera posible convertir las bibliotecas avanzadas existentes en MQL5, llevaría mucho tiempo. Este artículo pretende demostrar que es posible sortear la dependencia de Windows transmitiendo información de ticks —como el precio bid, precio ask y hora— a través de los servicios de MetaTrader a una aplicación de Python mediante sockets.
Simulación de mercado: Position View (XVIII)
En este artículo mostré, de la forma más didáctica posible, cómo puedes modificar y desarrollar un código capaz de cumplir determinados objetivos alterando lo mínimo posible un código ya existente. Añadiremos un indicador de volumen y, al mismo tiempo, impediremos que el usuario u operador elimine los objetos que se están creando por el indicador de posición.
Simulación de mercado: Position View (VIII)
En el artículo anterior, vimos cómo podíamos implementar el indicador de posición para cerrar una posición abierta directamente desde el gráfico, interactuando con un objeto disponible en él. Una vez concluido y funcionando el primer mecanismo, comenzamos a hacer algunas modificaciones para que también fuera posible eliminar las líneas de take profit y stop loss de una posición abierta. Sin embargo, como los cambios necesarios requerían una explicación adecuada, en ese mismo artículo solo mostré los cambios que debían realizarse en el Asesor Experto y aún era necesario mostrar los cambios que debían realizarse en el Indicador de posición.
De novato a experto: Sincronizador de períodos de mercado
En este análisis, presentamos una herramienta de sincronización de marcos temporales superiores a inferiores, diseñada para resolver el problema del análisis de patrones de mercado que abarcan períodos de tiempo superiores. Los marcadores de período integrados en MetaTrader 5 suelen ser limitados, rígidos y no se pueden personalizar fácilmente para marcos temporales no estándar. Nuestra solución aprovecha el lenguaje MQL5 para desarrollar un indicador que proporciona una forma dinámica y visual de alinear estructuras de marcos temporales superiores dentro de gráficos de marcos temporales inferiores. Esta herramienta puede resultar muy valiosa para realizar análisis de mercado detallados. Para conocer mejor sus características e implementación, le invito a seguir la discusión.
Simulación de mercado: Position View (III)
En estos últimos artículos, he mencionado que, en algunos momentos, necesitamos definir un valor para la propiedad ZOrder. ¿Pero por qué?!?! El motivo es que muchos de los códigos que agregan objetos al gráfico simplemente no usan, o mejor dicho, no definen un valor para esa propiedad. Bien, no estoy aquí para decir qué debe o no debe hacer cada programador, ni cómo debe o no debe escribir su código. Estoy aquí para mostrarte, estimado lector e interesado en comprender realmente cómo funcionan las cosas, lo que ocurre entre bastidores.
Simulación de mercado: Position View (V)
A pesar de lo visto en el artículo anterior, esto parece algo simple. Allí tenemos diversos problemas y muchas cosas por resolver y hacer. Tú, estimado lector, puedes imaginar que todo es fácil y simple. De manera inocente, vas aceptando simplemente lo que se te presenta. Esto es un error del que tú, estimado lector, deberás intentar librarte. Peor que aceptar es simplemente no entender e intentar usar algo sin comprender realmente qué se está usando. No es raro, entre principiantes, pasar por la fase de copiar y pegar. Si no quieres quedarte siempre en esa fase, conviene aprender a usar ciertas herramientas. Una de las herramientas más utilizadas por los programadores es la documentación. La segunda herramienta está formada por las pruebas y los archivos de log. Aquí veremos cómo hacerlo.
Simulación de mercado (Parte 24): Iniciando SQL (VII)
En el artículo anterior terminamos de hacer las debidas presentaciones sobre SQL. Así, lo que me había propuesto mostrar y explicar sobre SQL, a mi juicio, quedó debidamente explicado. Esto, para que todos los que vengan a ver el sistema de repetición/simulador en construcción consigan, como mínimo, tener alguna noción de lo que puede estar ocurriendo allí. Esto se debe a que no tiene sentido programar diversas cosas que SQL puede cubrir perfectamente.
Símbolos personalizados MQL5: Creamos un símbolo de barras 3D
Este artículo ofrece una guía detallada para crear el innovador indicador 3DBarCustomSymbol.mq5, que genera símbolos personalizados en MetaTrader 5 que combinan precio, tiempo, volumen y volatilidad en una única representación tridimensional. Asimismo, analizaremos los fundamentos matemáticos, la arquitectura del sistema y los aspectos prácticos de su implementación y aplicación en estrategias de negociación.
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 27): Herramienta de barrido de liquidez con filtro de media móvil
Comprender las sutiles dinámicas que subyacen a los movimientos de los precios puede proporcionarle una ventaja decisiva. Uno de estos fenómenos es el «liquidity sweep», una estrategia deliberada que utilizan los grandes operadores, especialmente las instituciones, para empujar los precios a través de niveles clave de soporte o resistencia. Estos niveles suelen coincidir con concentraciones de órdenes stop-loss de traders minoristas, lo que crea zonas de liquidez que los grandes operadores pueden aprovechar para entrar en posiciones voluminosas o salir de ellas con un deslizamiento mínimo.
Simulación de mercado: Iniciando SQL en MQL5 (IV)
Muchos suelen infrautilizar SQL, o incluso no utilizarlo, porque no comprenden bien cómo funciona en realidad. Al consultar una base de datos SQL, no siempre buscamos una respuesta genérica; en algunos casos queremos una respuesta muy concreta y práctica. Si tú creas una base de datos con cierta estructuración y modelado, podrás introducir prácticamente cualquier tipo de información en ella.
De novato a experto: Revelando las sombras de las velas japonesas (mechas)
En este análisis, damos un paso adelante para descubrir la acción del precio subyacente que se esconde tras las mechas de las velas japonesas. Al integrar una función de visualización de mechas en el Market Periods Synchronizer, mejoramos la herramienta con mayor profundidad analítica e interactividad. Este sistema mejorado permite a los traders visualizar los rechazos de precios en marcos temporales superiores directamente en gráficos de marcos temporales inferiores, revelando estructuras detalladas que antes estaban ocultas.
De novato a experto: Noticias animadas utilizando MQL5 (V) Sistema de recordatorio de eventos
En esta discusión, exploraremos nuevas mejoras a medida que integramos una lógica mejorada de alertas de eventos para los acontecimientos del calendario económico que muestra el EA «News Headline». Esta mejora es fundamental, ya que garantiza que los usuarios reciban notificaciones oportunas poco antes de que tengan lugar eventos importantes. Acompáñanos en este análisis para descubrir más.
Simulación de mercado: Position View (VI)
En este artículo, haremos diversas mejoras para que el indicador de posición refleje lo que realmente ocurre en el servidor de trading, en términos de posiciones y del estado actual de estas. Debo recordar que estas aplicaciones, que se mostrarán aquí, no pretenden en ningún caso sustituir ningún elemento disponible en MetaTrader 5. Tampoco deben usarse sin los debidos cuidados y criterios, ya que su objetivo es presentar un código didáctico, es decir, con fines de aprendizaje sobre cómo funciona el sistema. El motivo por el que digo que el código es didáctico es que el uso de mensajes, en algunos casos, no es la mejor forma de implementar ciertas funcionalidades.
Optimización por Comunidad de Científicos: Teoría
Secretos para la optimización efectiva de estrategias de trading en enfoques metaheurísticos. El algoritmo de Optimización de Comunidad de Científicos (CoSO) es un nuevo algoritmo basado en la población, inspirado en los mecanismos de la comunidad científica. A diferencia de las metáforas naturales tradicionales, el CoSO modela aspectos únicos de la actividad científica humana: la publicación de resultados en revistas, la competencia por subvenciones y la formación de equipos de investigación.
Algoritmo de Aprendizaje Competitivo — Competitive Learning Algorithm (CLA)
El artículo presenta el Algoritmo de Aprendizaje Competitivo (CLA), un nuevo método de optimización metaheurística basado en la modelización del proceso educativo. El algoritmo organiza la población de soluciones en clases con estudiantes y profesores, donde los agentes aprenden a través de tres mecanismos: siguiendo a los mejores de la clase, usando la experiencia personal y compartiendo conocimientos entre clases.
Simulación de mercado: Position View (XIX)
Una de las cuestiones que más me ha incomodado es que la clase C_ElementsTrade contenga código que permite acceder a las posiciones. No lo interpretes como un fallo, porque en realidad no lo es. Sin embargo, hace que algunas de las tareas que deberemos realizar más adelante sean algo más propensas a errores. Todo el trabajo destinado a implementar el indicador de posición se ha desarrollado pensando en utilizarlo dentro del sistema de repetición/simulador. Sin embargo, cuando se ejecute en ese entorno, no tendremos acceso alguno a una posición real. Por tanto, cualquier llamada a la biblioteca de MQL5 destinada a consultar datos de una posición no tendrá ningún efecto en el código.
Desarrollo de asesores expertos autooptimizables en MQL5 (Parte 7): Trading con múltiples períodos simultáneamente
En esta serie de artículos, hemos analizado diversas formas de determinar cuál es el mejor período para utilizar nuestros indicadores técnicos. Hoy, demostraremos al lector cómo puede aplicar la lógica opuesta; es decir, en lugar de elegir un único período óptimo, le mostraremos cómo emplear todos los períodos disponibles de forma eficaz. Este enfoque reduce la cantidad de datos descartados y ofrece casos de uso alternativos para los algoritmos de aprendizaje automático, más allá de la predicción habitual de precios.
Simulación de mercado: Position View (XI)
En este artículo, te mostraré, querido y estimado lector, cómo puedes modificar el indicador de posición para que sea capaz de hacer muchas más cosas de las que podía hacer originalmente. Veremos cómo incorporar la capacidad de mover los precios y crear líneas de precio directamente en el gráfico. Algo que muchos considerarían extremadamente complicado y difícil de resolver. Sin embargo, verás que lo haremos con mucha facilidad y con un mínimo de esfuerzo. Solo hará falta detenerse y pensar un poco.
Simulación de mercado: La unión hace la fuerza (III)
En este artículo presentaré nuestro sistema para simular operaciones a mercado. Aunque está prácticamente terminado, todavía quedan algunas cosas por implementar y unos pocos cambios por realizar. Sin embargo, confieso que, después de todo lo que ya hemos desarrollado, estoy cansado de seguir atrapado en la implementación de este sistema.
Análisis de espectro singular (SSA) en MQL5
Este artículo pretende servir de guía para aquellas personas que no estén familiarizadas con el concepto de análisis de espectro singular (SSA) y que deseen adquirir los conocimientos necesarios para poder aplicar las herramientas integradas disponibles en MQL5.
Simulación de mercado: La unión hace la fuerza (II)
Hasta ahora, la aplicación desarrollada a lo largo de esta serie de artículos se centraba exclusivamente en simular la parte gráfica. Sin embargo, para disponer de un sistema más completo, en el que podamos probar un Asesor Experto dentro del servicio de repetición/simulador, también debemos simular el servidor de trading. Observarás que esta simulación incluirá únicamente los elementos imprescindibles. No obstante, tú, estimado lector, podrás completar las partes que falten. Como esos componentes adicionales no influyen en lo que pretendo mostrar, ya contamos con más que suficiente para desarrollar lo que hemos planificado.
Simulación de mercado: Position View (IV)
Aquí comenzaremos a unir diversos componentes o aplicaciones que antes estaban completamente aisladas entre sí. Aunque Chart Trade, el Indicador de Mouse y el Asesor Experto ya mantenían cierta relación, todavía no había una forma de observar directamente en el gráfico las posiciones abiertas en el servidor de trading, muchas veces usando un sistema de órdenes cruzadas. A partir de este momento, esto empieza a ser posible, abriendo diversas puertas a nuevas ideas e implementaciones futuras. Aunque apenas estamos comenzando a poner estos componentes en funcionamiento, ya tendremos un rumbo que seguir.
Simulación de mercado: La unión hace la fuerza (I)
Estamos llegando a la recta final. El desarrollo del sistema de repetición/simulador está casi terminado. Es cierto que aún tendremos que completar algunas cosas, pero, en comparación con todo lo que ya hemos hecho, implementar lo que falta será sencillo. Sin embargo, todo lo que se mostrará en este artículo deberá asimilarse y comprenderse adecuadamente. Quiero que tú, estimado lector y entusiasta...
Descomposición en modos dinámicos aplicada a series temporales univariadas en MQL5
La descomposición en modos dinámicos (DMD, por sus siglas en inglés) es una técnica que se suele aplicar a conjuntos de datos de alta dimensionalidad. En este artículo, demostramos la aplicación de DMD a series temporales univariadas, mostrando su capacidad para caracterizar una serie y realizar pronósticos. Para ello, investigaremos la implementación integrada de la descomposición en modos dinámicos en MQL5, prestando especial atención al nuevo método matricial, DynamicModeDecomposition().
Simulación de mercado: Position View (IX)
En este artículo, que será un punto de inflexión, comenzaremos a explorar de manera un poco más profunda la interacción entre las aplicaciones que desarrollamos para dar soporte total al sistema de repetición/simulación. Aquí vamos a analizar un problema que, por un lado, resulta bastante molesto, pero, por otro, es muy interesante de explicar y resolver. El problema es: cómo añadir las líneas de take profit y stop loss después de que fueron eliminadas, y hacerlo sin usar el terminal, sino realizando la operación directamente en el gráfico. Bien, esto, a primera vista, parece algo simple. Sin embargo, hay algunos obstáculos que superar.
Simulación de mercado: Position View (X)
Necesitamos un medio para manejar los objetos gráficos que se crearán. La propuesta mostrada en el artículo anterior encaja perfectamente en algunos escenarios. Aquí necesitamos algo un poco más elaborado, debido a la naturaleza del problema que estamos tratando. Por lo tanto, no intentaremos sustituir los mecanismos presentes en MetaTrader 5 para manejar ZOrder ni, por supuesto, comprobar qué objeto está en primer plano o queda oculto por otro objeto. Haremos algo completamente diferente. Aquí mostraré qué modificaciones hay que hacer en el código para aprovechar parte de lo que MetaTrader 5 ya hace por nosotros.
Simulación de mercado: Position View (XIII)
En este artículo mostraré cómo implementar, sin mucho esfuerzo, una indicación que muestre si una posición genera pérdidas o beneficios. El procedimiento es sencillo y eficaz. Incluso sin grandes conocimientos, este indicador te permitirá reconocer con facilidad cuándo conviene cerrar una posición. Así evitarás resultados inesperados, ya que el cálculo refleja el resultado efectivo que produciría el cierre de la posición.