
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 2): Script de comentarios analíticos
Introducción
Para simplificar el análisis de la evolución de los precios y acelerar las evaluaciones del mercado, he desarrollado una herramienta robusta basada en el concepto del proyector de gráficos. Esta herramienta proporciona un resumen eficaz de los valores esenciales del mercado, ya que permite a los operadores ejecutar un único script sin necesidad de navegar por el gráfico. Muestra de forma eficaz las métricas clave, incluyendo los precios de apertura y cierre del día anterior, los niveles significativos de soporte y resistencia, los valores máximos y mínimos del día anterior y el volumen de operaciones. Además, cuenta con una tabla vertical que se muestra directamente en el gráfico para facilitar su consulta.
La herramienta dibuja automáticamente líneas importantes de soporte y resistencia, proporcionándole indicaciones visuales para el análisis. También ofrece comentarios útiles sobre las condiciones del mercado y los posibles movimientos, lo que añade un valioso contexto a sus decisiones de negociación.
Procederemos con los siguientes subtemas:
- ¿Por qué centrarse en esta herramienta?
- Descripción general de la nueva herramienta
- El script MQL5
- Desarrollo del código
- Pruebas
- Conclusión
¿Por qué centrarse en esta herramienta?
Tras investigar cómo cierta información del mercado influye en las predicciones sobre la dirección del mercado, he creado una herramienta diseñada para proporcionar rápidamente los datos más importantes sobre el mercado. Esto significa que no tendrás que revisar datos históricos ni realizar cálculos complicados. La característica más destacada de esta herramienta es su capacidad para proporcionar información en cuestión de segundos.
Muestra los precios de apertura y cierre del día anterior y destaca los niveles clave de resistencia y soporte. Quizás lo más importante es que calcula tanto el volumen actual como el volumen del día anterior. Comprender el volumen es fundamental, ya que refleja la participación en el mercado. Cuando el volumen de hoy es significativamente mayor que el de ayer, esto indica que hay más operadores participando, lo que puede provocar movimientos de precios más pronunciados y reforzar la tendencia de precios predominante, ya sea al alza (alcista) o a la baja (bajista). Al combinar toda esta información, se obtienen datos sobre la dirección prevista de los precios.
Algunas de las características principales se describen en la tabla siguiente.
Ventajas | Descripción |
---|---|
Identificación de niveles clave | Conocer los precios máximos y mínimos del día anterior puede ayudar a los operadores a determinar niveles psicológicos importantes en los que podría aumentar la presión de compra o venta. |
Información sobre el volumen | El análisis del volumen ayuda a los operadores a evaluar el interés del mercado. Un volumen elevado a un nivel de precios concreto suele indicar una fuerte convicción entre los operadores, lo que lo convierte en una referencia crucial para futuras operaciones. |
Confirmación de tendencia | Los precios de apertura y cierre proporcionan información sobre el estado del mercado. Un cierre más alto en comparación con la apertura sugiere un sentimiento alcista, mientras que lo contrario indica un sentimiento bajista. |
Anotaciones del gráfico | El script añade líneas horizontales de soporte y resistencia al gráfico, proporcionando señales visuales que pueden mejorar el análisis del operador. Este soporte visual facilita la comprensión de los niveles del mercado y la dinámica de la evolución de los precios. |
Comunicaciones claras | El uso de un cuadro de comentarios en el gráfico ayuda a comunicar análisis críticos de forma concisa, lo que puede facilitar la toma de decisiones rápidas. |
Herramienta de aprendizaje | Para los traders novatos, el script puede servir como herramienta educativa para ayudarles a comprender cómo leer e interpretar los datos históricos de precios, el volumen y las implicaciones para los movimientos futuros de los precios. |
Eficiencia y ahorro de tiempo | La herramienta automatiza el cálculo y la recuperación de indicadores clave, lo que ahorra tiempo. Esto permite a los operadores centrarse en ejecutar sus planes de trading en lugar de recopilar datos. |
Descripción general del script
El script MQL5 que vamos a ver le ayuda a recopilar automáticamente métricas importantes del día de negociación anterior. Esto facilita tu análisis, por lo que puedes dedicar más tiempo a la estrategia y menos a recopilar datos. Así es como lo hace el script.
1. Cálculo y visualización de los niveles técnicos esenciales mediante la obtención directa de datos del día de negociación anterior en la plataforma de negociación.
Figura 1. Niveles esenciales
La figura 1 muestra información esencial sobre el mercado, incluidos los precios de apertura y cierre del día anterior, los niveles clave de resistencia y soporte, y cómo reacciona el mercado a esos niveles.
2. Anotación de los gráficos para referencia inmediata.
Figura 2. Referencia rápida de gráficos
En la figura 2, podemos ver cómo se presenta la información de referencia inmediata en el gráfico de MetaTrader 5.
Echemos un vistazo más de cerca al script para entender cómo funciona.
El script MQL5
El script está diseñado para analizar el desempeño del mercado del día anterior y presentar análisis clave a los operadores. Es particularmente útil para los traders intradía y los analistas técnicos que dependen de la comprensión de la acción reciente de los precios y las tendencias de volumen para tomar decisiones comerciales informadas. A continuación se muestra el script completo, listo para implementarse dentro de su plataforma MetaTrader 5:
//+------------------------------------------------------------------+ //| ACS.mq5 | //| Copyright 2024, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2024, MetaQuotes Software Corp." #property link "https://www.mql5.com/en/users/lynnchris" #property description "Script that displays previous day metrics on the current chart and predicts market direction." #property version "1.0" #include <Trade\Trade.mqh> //+------------------------------------------------------------------+ //| Input parameters | //+------------------------------------------------------------------+ input color TableTextColor = clrBlue; // Text color for the table input int TableXOffset = 10; // X offset for the table input int TableYOffset = 50; // Y offset for the table input color SupportColor = clrGreen; // Color for the support line input color ResistanceColor = clrRed; // Color for the resistance line //+------------------------------------------------------------------+ //| Global variables | //+------------------------------------------------------------------+ double prevDayHigh, prevDayLow, prevDayOpen, prevDayClose, prevDayVolume; double currentDayVolume; double keySupport, keyResistance; // Initialized but will be calculated //+------------------------------------------------------------------+ //| Main function | //+------------------------------------------------------------------+ void OnStart() { //--- Get previous day's data int prevDayIndex = iBarShift(NULL, PERIOD_D1, iTime(NULL, PERIOD_D1, 1)); if(prevDayIndex == -1) { Print("Error retrieving previous day's data."); return; } prevDayHigh = iHigh(NULL, PERIOD_D1, prevDayIndex); prevDayLow = iLow(NULL, PERIOD_D1, prevDayIndex); prevDayOpen = iOpen(NULL, PERIOD_D1, prevDayIndex); prevDayClose = iClose(NULL, PERIOD_D1, prevDayIndex); prevDayVolume = iVolume(NULL, PERIOD_D1, prevDayIndex); //--- Get today's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Current day's volume //--- Calculate key support and resistance keySupport = prevDayLow; // Support level can be set to the previous day's low keyResistance = prevDayHigh; // Resistance level can be set to the previous day's high //--- Manage existing lines (if any) //ObjectDelete("SupportLine"); //ObjectDelete("ResistanceLine"); //--- Create support line if(!ObjectCreate(0, "SupportLine", OBJ_HLINE, 0, 0, keySupport)) { Print("Failed to create SupportLine"); } ObjectSetInteger(0, "SupportLine", OBJPROP_COLOR, SupportColor); ObjectSetInteger(0, "SupportLine", OBJPROP_WIDTH, 2); // Set the width of the line //--- Create resistance line if(!ObjectCreate(0, "ResistanceLine", OBJ_HLINE, 0, 0, keyResistance)) { Print("Failed to create ResistanceLine"); } ObjectSetInteger(0, "ResistanceLine", OBJPROP_COLOR, ResistanceColor); ObjectSetInteger(0, "ResistanceLine", OBJPROP_WIDTH, 2); // Set the width of the line //--- Determine the day's nature (Bullish or Bearish) string marketNature; if(prevDayClose > prevDayOpen) { marketNature = "Bullish"; } else if(prevDayClose < prevDayOpen) { marketNature = "Bearish"; } else { marketNature = "Neutral"; } //--- Compare volumes and determine market sentiment string volumeCommentary; if(currentDayVolume > prevDayVolume) { volumeCommentary = "Current day volume is higher than previous day volume. Bullish sentiment may continue."; } else if(currentDayVolume < prevDayVolume) { volumeCommentary = "Current day volume is lower than previous day volume. Bearish sentiment may follow."; } else { volumeCommentary = "Current day volume is equal to previous day volume. Market sentiment remains uncertain."; } //--- Generate market movement commentary string marketCommentary; if(marketNature == "Bullish") { marketCommentary = "The market closed higher yesterday, indicating bullish sentiment. Look for potential continuation patterns."; } else if(marketNature == "Bearish") { marketCommentary = "The market closed lower yesterday, indicating bearish sentiment. Consider taking positions that align with this trend."; } else { marketCommentary = "The market showed neutrality with little change. Watch for potential breakout opportunities."; } //--- Display the information in a table-like format on the chart string textOutput = "Previous Day Analytics:\n"; textOutput += "Open: " + DoubleToString(prevDayOpen, 5) + "\n"; textOutput += "Close: " + DoubleToString(prevDayClose, 5) + "\n"; textOutput += "High: " + DoubleToString(prevDayHigh, 5) + "\n"; textOutput += "Low: " + DoubleToString(prevDayLow, 5) + "\n"; textOutput += "Volume (Prev Day): " + DoubleToString(prevDayVolume, 0) + "\n"; textOutput += "Volume (Current Day): " + DoubleToString(currentDayVolume, 0) + "\n"; textOutput += "Support: " + DoubleToString(keySupport, 5) + "\n"; textOutput += "Resistance: " + DoubleToString(keyResistance, 5) + "\n"; textOutput += "\nMarket Nature: " + marketNature + "\n"; textOutput += volumeCommentary + "\n"; textOutput += marketCommentary; // Draw the text output on the chart Comment(textOutput); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Desarrollo del código
Desarrollamos nuestro código utilizando MetaEditor. En este caso optamos por crear un script. A continuación, describiremos los pasos para lograrlo.
1. Propiedades
Estas propiedades le ayudan a dar el crédito adecuado a su trabajo y compartir detalles importantes sobre el autor o la fuente del guión. También especifican la versión del script, lo que es útil para realizar un seguimiento de las actualizaciones y garantizar que los usuarios estén al tanto de cualquier cambio.
#property copyright "2024, MetaQuotes Software Corp" #property link "https://www.mql5.com/en/users/lynnchris" #property version "1.0"
2. Incluir las bibliotecas necesarias
Esta línea incluye la biblioteca Trade.mqh.
Trade: Este término probablemente se refiere a las diversas funciones, clases u objetos diseñados para gestionar las operaciones comerciales. Estos elementos facilitan la ejecución de operaciones, la comprobación del estado de las mismas y la gestión de tareas relacionadas dentro de sus algoritmos de trading.
.mqh: Esta extensión de archivo se utiliza para los archivos de encabezado MetaQuotes. En MetaTrader, los archivos .mqh sirven para almacenar código reutilizable, incluyendo funciones, clases o bibliotecas. Este código se puede incorporar fácilmente a otros programas MQL, lo que promueve la eficiencia y la modularidad.
#include <Trade\Trade.mqh>
3. Input Parameters:
Un parámetro de entrada es una variable definida en un programa MQL5 que los usuarios pueden ajustar en el probador de estrategias o en la configuración de entrada de un EA sin cambiar el código subyacente.
The script also allows for user input parameters, providing traders the flexibility to tailor their analysis to their preferences. Esto significa que pueden elegir símbolos o colores específicos para las líneas de soporte y resistencia, lo que hace que la herramienta sea más personalizada y fácil de leer.
input color TableTextColor = clrBlue; // Text color for the table input int TableXOffset = 10; // X offset for the table input int TableYOffset = 50; // Y offset for the table input color SupportColor = clrGreen; // Color for the support line input color ResistanceColor = clrRed; // Color for the resistance line
A continuación, abordamos las variables globales. Estas variables globales almacenan información sobre la evolución de los precios del día anterior y el volumen del día actual. Las variables keySupport y keyResistance se inicializan más adelante en el código.
double prevDayHigh, prevDayLow, prevDayOpen, prevDayClose, prevDayVolume; double currentDayVolume; double keySupport, keyResistance; // Initialized but will be calculated
4. Funcionalidad principal:
Esta es la función principal donde comienza la ejecución del script. Todo lo que se encuentre dentro de esta función se ejecutará cuando se ejecute el script. Los scripts son programas de ejecución única que realizan tareas específicas en el entorno MetaTrader 5, como colocar una operación, modificar órdenes o generar señales.
void OnStart()
En primer lugar, recuperamos los datos del día de negociación anterior, incluidos los niveles de precios y el volumen. Este paso identifica el índice de la última barra diaria completada, lo cual es esencial para analizar el comportamiento reciente del mercado y tomar decisiones de trading informadas.
int prevDayIndex = iBarShift(NULL, PERIOD_D1, iTime(NULL, PERIOD_D1, 1));
Comprueba si el índice del día anterior se recuperó correctamente. Si no es así, muestra un mensaje de error y sale de la función.
if (prevDayIndex == -1) { Print("Error retrieving previous day's data."); return; }
A continuación, recupera los datos del día anterior:
prevDayHigh = iHigh(NULL, PERIOD_D1, prevDayIndex); prevDayLow = iLow(NULL, PERIOD_D1, prevDayIndex); prevDayOpen = iOpen(NULL, PERIOD_D1, prevDayIndex); prevDayClose = iClose(NULL, PERIOD_D1, prevDayIndex); prevDayVolume = iVolume(NULL, PERIOD_D1, prevDayIndex);
Obtener el volumen del día actual
Esto recupera el volumen del día actual.
currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Current day's volume
Calcular los niveles de soporte y resistencia
El soporte se establece como el mínimo del día anterior, mientras que la resistencia se establece como el máximo del día anterior.
keySupport = prevDayLow; // Support level can be set to the previous day's low keyResistance = prevDayHigh; // Resistance level can be set to the previous day's high
Crear líneas de soporte y resistencia
Esto intenta crear una línea horizontal que represente el soporte. Si falla, muestra un mensaje de error. El mismo proceso se aplica a la línea de resistencia.
if (!ObjectCreate(0, "SupportLine", OBJ_HLINE, 0, 0, keySupport)) { Print("Failed to create SupportLine"); }
Determinar la naturaleza del mercado
La siguiente parte determina si el mercado fue alcista, bajista o neutral basándose en los precios de apertura y cierre del día anterior:
if (prevDayClose > prevDayOpen) { marketNature = "Bullish"; } else if (prevDayClose < prevDayOpen) { marketNature = "Bearish"; } else { marketNature = "Neutral"; }
Comentario
La función Comment() permite mostrar texto descriptivo directamente en el gráfico de operaciones. Esto se puede utilizar para mostrar información importante, como valores actuales, señales de trading o mensajes de estado.
Aquí, un comentario sobre los volúmenes actuales frente a los del día anterior:
if (currentDayVolume > prevDayVolume) { volumeCommentary = "Current day volume is higher..."; } else if (currentDayVolume < prevDayVolume) { volumeCommentary = "Current day volume is lower..."; } else { volumeCommentary = "Current day volume is equal..."; }
El script utiliza la función Comment para escribir un mensaje limpio y formateado en el gráfico que muestra la apertura, la máxima, la mínima, el cierre y los volúmenes del día anterior y del día actual. Esto sirve como punto de referencia inmediato para los operadores.
if (marketNature == "Bullish") { marketCommentary = "The market closed higher yesterday..."; } else if (marketNature == "Bearish") { marketCommentary = "The market closed lower yesterday..."; } else { marketCommentary = "The market showed neutrality..."; }
Tabla de visualización
Por último, crea un mensaje de texto que contiene todos los datos recopilados y lo muestra en el gráfico:
string textOutput = "Previous Day Analytics:\n"; textOutput += "Open: " + DoubleToString(prevDayOpen, 5) + "\n"; ... textOutput += marketCommentary; // Draw the text output on the chart Comment(textOutput);
Pruebas
A continuación se detallan los pasos para implementar correctamente el script.
1: Abra MetaTrader 5 y navegue hasta MetaEditor.
2: En MetaEditor, cree un nuevo script seleccionando Nuevo > Script.
3: Copie y pegue el script proporcionado en el editor.
4: Compila el script usando el botón de compilación. Asegúrese de que no haya errores.
5: Regrese a su plataforma MetaTrader, busque el script en el panel del Navegador, en "Scripts", y arrástrelo al gráfico deseado. Tras arrastrar el script al gráfico, este es el resultado que obtuve:
Figura 3. Resultado 1 de la prueba de herramientas
6: Establezca cualquier parámetro de entrada personalizado (si lo desea) en el cuadro de diálogo que aparece. A continuación se muestra un GIF que demuestra cómo cambié algunos parámetros en MetaTrader 5.
Figura 4. Configuración de parámetros
Después de ejecutar el script, se obtuvieron los siguientes resultados. Estoy proporcionando tres GIF diferentes de los distintos pares en los que probé el script. El primer GIF muestra un par de divisas, USDSEK, que produjo los resultados que se muestran a continuación.
Figura 5. Resultado 2 de la prueba de herramientas
En la figura 5 anterior, la herramienta presenta eficazmente la información requerida. Indica un sentimiento de mercado alcista anticipado. El mercado experimentó inicialmente un ligero movimiento bajista, pero a medida que avanzaba el día exhibió un fuerte impulso alcista.
En segundo lugar, también analizamos el índice Crash 900.
Figura 6. Resultado 3 de la prueba de herramientas
En la figura 6 del índice Crash 900, la información también se presentó con claridad, revelando un sentimiento bajista que se desarrolló rápidamente y sin ninguna reversión.
Por último, analizamos el par USDCNH, como se detalla a continuación.
Figura 7. Resultado 4 de la prueba de herramientas
En la figura 7 anterior, la herramienta funcionó excepcionalmente bien, lo que indica un movimiento alcista del mercado. El mercado respondió en consecuencia, respetando tanto los niveles de resistencia como los de soporte.
Además, durante el proceso de prueba de la herramienta, la figura 3 (índice Boom 300) presenta algunos resultados notables. Ilustra claramente los precios iniciales y finales del día anterior, proporcionando información valiosa sobre el análisis y el comportamiento del mercado. Los datos también indican una tendencia bajista, como lo identifica la navegación de la herramienta.
Conclusión
Después de haber desarrollado y probado con éxito la herramienta, puedo decir con confianza que la herramienta de comentarios analíticos es sólida. Su capacidad para analizar rápidamente los movimientos anteriores del mercado, identificar niveles de soporte y resistencia, calcular los volúmenes comerciales y brindar información sobre los movimientos de precios futuros esperados en función de la información recopilada es impresionante.
La información se presenta con claridad, lo que mejora la usabilidad. Animo a los traders a integrar sus propias estrategias comerciales junto con esta herramienta para mejorar sus resultados y procesos de toma de decisiones. Además, he observado que la herramienta funciona de manera óptima a medida que avanza el día, ya que calcula volúmenes de tiempo actuales que pueden ser necesarios para un análisis preciso.
Fecha | Nombre de la herramienta | Descripción | Versión | Actualizaciones | Notas |
---|---|---|---|---|---|
01/10/24 | Proyector de gráficos | Script para superponer la acción del precio del día anterior con efecto fantasma. | 1.0 | Lanzamiento inicial | Primera herramienta en Lynnchris Toolchest |
18/11/24 | Comentario analítico | Proporciona información del día anterior en formato tabular y anticipa la dirección futura del mercado. | 1.0 | Lanzamiento inicial | Segunda herramienta del conjunto de herramientas Lynnchris |
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/15927





- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso