
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 3): Asesor Experto Analytics Master
Contenido
- Introducción
- Revisión de la herramienta anterior
- Resumen general de Analytic Master (EA)
- Explorando el código del Asesor Experto
- Desglose del código
- Implementación y pruebas del código
- Conclusión
Introducción
Tras desarrollar el script de comentarios analíticos en el episodio anterior, he identificado sus limitaciones en cuanto a las propiedades del script, que describiré a continuación. Aunque reconozco el considerable impacto que ha tenido el script de comentarios analíticos dentro de la comunidad de traders, he desarrollado un Asesor Experto llamado Analytics Master. Este EA (Expert Advisor) ofrece el mismo análisis, al tiempo que proporciona métricas adicionales para obtener una mejor perspectiva del trading. Esta nueva herramienta ofrece varias ventajas, entre ellas la capacidad de actualizar continuamente las métricas cada dos horas, a diferencia del script, que solo podía escribir la información métrica una vez. El EA mejora el análisis y mantiene a los usuarios actualizados.
En algunos casos, un Asesor Experto puede integrar funciones similares a scripts para mejorar su funcionalidad. Esto significa que puede implementar tareas específicas dentro del código del EA que se asemejan a las acciones que suelen ejecutar los scripts independientes. Un EA combina eficazmente la codificación, la configuración personalizable, la lógica de negociación y la gestión de riesgos para automatizar las estrategias de negociación de manera eficiente. A continuación, he tabulado una comparación entre el script y el Asesor Experto.
Script | Asesor Experto |
---|---|
Están diseñados para realizar una tarea específica y completarla casi al instante. Se terminan una vez que se completa la tarea y no pueden ejecutarse de forma continua. | Funcionan continuamente en segundo plano, supervisando las condiciones del mercado y ejecutando operaciones basadas en condiciones predefinidas. |
No pueden gestionar eventos como ticks o temporizadores. Un script solo puede ejecutar su código cuando se inicia manualmente. | Pueden responder a los acontecimientos y cambios del mercado (por ejemplo, OnTick, OnTimer, OnTrade), lo que permite una mayor capacidad de respuesta en las estrategias de negociación. |
Por lo general, un script puede ejecutar operaciones (abrir, modificar o cerrar), pero no gestiona las operaciones en curso. Una vez ejecutado, no puede supervisar ni reaccionar ante el estado de las operaciones. | Los Asesores Expertos pueden gestionar posiciones abiertas de forma dinámica, realizar un seguimiento de las condiciones comerciales, aplicar trailing stops y ajustar dinámicamente sus estrategias en función de las condiciones del mercado. |
Por lo general, están diseñados para ejecutarse una sola vez y pueden requerir configuraciones específicas (como parámetros de entrada) cada vez que el usuario los ejecuta manualmente. | Pueden mantener los parámetros definidos por el usuario entre sesiones y ejecutarse sin interacción del usuario una vez que se han iniciado. |
Más adecuado para tareas sencillas basadas en acciones (por ejemplo, órdenes de cierre por lotes o aplicación de indicadores). | Pueden incorporar lógica compleja, algoritmos y sistemas que requieren una toma de decisiones continua y una adaptación a las condiciones del mercado. |
Aunque los scripts pueden analizar datos históricos, no pueden adaptarse continuamente ni aprender de los nuevos datos entrantes sin volver a ejecutarse. | Pueden analizar datos históricos y tomar decisiones basadas en datos entrantes en tiempo real, lo que permite estrategias adaptativas. |
Debido a que se ejecutan y terminan rápidamente, también tienen un impacto limitado en el rendimiento cuando se ejecutan, en comparación con los Asesores Expertos que se ejecutan de forma continua. | Dado que los Asesores Expertos funcionan constantemente, pueden provocar un aumento del consumo de CPU y memoria, especialmente si gestionan muchas operaciones o utilizan algoritmos complejos. |
Revisión de la herramienta anterior (Herramienta de comentarios analíticos)
Nuestra herramienta anterior, el script de comentarios analíticos, estaba diseñada para analizar métricas clave del día de negociación anterior, incluyendo:
- Apertura del día anterior
- Cierre del día anterior
- Volumen del día anterior
- Volumen diario actual
- Niveles de soporte y resistencia
Esta información se presenta en una tabla organizada verticalmente. Además, se ha calculado una predicción de los posibles movimientos del mercado basándose en los precios de apertura y cierre anteriores, así como en los volúmenes de negociación, tal y como se muestra en la figura 1 a continuación.
Figura 1. Presentación de datos
Nuestro script dibujó con éxito líneas de tendencia en el gráfico, resaltando los niveles clave de soporte y resistencia. La predicción de la dirección del mercado también pareció positiva. En la Figura 2, resumimos los resultados de nuestra herramienta de comentarios analíticos.
Figura 2. Resultado del comentario analítico
Para obtener más información sobre el script de comentarios analíticos, haga clic en el siguiente enlace: https://www.mql5.com/es/articles/15927
Resumen general de Analytic Master (EA)
A medida que pasamos de un script a un Asesor Experto, parte de la información que antes proporcionaba el script seguirá estando accesible a través del EA, tal y como se menciona en la reseña de la herramienta anterior. Sin embargo, el EA también proporcionará información adicional y realizará tareas que superan las capacidades del script original.
Además, nuestro EA ahora puede calcular la volatilidad del mercado, el spread del mercado, el capital, el saldo y los tamaños mínimos y máximos posibles de los lotes en función del saldo de la cuenta. Proporcionaré más explicaciones sobre por qué es esencial conocer esta información.
- Volatilidad del mercado
La volatilidad es una medida estadística de la dispersión de datos alrededor de su media durante un período específico. El cálculo de la volatilidad del mercado es crucial para una gestión eficaz de riesgos, la ejecución de operaciones y la planificación estratégica en los mercados financieros. Este EA automatiza el cálculo de la volatilidad del mercado, lo que hace que el proceso sea simplificado y fácil de usar. Si bien la volatilidad del mercado generalmente se mide utilizando la fórmula a continuación, nuestro EA simplifica esta función para facilitar su uso.
Figura 3. Fórmula de volatilidad
Para calcular la volatilidad, comenzamos determinando la desviación estándar como se describió anteriormente. Para obtener la volatilidad anualizada, se puede multiplicar la desviación estándar por la raíz cuadrada del número total de días de negociación en un año, que es aproximadamente 252. Más información: https://quantra.quantinsti.com/glossary/Volatility
- Spread del mercado
El diferencial de mercado, a menudo denominado simplemente «spread», es la diferencia entre el precio de compra y el precio de venta de un activo concreto en un mercado financiero. Una razón importante para conocer el valor del spread del mercado es evaluar los costos de negociación. Comprender el spread ayuda a los comerciantes e inversores a evaluar los costos asociados con la entrada y salida de posiciones.
Un spread más estrecho generalmente indica menores costos de transacción y una mejor ejecución comercial, lo que es particularmente crucial para los traders de alta frecuencia o aquellos que ejecutan numerosas operaciones diariamente. Por el contrario, un spread más amplio puede indicar costos más altos y podría informar a los traders a reconsiderar sus estrategias o elegir activos diferentes para operar para minimizar los gastos. Por lo tanto, conocer el valor del spread del mercado impacta directamente en la rentabilidad de las operaciones y en el rendimiento general de la inversión.
Figura 4. Fórmula del diferencial (spread) en el mercado
- Posibles tamaños de lotes
Para mejorar la experiencia del trader, nuestro Asesor Experto simplificará los cálculos de la información del mercado y actualizará estos datos cada dos horas. Esto garantiza que los comerciantes se mantengan informados con la información más actualizada del mercado, lo que permite una toma de decisiones más informada.
Explorando el código del Asesor Experto (Funciones y características clave)
El código incluye varias funcionalidades:
- Recuperar y visualizar datos comerciales de los días anteriores y actuales.
- Analizar la dirección del mercado en función de los movimientos de precios.
- Dibujar líneas de tendencia en el gráfico.
- Cálculo del tamaño de la posición según los principios de gestión de riesgos.
A continuación se muestra el código de nuestro Asesor Experto
//+------------------------------------------------------------------+ //| Analytics Master EA.mq5| //| Copyright 2024, Christian Benjamin| //| https://www.mql5,com| //+------------------------------------------------------------------+ #property copyright "2024, MetaQuotes Software Corp." #property link "https://www.mql5.com/en/users/lynnchris" #property description "EA for market analysis and commenting" #property version "1.0" #property strict // Inputs for risk management input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics } //+------------------------------------------------------------------+ //| Update metrics and display them | //+------------------------------------------------------------------+ void UpdateMetrics() { // Check if 2 hours have passed since the last update if(TimeCurrent() - lastUpdateTime >= 2 * 3600) { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate spread double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); double maxLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); // Get the ATR handle double atrValue = 0.0; if(atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; // Array to hold the ATR values if(CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) // Copy the latest ATR value { atrValue = atrBuffer[0]; // Retrieve the ATR value from the buffer } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } } //+------------------------------------------------------------------+ //| Analyze market direction | //+------------------------------------------------------------------+ string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if(close > open) { direction = "Bullish"; } else if(close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if(high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if(low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; } //+------------------------------------------------------------------+ //| Draw a continuous trend line to the left on the chart | //+------------------------------------------------------------------+ void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 720 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left } //+------------------------------------------------------------------+ //| Calculate the lot size based on risk management | //+------------------------------------------------------------------+ double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); // Adjusted for the correct pip size lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if(lotSize < minLotSize) lotSize = minLotSize; return lotSize; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Desglose del código
1. Inicialización y propiedades
input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance;
Los parámetros de entrada permiten a los usuarios personalizar el comportamiento del EA según sus preferencias comerciales. Se declaran variables globales para almacenar datos históricos, incluidos precios de apertura, cierre, máximos y mínimos del día anterior, así como volúmenes y niveles de soporte/resistencia.
2. Funciones OnInit y OnDeinit
int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; }
OnInit: Esta función se ejecuta cuando se inicializa el EA. Establece la última hora de actualización a cero.
void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart }
OnDeinit: Esta función se llama cuando se elimina o se detiene el EA y se limpia eliminando todos los objetos del gráfico.
3. Lógica principal en OnTick
void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics }
Esta función se activa en cada tick (cambio de precio). Llama a la función UpdateMetrics para recopilar y analizar datos.
4. Función UpdateMetrics
void UpdateMetrics() { if (TimeCurrent() - lastUpdateTime >= 2 * 3600) // Check if 2 hours have passed since last update { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); double atrValue = 0.0; if (atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; if (CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) { atrValue = atrBuffer[0]; } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } }
- Comprobación de tiempo: La función solo se ejecuta si han pasado 2 horas desde la última actualización, lo que minimiza los cálculos excesivos.
- Recuperación de datos: iTime, iOpen, iClose, iHigh, iLow e iVolume se utilizan para recopilar datos del último día y del día actual.
- Soporte y resistencia: El script calcula los niveles de Fibonacci basándose en los precios mínimos y máximos del día anterior.
- Análisis de la dirección del mercado: Llama a la función AnalyzeMarketDirection para evaluar las condiciones del mercado.
- Cálculo del tamaño del lote: Llama a la función CalculateLotSize para determinar cuánto operar basándose en los principios de gestión de riesgos.
- Métricas de cuenta y mercado: Recupera el saldo de la cuenta, el capital y el diferencial de mercado para tomar mejores decisiones de negociación.
- Cálculo del ATR: Recupera el rango verdadero promedio (ATR) para medir la volatilidad del mercado.
- Información de salida: Formatea y muestra métricas relevantes en la cadena infoStr y las registra con Print.
- Creación de líneas de tendencia: Limpia las líneas de tendencia antiguas y crea otras nuevas basadas en los precios máximos y mínimos del día anterior.
5. Análisis de la dirección del mercado
string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if (close > open) { direction = "Bullish"; } else if (close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if (high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if (low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; }
- Determinar la dirección del mercado: Esta función toma los precios de apertura, cierre, máximo y mínimo del día anterior para determinar si el mercado es alcista, bajista o neutral.
- Información adicional: Comprueba los indicadores de presión basándose en los máximos y mínimos, lo que proporciona un análisis más contextual de las condiciones del mercado.
6. Dibujo de líneas de tendencia
void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 24 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left }
- Dibujar líneas de tendencia: Esta función crea una línea de tendencia en el gráfico para el máximo o mínimo del día anterior, extendiéndola 24 horas atrás.
- Personalización: Cada línea tiene un color (rojo para alto, azul para bajo) y un ancho específico.
7. Cálculo del tamaño del lote
double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if (lotSize < minLotSize) lotSize = minLotSize; return lotSize; }
- Gestión de riesgos: Esta función calcula el tamaño del lote basándose en el porcentaje de riesgo definido en relación con el saldo de la cuenta del usuario y la distancia de stop loss calculada.
- Normalización: Garantiza que el tamaño del lote se encuentre dentro de los límites aceptables establecidos por el corredor.
Implementación y pruebas del código
Implementación de un Asesor Experto en MetaTrader 5: Guía paso a paso- Abrir MetaTrader 5: Inicie la plataforma de trading MetaTrader 5 en su ordenador.
- Acceder a MetaEditor: Para abrir MetaEditor, vaya a la barra de menú y haga clic en Herramientas > Editor del lenguaje MetaQuotes, o simplemente pulse F4. Alternativamente, si tiene MetaEditor instalado por separado, puede ejecutarlo directamente.
- Insertar el EA: En MetaEditor, seleccione Archivo > Nuevo > Asesor experto o abra un archivo EA existente (.mq5). Si crea un nuevo EA, siga las instrucciones para asignarle un nombre y definirlo.
- Compilar el EA: Después de editar el código del EA, haga clic en el botón Compilar (o pulse F7). Asegúrate de que no haya errores; una compilación exitosa generará un archivo ejecutable.
- Cargar el EA en MetaTrader 5: Vuelva a la plataforma MetaTrader 5 y abra el panel Navegador (Ctrl + N). Encuentre su EA compilado en la sección Asesores expertos.
- Adjuntar el EA a un gráfico: Arrastre y suelte el EA en el gráfico deseado, o haga clic con el botón derecho del ratón sobre el EA y seleccione Adjuntar a un gráfico. Aparecerá una ventana de configuración para personalizar los parámetros.
- Habilitar el trading automático: Asegúrese de que el trading automático esté habilitado haciendo clic en el botón verde «AutoTrading» en la barra de herramientas de MetaTrader 5. Si se le solicita, marque la opción Permitir operaciones automáticas en la configuración del EA.
- Supervisar el rendimiento: Vigile el rendimiento del EA en el gráfico. Utilice el Probador de estrategias para realizar pruebas retrospectivas, si es necesario.
- Ajuste la configuración según sea necesario: Puede modificar los parámetros o la configuración directamente desde la ventana de configuración del EA haciendo clic con el botón derecho del ratón en el gráfico.
Figura 5. Resultado del análisis
La figura 5 ilustra la conexión del EA al gráfico, dando como resultado los resultados mostrados.
Figura 6. Resultado del análisis
La Figura 6 anterior ilustra el rendimiento general de nuestro Asesor Experto, que es capaz de calcular automáticamente métricas clave del mercado y presentarlas en formato de gráfico. El EA dibuja líneas de tendencia basadas en los niveles de soporte y resistencia del día anterior. Realiza actualizaciones periódicas de la información del mercado cada dos horas, como se indica en los dos últimos diagramas, que muestran también las marcas de tiempo de actualización más recientes.
Conclusión
En resumen, la implementación exitosa de Analytics Master EA marca un avance significativo en el trading automatizado. Este EA no solo automatiza el análisis de métricas clave del mercado, sino que también proporciona información valiosa sobre los niveles de soporte y resistencia, lo que ayuda a los operadores a tomar decisiones más inteligentes. Al integrar una gestión de riesgos eficaz y ofrecer actualizaciones en tiempo real, ayuda a los operadores a navegar por las complejidades del mercado con confianza. En general, esta herramienta mejora la eficiencia comercial y permite a los usuarios mantenerse informados y proactivos en sus estrategias comerciales.
Tómese el tiempo para realizar pruebas retrospectivas del EA con datos históricos para comprender su desempeño en diferentes condiciones del mercado. Esto le ayudará a ajustar su configuración para adaptarla a su estilo comercial. Revise periódicamente las métricas y los conocimientos proporcionados por el EA. Las condiciones del mercado pueden cambiar rápidamente, por lo que mantenerse actualizado es crucial para tomar decisiones oportunas. Adhiérase siempre a su estrategia de gestión de riesgos. Ajuste la configuración del porcentaje de riesgo para alinearla con su tolerancia al riesgo personal y el tamaño de su cuenta. Interactúe con recursos educativos sobre estrategias comerciales, comportamiento del mercado y análisis técnico para complementar los conocimientos del EA. Si encuentra problemas o tiene sugerencias para mejorar, considere brindar comentarios al desarrollador. La aportación del usuario es invaluable para realizar mejoras futuras.
Si sigue estas recomendaciones, podrá maximizar la eficacia de Analytics Master EA y mejorar su experiencia comercial general.
Fecha | Nombre de la herramienta | Descripción | Versión | Actualizaciones | Notas |
---|---|---|---|---|---|
01/10/24 | Chart Projector | Script para superponer la acción del precio del día anterior con efecto fantasma. | 1.0 | Lanzamiento inicial | Primera herramienta en Lynnchris Tool Chest |
18/11/24 | Analytical Comment | 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 Lynnchris Tool Chest |
27/11/24 | Analytics Master | Actualización periódica de las métricas del mercado cada dos horas | 1.01 | Segundo lanzamiento | Tercera herramienta del Lynnchris Tool Chest |
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/16434
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.





- 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
Hola Qhumanani
Pido disculpas por el retraso en la respuesta, y muchas gracias por llegar a cabo. Estoy muy contento de saber que estás siguiendo mi trabajo sobre las herramientas de análisis de acción de precios.
Por favor, no te sientas tonto porque todo el mundo empieza en alguna parte, y es totalmente normal sentirse un poco abrumado con toda la nueva información. Sólo para aclarar, la versión actual de nuestra herramienta no ejecuta automáticamente las operaciones; está diseñado principalmente para el análisis y para proporcionar actualizaciones continuas basadas en la acción del precio. Aprecio sinceramente su interés en el comercio automatizado, y definitivamente vamos a considerar la incorporación de esa característica en futuras actualizaciones.
Gracias de nuevo por su compromiso.
¡Gracias por su comentario positivo! Me alegra saber que considera que la herramienta es valiosa.
Para responder a sus preguntas:
1. La herramienta no abre operaciones por usted; en su lugar, proporciona análisis y señales que puede utilizar para tomar decisiones de trading informadas. Usted ejecutará manualmente las operaciones basándose en sus predicciones.
2.Las señales se actualizan periódicamente, aproximadamente cada dos horas, lo que le permite adaptarse a las condiciones cambiantes del mercado. Aunque no reflejan los cambios en tiempo real a lo largo de la sesión, las actualizaciones le ayudarán a comprender los cambios de sentimiento del mercado, ya sea un estado bajista que cambia a alcista o viceversa.
Sus opiniones y sugerencias adicionales son bienvenidas para debatirlas.
Hola Ifeanyichukwu Ikwecheghe,
¡Gracias por su comentario positivo! Me alegra saber que la herramienta le resulta valiosa.
Para responder a sus preguntas:
1. La herramienta no abre operaciones por usted; en su lugar, proporciona análisis y señales que puede utilizar para tomar decisiones de trading informadas. Usted ejecutará manualmente las operaciones basándose en sus predicciones.
2.Las señales se actualizan periódicamente, aproximadamente cada dos horas, lo que le permite adaptarse a las condiciones cambiantes del mercado. Aunque no reflejan los cambios en tiempo real a lo largo de la sesión, las actualizaciones le ayudarán a comprender los cambios en el sentimiento del mercado, ya sea un estado bajista que cambia a alcista o viceversa.
Sus opiniones y sugerencias adicionales son bienvenidas para debatirlas.