English Русский 中文 Deutsch 日本語
preview
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 23): Medidor de fortaleza de divisas

Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 23): Medidor de fortaleza de divisas

MetaTrader 5Sistemas comerciales |
29 0
Christian Benjamin
Christian Benjamin

Contenido


Introducción

Imagina que estás en una carrera de coches. Cada vehículo es único, y no se puede adivinar cuál es el más rápido o el más lento. En cambio, se observan los tiempos por vuelta, se evalúa la aceleración, se prueba el rendimiento de frenado y se evalúa cada modelo individualmente. Solo después de analizar minuciosamente cada automóvil individualmente, se comparan para determinar su rendimiento general.

Las divisas funcionan de manera similar. Este asesor experto inspecciona cada par de divisas en el que aparece una divisa. Por ejemplo, para el USD, examina USDJPY, EURUSD, GBPUSD, USDCHF y otros. Mide cuánto se ha movido cada par en diferentes marcos temporales, inicialmente en M15, luego en H1 y finalmente en H4. Estos periodos de análisis retrospectivo se especifican mediante los parámetros Lookback_M15, Lookback_H1 y Lookback_H4.

Si la divisa en cuestión es la divisa de cotización en un par, el EA invierte ese cambio para reflejar con precisión su fortaleza. Tras calcular estos movimientos en todos los pares relevantes, promedia los resultados para obtener un único valor de fortaleza para cada divisa. El EA actualiza estos cálculos cada pocos segundos, tal y como se especifica en el parámetro Update_Seconds. A continuación, redibuja el panel de control para mostrar la fortaleza actual de las divisas, registra qué divisas son fuertes, débiles o neutrales, y actualiza las curvas visuales que muestran el equity y el drawdown de la cuenta. 

En este artículo, desarrollaremos una herramienta MQL5 que mide la fortaleza de las divisas analizando el rendimiento de cada símbolo en múltiples pares. Este método le permite identificar de forma fiable las divisas más fuertes y las más débiles, lo que le da la posibilidad de operar con mayor confianza.


Comprender la estrategia

La función principal del EA es medir la fortaleza o debilidad de una divisa individual analizando todos los pares en los que aparece, en múltiples marcos temporales. Para ello, seguimos estos pasos para calcular la fortaleza de cada divisa en sus pares y marcos temporales.

Seleccione los pares relevantes

Para cada una de las ocho divisas principales, recopile todos los pares de divisas en los que aparece (por ejemplo, USD en USDJPY, EURUSD, GBPUSD, USDCHF).

Calcular el cambio porcentual

En el marco temporal elegido (por ejemplo, M15, H1, H4), calcule el porcentaje de variación durante el período de análisis retrospectivo para cada par:

Normalizar el signo

Si la divisa que está midiendo es la divisa de cotización (segunda) en el par, invierta el signo de ese cambio porcentual, de modo que una divisa de cotización más fuerte siempre se muestre como una fortaleza positiva.

Promedio entre pares

Tome los valores de cambio porcentual con signo para todos sus pares y calcule un promedio simple. Esto le dará una única «puntuación de fortaleza» para la divisa en ese marco temporal.

El diagrama anterior ilustra nuestro proceso utilizando USD como ejemplo. Medimos la fortaleza del USD en cada par donde aparece, en múltiples marcos temporales. Esto nos permite identificar en qué período de tiempo el USD es más fuerte o más débil.


Desglose del código

El EA comienza definiendo las propiedades esenciales: los derechos de autor, el enlace, la versión y el modo de compilación estricta. Estas directivas ayudan a identificar el EA y a garantizar que cumpla con los estándares esperados dentro del entorno MetaTrader. A continuación, incluye la biblioteca SymbolInfo.mqh, que proporciona funciones para gestionar y consultar información sobre símbolos, algo esencial para seleccionar, habilitar y recuperar datos de múltiples pares de divisas de forma dinámica. Esta inclusión es crucial porque el EA necesita acceder a datos de varios símbolos que pueden no estar habilitados de forma predeterminada, lo que garantiza que el script pueda funcionar sin problemas en múltiples pares.

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com/en/users/lynnchris"
#property version   "1.0"
#property strict

#include <Trade\SymbolInfo.mqh>

A continuación, el código define varios parámetros de entrada, como Lookback_M15, Lookback_H1 y Lookback_H4, que especifican el número de barras históricas que se tienen en cuenta para calcular la fortaleza de la divisa en los respectivos intervalos de tiempo. El parámetro Update_Seconds determina la frecuencia con la que se actualiza el panel de control, equilibrando la capacidad de respuesta en tiempo real con la eficiencia computacional.

Los parámetros FontSize, BackgroundColor, PanelWidth, PanelHeight y de posición inicial permiten a los usuarios personalizar el aspecto y la ubicación del panel de control en su gráfico, lo que lo hace adaptable a diferentes tamaños de pantalla y preferencias personales. Los periodos de análisis retrospectivo influyen en la sensibilidad o la suavidad de los cálculos de la fortaleza de la divisa; los periodos más cortos reaccionan con mayor rapidez, pero pueden generar ruido, mientras que los periodos más largos ofrecen mayor estabilidad, pero una capacidad de respuesta más lenta.

input int    Lookback_M15    = 96;
input int    Lookback_H1     = 48;
input int    Lookback_H4     = 30;
input int    Update_Seconds  = 30;
input int    FontSize        = 12;
input color  BackgroundColor = clrBlack;
input int    PanelWidth      = 280;
input int    PanelHeight     = 240;
input int    InitPanelX      = 10;
input int    InitPanelY      = 10;

Los arrays Currencies y Pairs son estructuras de datos estáticas que enumeran las principales divisas y sus pares de divisas asociados. La organización garantiza que los pares relacionados de cada divisa se agrupen, lo que simplifica el proceso de recorrer los pares durante los cálculos de fortaleza. Por ejemplo, la matriz Pairs contiene cuatro pares por divisa, cada uno de los cuales incluye la divisa como base o como divisa de cotización. Esta agrupación sistemática permite que las funciones de cálculo evalúen de manera eficiente el rendimiento de cada divisa en relación con las demás, analizando simultáneamente múltiples pares y proporcionando una medida de fortaleza más completa.

static const string Currencies[8] = {"USD","EUR","GBP","JPY","CHF","CAD","AUD","NZD"};
static const string Pairs[8][4] = {
   {"USDJPY","EURUSD","GBPUSD","USDCHF"},
   {"EURUSD","EURJPY","EURGBP","EURCHF"},
   // ... .........
};

Las variables globales se declaran para almacenar los valores de fortaleza calculados en los distintos intervalos de tiempo, los cuales se guardan en una matriz bidimensional Strength[8][3]. Estas puntuaciones se utilizan para mostrarlas en el panel de control y para fines de registro. Variables adicionales como LastUpdate registran la última vez que se actualizaron los datos, lo que evita recálculos innecesarios.

Las variables «dragging», dragOffsetX y dragOffsetY gestionan las interacciones del usuario, concretamente para permitir al operador cambiar la posición del panel de control arrastrándolo con el ratón. Para visualizar el rendimiento de la cuenta, se declaran las matrices times[] y equities[] con el fin de almacenar puntos de datos del equity de la cuenta con marca de tiempo, mientras que dataCount registra el número de puntos recopilados; estos datos son esenciales para trazar las tendencias del equity y del drawdown de la cuenta a lo largo del tiempo.

double Strength[8][3]; // [currency][timeframe]
datetime LastUpdate;
int dataCount;
double equities[MAX_POINTS];
datetime times[MAX_POINTS];
int PanelX, PanelY;
bool dragging;
int dragOffsetX, dragOffsetY;

Durante la inicialización (OnInit()), el EA establece la posición inicial del panel de control en función de los datos introducidos por el usuario. A continuación, recorre todos los pares de divisas y llama a SymbolSelect() en cada uno de ellos para habilitar el acceso a los datos. Este paso es fundamental, ya que, si los símbolos no están habilitados, las funciones posteriores de recuperación de datos, como iClose(), fallarían, lo que daría lugar a cálculos incorrectos o a errores.

A continuación, el código inicializa la marca de tiempo LastUpdate y restablece el contador de datos dataCount. Realiza un cálculo inicial de la fortaleza de las divisas mediante UpdateStrengths(), lo que garantiza que el panel de control muestre los datos actuales inmediatamente después del inicio. La función DrawPanel() se invoca para crear el panel de control visual con etiquetas, barras de colores y encabezados, lo que proporciona una interfaz intuitiva y visualmente atractiva.

Además, se invoca la función LogCurrencyStrengths() para mostrar en la terminal un resumen textual del estado de las divisas, lo que ofrece a los operadores una visión general rápida y de alto nivel. Por último, EventSetTimer() programa la rutina de actualización periódica a los intervalos especificados por Update_Seconds, lo que permite que el panel de control se actualice automáticamente sin necesidad de intervención manual.

int OnInit()
{
   PanelX = InitPanelX;
   PanelY = InitPanelY;

   for(int i=0; i<8; i++)
      for(int j=0; j<4; j++)
         SymbolSelect(Pairs[i][j], true);

   LastUpdate = 0;
   dataCount = 0;

   UpdateStrengths();
   DrawPanel();
   LogCurrencyStrengths(1);
   EventSetTimer(Update_Seconds);
   return(INIT_SUCCEEDED);
}

Cuando el EA se desinicializa (OnDeinit()), lleva a cabo tareas de limpieza: elimina el evento del temporizador con EventKillTimer(), borra todos los objetos gráficos asociados al panel de control (incluidos el fondo, las etiquetas, las barras y los encabezados) y borra las líneas de tendencia del equity y el drawdown. Esta limpieza evita que los objetos residuales saturen el gráfico o consuman recursos, lo que garantiza un entorno ordenado cuando se elimina o se vuelve a cargar el EA.

void OnTimer()
{
   if(TimeCurrent() - LastUpdate < Update_Seconds)
      return;

   LastUpdate = TimeCurrent();
   UpdateStrengths();
   DrawPanel();
   LogCurrencyStrengths(1);

   double eq = AccountInfoDouble(ACCOUNT_EQUITY);
   if(dataCount < MAX_POINTS)
   {
      times[dataCount] = TimeCurrent();
      equities[dataCount] = eq;
      dataCount++;
   }
   DrawEquityLines();
   DrawDrawdownLines();
}

La lógica principal de la actualización se encuentra en la función OnTimer(), que se ejecuta periódicamente. En primer lugar, comprueba si ha transcurrido suficiente tiempo desde la última actualización comparando la hora actual con la fecha de la última actualización. Si no ha transcurrido el intervalo especificado, el programa finaliza antes de tiempo para evitar cálculos excesivos. Cuando se activa, actualiza LastUpdate con la hora actual y llama a UpdateStrengths() para volver a calcular las puntuaciones de fortaleza de las divisas basándose en los últimos datos del mercado.

A continuación, llama a DrawPanel() para actualizar el panel de control visual, modificando las etiquetas, los colores y las barras para que reflejen los valores de fortaleza actuales. Además, registra el estado actual de las divisas mediante LogCurrencyStrengths(), lo que proporciona información textual al respecto. A continuación, la función recupera el equity actual de la cuenta (AccountInfoDouble(ACCOUNT_EQUITY)), añadiendo la marca de tiempo y el valor del equity a las matrices correspondientes, siempre que no se haya alcanzado el número máximo de puntos de datos.

Los puntos de datos almacenados son utilizados por DrawEquityLines() y DrawDrawdownLines() para actualizar las líneas de tendencia de rendimiento, lo que permite representar visualmente el crecimiento y el riesgo de la cuenta a lo largo del tiempo. Este ciclo garantiza que todo el panel de control permanezca sincronizado con las condiciones del mercado en tiempo real y el rendimiento de la cuenta.

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{
   if(id==CHARTEVENT_OBJECT_CLICK && sparam=="CS_BG")
   {
      dragging = true;
      dragOffsetX = (int)lparam - PanelX;
      dragOffsetY = (int)dparam - PanelY;
   }
   else if(id==CHARTEVENT_MOUSE_MOVE && dragging)
   {
      PanelX = (int)lparam - dragOffsetX;
      PanelY = (int)dparam - dragOffsetY;
      DrawPanel();
   }
   else if(dragging && id==CHARTEVENT_OBJECT_CLICK)
   {
      dragging = false;
   }
}

La interacción del usuario se gestiona en OnChartEvent(). Cuando el usuario hace clic en el rectángulo de fondo ("CS_BG"), se activa el modo de arrastre, que registra el desplazamiento entre la posición del ratón y la posición actual del panel. A medida que se mueve el ratón (CHARTEVENT_MOUSE_MOVE), la posición del panel se actualiza dinámicamente, lo que permite al operador reubicar el panel de control de forma interactiva para obtener una mejor visibilidad. Cuando el usuario suelta el botón del ratón o hace clic en otro lugar, el modo de arrastre se desactiva, bloqueando el panel en su nueva posición. Esta función mejora la usabilidad, permitiendo personalizar el panel de control para diferentes diseños de espacio de trabajo.

double CalculateStrength(int ci, ENUM_TIMEFRAMES tf, int lookback)
{
   double sum = 0;
   int cnt = 0;

   for(int j=0; j<4; j++)
   {
      string sym = Pairs[ci][j];
      if(Bars(sym, tf) < lookback+1) continue;
      double now = iClose(sym, tf, 0);
      double prev = iClose(sym, tf, lookback);
      if(prev == 0) continue;

      double pct = (now - prev) / prev * 100.0;

      if(StringFind(sym, Currencies[ci]) > 0)
         pct = -pct;

      sum += pct;
      cnt++;
   }
   return (cnt == 0) ? 0 : sum / cnt;
}

El cálculo de la fortaleza de la moneda se lleva a cabo en UpdateStrengths() y CalculateStrength(). UpdateStrengths() recorre cada índice de divisas y llama a CalculateStrength() para cada uno de los tres intervalos de tiempo.

CalculateStrength() recupera el último precio de cierre (iClose()) de cada par relevante y, a continuación, obtiene los precios de cierre históricos correspondientes al periodo de análisis. Comprueba si hay suficientes barras disponibles para realizar el cálculo; si no, omite el par para evitar errores. Se calcula el cambio porcentual durante el período de análisis retrospectivo y, si la divisa en cuestión es la divisa cotizada en el par, se invierte el signo del cambio para medir con precisión la fortaleza relativa de la divisa base.

Esta inversión garantiza que una apreciación de la moneda cotizada refleje un debilitamiento de la moneda base, manteniendo la coherencia en todos los cálculos. La función suma estos cambios porcentuales en los cuatro pares para cada divisa y calcula su promedio para generar una puntuación de fortaleza representativa, que se almacena en la matriz Strength para su visualización y registro.

void DrawPanel()
{
   RemovePanel();
   ObjectCreate(0, "CS_BG", OBJ_RECTANGLE_LABEL, 0, 0, 0);
   ObjectSetInteger(0, "CS_BG", OBJPROP_CORNER, CORNER_LEFT_UPPER);
   ObjectSetInteger(0, "CS_BG", OBJPROP_XDISTANCE, PanelX);
   ObjectSetInteger(0, "CS_BG", OBJPROP_YDISTANCE, PanelY);
   ObjectSetInteger(0, "CS_BG", OBJPROP_XSIZE, PanelWidth);
   ObjectSetInteger(0, "CS_BG", OBJPROP_YSIZE, PanelHeight);
   // Add headers, labels, colored bars for each currency
}

La presentación visual de estos datos corre a cargo de DrawPanel(), que crea un rectángulo que cubre el área designada del panel de control. Para mayor claridad, se añaden encabezados para cada período de tiempo en la parte superior. A continuación, la función recorre cada divisa, creando etiquetas para el nombre de la divisa, el valor numérico de su fortaleza (con dos decimales) y una barra de color que indica visualmente su fortaleza o debilidad.

La combinación de colores utiliza tonos verdes para las monedas más fuertes, naranja para las neutrales y rojo para las más débiles, lo que permite a los operadores evaluar rápidamente las condiciones del mercado de forma visual. El ancho de la barra es proporcional al valor de fortaleza, lo que proporciona una señal visual intuitiva. Estos elementos gráficos sistemáticos y coherentes hacen que el panel de control sea informativo y fácil de interpretar de un vistazo.

void RemovePanel()
{
   for(int i=ObjectsTotal(0)-1; i>=0; i--)
   {
      string name = ObjectName(0, i);
      if(StringFind(name, "CS_") == 0 || StringFind(name, "Lbl_") == 0 || StringFind(name, "Bar_") == 0)
         ObjectDelete(0, name);
   }
}

Cuando es necesario actualizar o eliminar el panel, la función RemovePanel() elimina todos los objetos con prefijos de nombre específicos relacionados con el panel, tales como «CS_», «Hdr_», «Lbl_», «Val_» y «Bar_». Esta eliminación sistemática garantiza que el gráfico permanezca limpio y evita la saturación gráfica, lo que permite reconstruir el panel de control desde cero en cada actualización sin que se acumulen objetos residuales con el tiempo.

void DrawEquityLines()
{
   for(int i=1; i< dataCount; i++)
   {
      string id = StringFormat("EQ_%d", i);
      ObjectDelete(0, id);
      ObjectCreate(0, id, OBJ_TREND, 0,
                   times[i-1], equities[i-1],
                   times[i], equities[i]);
      ObjectSetInteger(0, id, OBJPROP_COLOR, clrYellow);
      ObjectSetInteger(0, id, OBJPROP_WIDTH, 2);
   }
}

Las funciones DrawEquityLines() y DrawDrawdownLines() permiten visualizar la evolución del rendimiento de la cuenta. Cada vez que se registran nuevos datos de equity, estas funciones eliminan los objetos de tendencia anteriores ("EQ_" y "DD_") para mantener el gráfico limpio. A continuación, crean nuevos objetos de tendencia que conectan los puntos de datos almacenados, con un estilo basado en colores distintos (amarillo para el equity y rojo para el drawdown) para diferenciar claramente ambos.

Las líneas de tendencia proporcionan un historial visual de cómo ha evolucionado el valor de la cuenta, así como de las reducciones máximas experimentadas. Estas representaciones visuales solo tienen verdadero sentido si el EA gestiona activamente las operaciones, ya que dependen de los cambios en el equity de la cuenta provocados por las órdenes ejecutadas.

void DrawDrawdownLines()
{
   double peak = -DBL_MAX;
   for(int i=1; i< dataCount; i++)
   {
      peak = MathMax(peak, equities[i-1]);
      double dd = equities[i-1] - peak;
      string id = StringFormat("DD_%d", i);
      ObjectDelete(0, id);
      ObjectCreate(0, id, OBJ_TREND, 0,
                   times[i-1], dd,
                   times[i], equities[i] - peak);
      ObjectSetInteger(0, id, OBJPROP_COLOR, clrRed);
      ObjectSetInteger(0, id, OBJPROP_WIDTH, 2);
   }
}

Este es un punto importante: si bien el código para representar gráficamente el equity y el drawdown está incluido y generará líneas de tendencia, su utilidad depende en gran medida de si el Asesor Experto realiza operaciones automatizadas. Si el Asesor Experto (EA) es puramente informativo o solo permite el uso manual, el equity de la cuenta solo cambiará cuando el operador realice operaciones o depósitos/retiros manualmente. En estos casos, el gráfico de equity puede no reflejar con precisión el rendimiento de las operaciones en tiempo real, y las líneas de tendencia podrían ser estáticas o menos significativas.

Por lo tanto, estas funciones de representación gráfica son más valiosas cuando se integran en un Asesor Experto (EA) que realiza operaciones automáticas de forma activa, modificando continuamente el equity de la cuenta. Cuando se implementa un sistema de negociación automatizada de este tipo, el gráfico de equity proporciona una representación visual en tiempo real del crecimiento de la cuenta, los drawdowns y el rendimiento general, lo que puede ser de gran valor para la gestión de riesgos y la evaluación del rendimiento.

void LogCurrencyStrengths(int tfIdx)
{
   string sStrong="", sWeak="", sNeutral="";
   for(int i=0; i<8; i++)
   {
      double v = Strength[i][tfIdx];
      if(v > 0.3) sStrong += Currencies[i] + " ";
      else if(v < -0.3) sWeak += Currencies[i] + " ";
      else sNeutral += Currencies[i] + " ";
   }
   Print("Strong: ", sStrong, "| Weak: ", sWeak, "| Neutral: ", sNeutral);
}

Por último, la función LogCurrencyStrengths() ofrece un resumen textual en el que se clasifica cada divisa como fuerte, débil o neutra en función de unos umbrales predefinidos (por ejemplo, superior al +0,3 % o inferior al -0,3 %). Concatena los códigos de moneda en cadenas de texto para cada categoría y muestra estos resúmenes en la ventana del terminal. Este resumen textual ofrece una visión general rápida del sentimiento del mercado en las principales divisas, complementando la representación gráfica para los operadores que prefieren información rápida y de alto nivel.


Resultados

En esta sección, revisaremos los resultados de nuestras pruebas de EA en MetaTrader 5.


Arriba se muestra el diagrama que ilustra el rendimiento del EA una vez aplicado al gráfico de MetaTrader 5. A continuación, hemos tabulado los resultados; cada valor representa un cambio porcentual.
Divisa M15 H1 H4
USD -0.11 +1.12 +2.20
EUR -0.23 -0.38 -0.38
GBP +0.20 +0.49 +0.67
JPY +0.01 -1.44 -2.48
CHF +0.32 -0.25 -0.33
CAD +0.17 +0.34 +0.16
AUD +0.05 +0.71 +0.52
NZD +0.10 +0.76 +0.13

  • El USD es la divisa más fuerte tanto en H1 (+1,12) como en H4 (+2,20), a pesar de una breve caída en M15.
  • El JPY y el EUR son los más débiles en H1 (–1,44 y –0,38 ) y H4 (–2,48 y –0,38).
  • GBP, CAD, AUD y NZD muestran una fortaleza de leve a moderada en H1/H4, lo que los convierte en candidatos secundarios "fuertes".

Ahora vamos a extraer las implicaciones para el trading de nuestras puntuaciones de fortaleza. En el marco temporal H4, el USD registra un +2,20 % mientras que el JPY se sitúa en un -2,48 %. Esa amplia diferencia nos indica que el USD tiene el control absoluto y el JPY está débil, una situación ideal para abrir una posición larga en el par USD/JPY. Asimismo, el EUR muestra un -0,38 % en H4, lo que confirma una vez más el dominio del USD. En ese caso, buscaría oportunidades de venta en el par EURUSD.



Conclusión

El indicador de fortaleza de las divisas le ayuda a identificar cambios en un par de divisas en diferentes marcos temporales. Ofrece una visión clara de la posible dirección del mercado. Esto no significa que deba operar de inmediato; en cambio, úselo para encontrar niveles de entrada óptimos y aplicar sus estrategias de gestión de riesgos y confirmación. Esta herramienta es un punto de partida para medir la fortaleza de una divisa, y existe margen para perfeccionar el análisis y mejorar la forma en que se presentan los resultados. Permanezca atento a los próximos desarrollos.

Fecha Nombre de la herramienta  Descripción Versión  Actualizaciones  Notas
01/10/24 Chart Projector Script para superponer un efecto fantasma a la evolución del precio del día anterior. 1.0 Versión inicial Herramienta número 1
18/11/24 Analytical Comment Proporciona la información del día anterior en formato tabular, además de anticipar la dirección futura del mercado. 1.0 Versión inicial Herramienta número 2
27/11/24 Analytics Master Actualización periódica de las métricas del mercado cada dos horas.  1.01 Segundo lanzamiento Herramienta número 3
02/12/24 Analytics Forecaster  Actualización periódica de las métricas del mercado cada dos horas con integración de Telegram. 1.1 Tercera edición Herramienta número 4
09/12/24 Volatility Navigator El EA analiza las condiciones del mercado utilizando los indicadores Bandas de Bollinger, RSI y ATR. 1.0 Versión inicial Herramienta número 5
19/12/24 Mean Reversion Signal Reaper  Analiza el mercado utilizando una estrategia de reversión a la media y proporciona una señal.  1.0  Versión inicial  Herramienta número 6 
09/01/25  Signal Pulse  Analizador de múltiples marcos temporales. 1.0  Versión inicial  Herramienta número 7 
17/01/25  Metrics Board  Panel con botón para análisis.  1.0  Versión inicial Herramienta número 8 
21/01/25 External Flow Análisis a través de bibliotecas externas. 1.0  Versión inicial Herramienta número 9 
27/01/25 VWAP Volume Weighted Average Price.   1.3  Versión inicial  Herramienta número 10 
02/02/25  Heikin Ashi  Suavizado de tendencias e identificación de señales de reversión.  1.0  Versión inicial  Herramienta número 11
04/02/25  FibVWAP  Generación de señales mediante análisis con Python.  1.0  Versión inicial  Herramienta número 12
14/02/25  RSI DIVERGENCE  Divergencias entre la acción del precio y el RSI.  1.0  Versión inicial  Herramienta número 13 
17/02/25  Parabolic Stop and Reverse (PSAR)  Automatización de la estrategia PSAR 1.0 Versión inicial  Herramienta número 14
20/02/25  Quarters Drawer Script  Trazar los niveles de los cuartos en el gráfico.  1.0  Versión inicial  Herramienta número 15 
27/02/25  Intrusion Detector Detecta y alerta cuando el precio alcanza niveles de cuartos. 1.0   Versión inicial Herramienta número 16 
27/02/25  TrendLoom Tool Panel de análisis de múltiples marcos temporales. 1.0 Versión inicial Herramienta número 17
11/03/25  Quarters Board  Panel con botones para activar o desactivar los niveles de cuartos.  1.0  Versión inicial Herramienta número 18
26/03/25  ZigZag Analyzer  Trazado de líneas de tendencia con el indicador ZigZag.  1.0  Versión inicial  Herramienta número 19 
10/04/25  Correlation Pathfinder Representación gráfica de correlaciones monetarias mediante bibliotecas de Python. 1.0 Versión inicial  Herramienta número 20 
23/04/25 Market Structure Flip Detector Tool Detección de cambios en la estructura del mercado. 1.0  Versión inicial  Herramienta número 21
08/05/25  Correlation Dashboard  Relación entre diferentes pares. 1.0 Versión inicial Herramienta número 22 
13/05/25 Currency Strength Meter  Medir la fortaleza de cada divisa en diferentes pares. 1.0 Versión inicial Herramienta número 23 


Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/18108

Archivos adjuntos |
Utilizando redes neuronales en MetaTrader Utilizando redes neuronales en MetaTrader
En el artículo se muestra la aplicación de las redes neuronales en los programas de MQL, usando la biblioteca de libre difusión FANN. Usando como ejemplo una estrategia que utiliza el indicador MACD se ha construido un experto que usa el filtrado con red neuronal de las operaciones. Dicho filtrado ha mejorado las características del sistema comercial.
Aprendizaje automático y Data Science (Parte 40): Uso de retrocesos de Fibonacci en datos de aprendizaje automático Aprendizaje automático y Data Science (Parte 40): Uso de retrocesos de Fibonacci en datos de aprendizaje automático
Los retrocesos de Fibonacci son una herramienta muy utilizada en el análisis técnico, ya que ayudan a los traders a identificar posibles zonas de reversión. En este artículo, analizaremos cómo estos niveles de retroceso pueden transformarse en variables objetivo para los modelos de aprendizaje automático, con el fin de ayudarles a comprender mejor el mercado mediante esta potente herramienta.
Particularidades del trabajo con números del tipo double en MQL4 Particularidades del trabajo con números del tipo double en MQL4
En estos apuntes hemos reunido consejos para resolver los errores más frecuentes al trabajar con números del tipo double en los programas en MQL4.
Aprendizaje automático y Data Science (Parte 39): Noticias + Inteligencia artificial, ¿apostarías por ella? Aprendizaje automático y Data Science (Parte 39): Noticias + Inteligencia artificial, ¿apostarías por ella?
Las noticias impulsan los mercados financieros, especialmente las publicaciones importantes como las de nóminas no agrícolas (NFP, por sus siglas en inglés). Todos hemos sido testigos de cómo un solo titular puede desencadenar fuertes fluctuaciones de precios. En este artículo, profundizamos en la poderosa intersección entre los datos de noticias y la Inteligencia Artificial.