English Русский Deutsch 日本語 Português
preview
De novato a experto: Noticias animadas utilizando MQL5 (VIII) Botones de operación rápida para trading de noticias

De novato a experto: Noticias animadas utilizando MQL5 (VIII) Botones de operación rápida para trading de noticias

MetaTrader 5Ejemplos |
20 0
Clemence Benjamin
Clemence Benjamin

Contenido:



Introducción

En esta discusión se presenta la interfaz «Quick Trade Buttons» del asesor experto (EA) News Headline, diseñada para combinar a la perfección la precisión algorítmica con la toma de decisiones humana en el trading basado en noticias y el scalping. Aunque el EA destaca por la ejecución automatizada de operaciones, anteriormente limitaba la intervención manual en tiempo real durante acontecimientos noticiosos de alta volatilidad, en los que el criterio humano resulta fundamental para el análisis contextual y la aplicación de estrategias más matizadas.

El panel Quick Trade Buttons resuelve este problema al integrar una interfaz compacta y visualmente clara directamente en el gráfico, lo que permite a los traders ejecutar operaciones rápidas (comprar, vender, cerrar todas, eliminar órdenes y mucho más) mientras aprovechan los datos del calendario económico en tiempo real, las fuentes de noticias de Alpha Vantage, la información de los indicadores (RSI, estocástico, MACD, CCI) y los análisis basados en inteligencia artificial. Este enfoque híbrido de «inteligencia aumentada» permite a los traders combinar la velocidad que ofrecen los sistemas automatizados con la discreción estratégica, lo que optimiza el rendimiento en mercados volátiles y en situaciones de scalping de ritmo acelerado.

Comparación: flujo de trabajo actual de un EA frente al flujo de trabajo mejorado con Quick Trade Buttons

Flujo de trabajo actual Flujo de trabajo mejorado
Monitorización pasiva:
El EA ejecuta operaciones automáticas basadas en reglas predefinidas; los traders supervisan el proceso sin intervenir directamente.
Control híbrido activo:
Los traders utilizan los Quick Trade Buttons para intervenir sobre la automatización o complementarla mediante acciones con un solo clic para órdenes de mercado o pendientes.
Se requiere navegación por la terminal:
Las operaciones manuales implican acceder a la ventana de órdenes o al panel de herramientas de MetaTrader 5, lo que distrae la atención del gráfico.
Ejecución centrada en los gráficos:
Todas las operaciones de trading se realizan directamente en el gráfico a través de un panel de botones compacto, lo que permite mantener la atención.
Ciclo inconexo entre datos y acción:
Se muestran noticias, indicadores y análisis basados en la inteligencia artificial, pero requieren acciones externas, lo que retrasa la ejecución.
Proceso de acción integrado:
Consulta noticias o análisis en tiempo real → Haz clic en el botón «Operación rápida» → Ejecuta órdenes al instante.
Alta carga cognitiva:
Alternar entre el análisis de gráficos y las ventanas de la plataforma aumenta la tensión mental en momentos de volatilidad.
Enfoque optimizado:
Un espacio de trabajo unificado en el gráfico, con botones y datos, reduce la carga cognitiva y la latencia.
Rigidez algorítmica:
Las estrategias predefinidas no pueden adaptarse a anomalías inesperadas del mercado.
Sinergia entre el ser humano y la máquina:
Los Quick Trade Buttons permiten a los traders adaptarse a situaciones excepcionales según su criterio, lo que aumenta la flexibilidad.
Ejecución manual lenta:
Las operaciones manuales a través del terminal tardan más de 3000 ms debido a los retrasos en la navegación y la introducción de datos.
Velocidad casi algorítmica:
Las pulsaciones de botones preconfiguradas ejecutan operaciones en menos de 500 ms con parámetros de riesgo automatizados.

La integración de la interfaz de los Quick Trade Buttons en el asesor experto (EA) «News Headline» es totalmente viable, ya que aprovecha la clase CButton de MetaTrader 5 para los controles interactivos, CTrade para una ejecución eficiente de las operaciones y CCanvas para crear un panel de control visualmente intuitivo. La interfaz propuesta contará con ocho botones (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop) con parámetros de gestión de riesgos precalculados, lo que permitirá una ejecución de operaciones rápida y disciplinada durante acontecimientos noticiosos de alta volatilidad y situaciones de scalping de ritmo acelerado.

La gestión de riesgos precalculada mejora la eficacia al automatizar los cálculos de stop loss y take profit, que se validan según las restricciones del bróker (por ejemplo, SYMBOL_VOLUME_MIN/MAX), lo que minimiza los errores en situaciones de presión y mantiene ratios de riesgo-rentabilidad constantes. Esta sinergia entre velocidad, precisión e integración de datos en tiempo real (calendario económico, fuentes de noticias de Alpha Vantage, indicadores RSI, estocástico, MACD y CCI, y análisis basados en inteligencia artificial) convierte a los «Quick Trade Buttons» en una potente herramienta de «inteligencia aumentada», que permite a los traders combinar el criterio humano con la eficiencia de los algoritmos en mercados volátiles.

El plan de desarrollo se articula en tres fases estratégicas con el fin de ofrecer un producto sólido y fácil de usar.

Fase 1:

El desarrollo del encabezado de la clase implicará la creación de una clase CTradingButtons en un archivo de encabezado específico (TradingButtons.mqh). Esta clase definirá la creación de botones, el estilo y la lógica de las operaciones con parámetros de riesgo integrados, incluyendo la validación de entradas (por ejemplo, la comprobación de SYMBOL_TRADE_MODE) y la gestión de errores para garantizar la fiabilidad. Se prevé añadir una etiqueta «Quick Trade Buttons» al panel para mejorar la usabilidad.

Fase 2:

La integración en el EA incorporará la clase al EA «News Headline», inicializándola en «OnInit» con los datos introducidos por el usuario, vinculando los clics en los botones a «OnChartEvent» y colocando el panel de forma que complemente los lienzos de noticias. Las operaciones manuales utilizarán un número mágico distinto para evitar conflictos con las operaciones automatizadas (por ejemplo, órdenes stop 3 minutos antes de los eventos).

Fase 3:

Las pruebas en gráficos en tiempo real validarán la interfaz en una cuenta de demostración (por ejemplo, EURUSD, gráfico M1), evaluando la respuesta de los botones, la precisión de los parámetros de riesgo y la integración con noticias, indicadores y datos de IA durante eventos de noticias simulados y sesiones de scalping. Las pruebas de usabilidad evaluarán la claridad visual y la velocidad de ejecución. Este enfoque por etapas garantiza que los Quick Trade Buttons ofrezcan una experiencia de negociación fluida y basada en datos. 

Diagrama de relaciones de las fases de desarrollo

Diagrama de relaciones de las fases de desarrollo

Consulte la imagen que aparece a continuación para ver una representación gráfica de nuestro objetivo.

Objetivo tras la discusión

Integración de los botones de trading al final de la discusión

Al término de este análisis, nuestro objetivo es alcanzar los resultados que se muestran en el gráfico anterior, en el que se ilustra la implementación satisfactoria de los Quick Trade Buttons integrados en el asesor experto (EA) «News Headline» en un gráfico del par EURAUD. En la siguiente sección, describiremos dos fases clave de la implementación: en primer lugar, el desarrollo del encabezado de Quick Trade Buttons para crear una interfaz modular y fácil de usar; y, en segundo lugar, la integración de este encabezado en el EA «News Headline» para permitir la realización de operaciones manuales sin problemas, junto con las estrategias automatizadas. Estas fases culminan en una serie de pruebas exhaustivas, cuyos resultados confirman la eficacia del sistema para el trading de noticias y el scalping.


Desarrollo de la clase CTradingButtons

El archivo de encabezado TradingButtons.mqh define la clase CTradingButtons, que resulta fundamental para implementar la interfaz de Quick Trade Buttons del asesor experto (EA) News Headline. Esta clase ofrece una interfaz intuitiva basada en gráficos para el trading manual, lo que permite una rápida ejecución de operaciones y la gestión de posiciones durante el trading basado en noticias y el scalping. A continuación, desgloso cuatro secciones clave del encabezado —declaración de clases, inicialización (Init), creación de botones (CreateButtons) y gestión de eventos (HandleChartEvent)—, explicando cómo funciona cada una y cómo contribuye al objetivo de desarrollo de crear un panel de operaciones eficiente e intuitivo que se integre con datos en tiempo real para la inteligencia aumentada.

Declaración de clase

La sección de declaración de clases establece la clase CTradingButtons, definiendo sus miembros privados y públicos para gestionar el panel de botones y las operaciones de trading. Entre los miembros privados se incluyen objetos CButton para cada uno de los ocho botones (Buy, Sell, Close All, etc.), un objeto CCanvas para el panel, un objeto CTrade para la ejecución de operaciones y variables para las dimensiones y el espaciado de los botones.

Los miembros públicos exponen parámetros de riesgo configurables (por ejemplo, LotSize, StopLoss, TakeProfit) y el constructor establece los valores por defecto (por ejemplo, tamaño del lote = 0,1, stop loss = 50 pips). Esta estructura proporciona una base modular para los Quick Trade Buttons, encapsulando la interfaz gráfica de usuario y la lógica de negociación. Contribuye al objetivo de desarrollo al ofrecer una interfaz compacta y reutilizable que se puede integrar fácilmente en la plataforma de trading, con ajustes de riesgo predefinidos para garantizar una negociación disciplinada durante eventos de noticias volátiles y operaciones de scalping de ritmo rápido.

class CTradingButtons

{

private:

   CButton btnBuy, btnSell, btnCloseAll, btnDeleteOrders, btnCloseProfit, btnCloseLoss, btnBuyStop, btnSellStop;
   CCanvas buttonPanel;
   CTrade  trade;
   int     buttonWidth;
   int     buttonHeight;
   int     buttonSpacing;

public:

   double LotSize;
   int    StopLoss;
   int    TakeProfit;
   int    StopOrderDistancePips;
   double RiskRewardRatio;

   CTradingButtons() : buttonWidth(100), buttonHeight(30), buttonSpacing(10),
                      LotSize(0.1), StopLoss(50), TakeProfit(100),
                      StopOrderDistancePips(8), RiskRewardRatio(2.0) {}

};

Inicialización (Init)

La función Init inicializa los componentes de negociación y de la interfaz gráfica de usuario cuando se carga el EA. Configura el objeto CTrade con un número mágico único (123456),

para diferenciar las operaciones manuales, establece una desviación de 10 puntos como tolerancia al deslizamiento y utiliza la ejecución de órdenes específica por símbolo (SetTypeFillingBySymbol). A continuación, llama a las funciones `CreateButtonPanel` y `CreateButtons` para mostrar el panel y los botones en el gráfico. Esta sección es fundamental para configurar la interfaz y garantizar la fiabilidad en la ejecución de las operaciones. Contribuye al objetivo de desarrollo al establecer un proceso de configuración fluido, lo que permite que los Quick Trade Buttons estén listos para su uso inmediato, con parámetros de negociación coherentes que facilitan la ejecución rápida en el trading basada en noticias (por ejemplo, la colocación de órdenes stop antes de los eventos) y el scalping (por ejemplo, órdenes de mercado rápidas).

void Init()

{
   trade.SetExpertMagicNumber(123456);
   trade.SetDeviationInPoints(10);
   trade.SetTypeFillingBySymbol(_Symbol);
   CreateButtonPanel();
   CreateButtons();

}

Creación de botones (CreateButtons)

La función CreateButtons crea los ocho botones y los coloca verticalmente dentro del panel (empezando en y=160, x=10) con un tamaño fijo (100 x 30 píxeles) y un espaciado fijo (10 píxeles). Cada botón se crea utilizando la clase CButton, se le asigna un nombre único (por ejemplo, «btnBuy»), se le aplica el estilo de la fuente Calibri (tamaño 8) y se le da un fondo negro con colores de texto llamativos (por ejemplo, verde lima para «Buy» y rojo para «Sell») para facilitar su identificación. Los botones tienen un orden Z de 11 para garantizar que aparezcan por encima del panel (orden Z = 10).

Esta sección es fundamental para crear una interfaz visualmente intuitiva, que permita a los traders reconocer e interactuar al instante con los botones en situaciones de gran presión. Contribuye al objetivo de desarrollo al ofrecer un panel de control intuitivo y centrado en los gráficos que aumenta la velocidad y reduce la carga cognitiva en el trading de noticias y el scalping.

void CreateButtons()

{

   int x = 10;
   int y = 160;
   string font = "Calibri";
   int fontSize = 8;
   color buttonBgColor = clrBlack; // Button background color
   btnBuy.Create(0, "btnBuy", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnBuy.Text("Buy");
   btnBuy.Font(font);
   btnBuy.FontSize(fontSize);
   btnBuy.ColorBackground(buttonBgColor);
   btnBuy.Color(clrLime); // Bright green text
   ObjectSetInteger(0, "btnBuy", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnSell.Create(0, "btnSell", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnSell.Text("Sell");
   btnSell.Font(font);
   btnSell.FontSize(fontSize);
   btnSell.ColorBackground(buttonBgColor);
   btnSell.Color(clrRed); // Bright red text
   ObjectSetInteger(0, "btnSell", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnCloseAll.Create(0, "btnCloseAll", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnCloseAll.Text("Close All");
   btnCloseAll.Font(font);
   btnCloseAll.FontSize(fontSize);
   btnCloseAll.ColorBackground(buttonBgColor);
   btnCloseAll.Color(clrYellow); // Bright yellow text
   ObjectSetInteger(0, "btnCloseAll", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnDeleteOrders.Create(0, "btnDeleteOrders", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnDeleteOrders.Text("Delete Orders");
   btnDeleteOrders.Font(font);
   btnDeleteOrders.FontSize(fontSize);
   btnDeleteOrders.ColorBackground(buttonBgColor);
   btnDeleteOrders.Color(clrAqua); // Bright cyan text
   ObjectSetInteger(0, "btnDeleteOrders", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnCloseProfit.Create(0, "btnCloseProfit", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnCloseProfit.Text("Close Profit");
   btnCloseProfit.Font(font);
   btnCloseProfit.FontSize(fontSize);
   btnCloseProfit.ColorBackground(buttonBgColor);
   btnCloseProfit.Color(clrGold); // Bright gold text
   ObjectSetInteger(0, "btnCloseProfit", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnCloseLoss.Create(0, "btnCloseLoss", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnCloseLoss.Text("Close Loss");
   btnCloseLoss.Font(font);
   btnCloseLoss.FontSize(fontSize);
   btnCloseLoss.ColorBackground(buttonBgColor);
   btnCloseLoss.Color(clrOrange); // Bright orange text
   ObjectSetInteger(0, "btnCloseLoss", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnBuyStop.Create(0, "btnBuyStop", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnBuyStop.Text("Buy Stop");
   btnBuyStop.Font(font);
   btnBuyStop.FontSize(fontSize);
   btnBuyStop.ColorBackground(buttonBgColor);
   btnBuyStop.Color(clrLightPink); // Bright pink text
   ObjectSetInteger(0, "btnBuyStop", OBJPROP_ZORDER, 11);

   y += buttonHeight + buttonSpacing;
   btnSellStop.Create(0, "btnSellStop", 0, x, y, x + buttonWidth, y + buttonHeight);
   btnSellStop.Text("Sell Stop");
   btnSellStop.Font(font);
   btnSellStop.FontSize(fontSize);
   btnSellStop.ColorBackground(buttonBgColor);
   btnSellStop.Color(clrLightCoral); // Bright coral text
   ObjectSetInteger(0, "btnSellStop", OBJPROP_ZORDER, 11);

}

Gestión de eventos (HandleChartEvent)

La función HandleChartEvent procesa las interacciones del usuario con los botones detectando eventos CHARTEVENT_OBJECT_CLICK y asignándolos a acciones de negociación específicas. Comprueba el nombre del objeto sobre el que se ha hecho clic (por ejemplo, btnBuy) y llama a la función correspondiente (por ejemplo, OpenBuyOrder, PlaceBuyStop).

Esta sección garantiza que al pulsar los botones se ejecuten inmediatamente las operaciones, aprovechando el objeto CTrade para realizar órdenes de forma fiable. Contribuye al objetivo de desarrollo al permitir una velocidad casi algorítmica (<500 ms) en las operaciones manuales, lo cual es fundamental para el trading basado en noticias (por ejemplo, reaccionar ante acontecimientos de gran impacto) y el scalping (por ejemplo, entradas y salidas rápidas de posiciones). El enfoque basado en eventos se integra a la perfección con los datos en tiempo real del EA (noticias, indicadores, IA), lo que permite a los traders actuar al instante en función de la información obtenida, respaldando así el paradigma de la «inteligencia aumentada».

void HandleChartEvent(const int id, const string &sparam)
{
   if(id == CHARTEVENT_OBJECT_CLICK)
   {
      if(sparam == btnBuy.Name())
         OpenBuyOrder();
      else if(sparam == btnSell.Name())
         OpenSellOrder();
      else if(sparam == btnCloseAll.Name())
         CloseAllPositions();
      else if(sparam == btnDeleteOrders.Name())
         DeleteAllPendingOrders();
      else if(sparam == btnCloseProfit.Name())
         CloseProfitablePositions();
      else if(sparam == btnCloseLoss.Name())
        CloseLosingPositions();
      else if(sparam == btnBuyStop.Name())
         PlaceBuyStop();
      else if(sparam == btnSellStop.Name())
         PlaceSellStop();

   }

}

En conjunto, estas secciones contribuyen al objetivo de crear una interfaz de Quick Trade Buttons que mejore el trading manual dentro del EA «News Headline». La declaración de la clase ofrece una estructura modular y reutilizable, lo que garantiza una fácil integración y mantenimiento. La función Init configura el entorno de negociación y la interfaz gráfica de usuario, lo que permite empezar a utilizarla de inmediato. La función CreateButtons ofrece un panel visualmente intuitivo, lo que reduce la carga cognitiva en momentos de volatilidad en los mercados. La función HandleChartEvent garantiza una ejecución rápida y fiable de las operaciones, lo que responde a la necesidad de rapidez que exigen el trading basado en noticias y el scalping. Juntos, crean una interfaz centrada en los gráficos e integrada con datos que permite a los traders combinar el criterio humano con la gestión automatizada del riesgo, haciendo realidad el concepto de inteligencia aumentada.


Integración de CTradingButtons en el asesor experto (EA) News Headline

La integración del archivo de encabezado TradingButtons.mqh en el EA News Headline permite crear un sistema de negociación híbrido que combina el control manual a través de los Quick Trade Buttons con estrategias automatizadas basadas en noticias, datos del calendario económico en tiempo real, fuentes de noticias de Alpha Vantage, información de indicadores técnicos y análisis basados en inteligencia artificial. A continuación, analizo tres secciones clave del EA «News Headline» responsables de esta integración —parámetros de entrada, OnInit y OnChartEvent— y explico cómo funciona cada una de ellas y cómo contribuyen al objetivo de desarrollo de crear una herramienta de trading fluida y con inteligencia aumentada.

Entradas del usuario (inputs)

El grupo de entradas «Botones de operaciones manuales» define los parámetros configurables de los Quick Trade Buttons, lo que permite a los traders personalizar el comportamiento de las operaciones manuales ejecutadas a través de la clase CTradingButtons. Estos parámetros incluyen ButtonLotSize (por defecto 0,1), ButtonStopLoss (50 pips), ButtonTakeProfit (100 pips), StopOrderDistancePips (8 pips) y RiskRewardRatio (2,0). Estos parámetros se pasan a la instancia de CTradingButtons para establecer las reglas de gestión de riesgos de las acciones de los botones (por ejemplo, Buy, Sell, Buy Stop).

Al introducir estos datos, el EA garantiza que las operaciones manuales se ajusten a los límites de riesgo predefinidos, manteniendo la coherencia con la lógica de negociación automatizada (que utiliza parámetros independientes, como InpOrderVolume). Esta sección contribuye al objetivo de desarrollo al permitir a los traders adaptar los Quick Trade Buttons a sus preferencias de riesgo, garantizando una ejecución disciplinada durante episodios de volatilidad provocados por noticias y en operaciones de scalping, al tiempo que se integra a la perfección en el marco general basado en datos del EA.

input group "Manual Trading Buttons"
input double ButtonLotSize = 0.1;               // Lot size for manual trades
input int ButtonStopLoss = 50;                  // Stop Loss in pips (market orders)
input int ButtonTakeProfit = 100;               // Take Profit in pips (market orders)
input int StopOrderDistancePips = 8;            // Distance for stop orders in pips
input double RiskRewardRatio = 2.0;             // Risk-reward ratio for stop orders

OnInit

La función OnInit inicializa el EA, incluida la integración de la clase CTradingButtons. Declara una instancia global de CTradingButtons (buttonsEA) y asigna los parámetros de entrada definidos por el usuario a sus miembros públicos (por ejemplo, buttonsEA.LotSize = ButtonLotSize). La llamada a buttonsEA.Init() activa la creación del panel de botones y de los propios botones, colocándolos en la parte superior izquierda del gráfico (x=0, y=40) para evitar que se superpongan con los lienzos de noticias e indicadores (que comienzan en y=160, según lo establecido por InpTopOffset).

La función también inicializa otros componentes de EA, como los lienzos de eventos económicos, noticias, indicadores y análisis de IA, lo que garantiza que el panel de botones se integre a la perfección con estas visualizaciones. Un número mágico único (123456 para las operaciones manuales frente a 888888 para las operaciones automatizadas) evita conflictos entre las órdenes manuales y las automatizadas. Esta sección contribuye al objetivo de desarrollo al integrar los Quick Trade Buttons en el proceso de inicialización del EA, lo que garantiza un espacio de trabajo unificado en el que los traders pueden acceder a controles manuales junto con datos en tiempo real, mejorando así la rapidez y la concentración durante el trading de noticias y el scalping.

CTradingButtons buttonsEA;

int OnInit()

{
   ChartSetInteger(0, CHART_FOREGROUND, 0); // Ensure objects are visible
   lastReloadDay = lastNewsReload = 0;
   ArrayResize(highArr, 0);
   ArrayResize(medArr, 0);
   ArrayResize(lowArr, 0);
   canvW = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS);

   // Initialize TradingButtons

   buttonsEA.LotSize = ButtonLotSize;
   buttonsEA.StopLoss = ButtonStopLoss;
   buttonsEA.TakeProfit = ButtonTakeProfit;
   buttonsEA.StopOrderDistancePips = StopOrderDistancePips;
   buttonsEA.RiskRewardRatio = RiskRewardRatio;
   buttonsEA.Init();

   // Initialize News Headline EA

   trade.SetExpertMagicNumber(888888);
   trade.SetDeviationInPoints(10);
   trade.SetTypeFillingBySymbol(_Symbol);
   eventsCanvas.CreateBitmapLabel("EvC", 0, 0, canvW, 4 * lineH, COLOR_FORMAT_ARGB_RAW);
   eventsCanvas.TransparentLevelSet(150);
   newsCanvas.CreateBitmapLabel("NwC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
   newsCanvas.TransparentLevelSet(0);

   if(InpSeparateLanes)

   {

      rsiCanvas.CreateBitmapLabel("RsiC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
      rsiCanvas.TransparentLevelSet(120);
      stochCanvas.CreateBitmapLabel("StoC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
      stochCanvas.TransparentLevelSet(120);
      macdCanvas.CreateBitmapLabel("MacC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
      macdCanvas.TransparentLevelSet(120)
      cciCanvas.CreateBitmapLabel("CciC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
     cciCanvas.TransparentLevelSet(120);
   }
   else

   {
      combinedCanvas.CreateBitmapLabel("AllC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
      combinedCanvas.TransparentLevelSet(120);
      SetCanvas("AllC", InpPositionTop, InpTopOffset + 4 * lineH);
      combinedCanvas.FontSizeSet(-120);
      combinedCanvas.TextOut(5, (lineH - combinedCanvas.TextHeight("Indicator Insights:")) / 2,
                           "Indicator Insights:", XRGB(200, 200, 255), ALIGN_LEFT);
      combinedCanvas.Update(true);
   }

   if(ShowAIInsights)
   {
      aiCanvas.CreateBitmapLabel("AiC", 0, 0, canvW, lineH, COLOR_FORMAT_ARGB_RAW);
      aiCanvas.TransparentLevelSet(120);
      offAI = canvW;
      SetCanvas("AiC", InpPositionTop, InpTopOffset + (InpSeparateLanes ? 8 : 5) * lineH);
      aiCanvas.TextOut(offAI, (lineH - aiCanvas.TextHeight(latestAIInsight)) / 2,
                       latestAIInsight, XRGB(180, 220, 255), ALIGN_LEFT);
      aiCanvas.Update(true);

   }

   ReloadEvents();
   FetchAlphaVantageNews();
   FetchAIInsights();

   offHigh = offMed = offLow = offNews = canvW;
   offRSI = offStoch = offMACD = offCCI = offCombined = canvW;

   SetCanvas("EvC", InpPositionTop, InpTopOffset);
   SetCanvas("NwC", InpPositionTop, InpTopOffset + 3 * lineH);
   if(InpSeparateLanes)

   {

      SetCanvas("RsiC", InpPositionTop, InpTopOffset + 4 * lineH);
      SetCanvas("StoC", InpPositionTop, InpTopOffset + 5 * lineH);
      SetCanvas("MacC", InpPositionTop, InpTopOffset + 6 * lineH);
      SetCanvas("CciC", InpPositionTop, InpTopOffset + 7 * lineH);

   }

   newsCanvas.TextOut(offNews, (lineH - newsCanvas.TextHeight(placeholder)) / 2,
                      placeholder, XRGB(255, 255, 255), ALIGN_LEFT);
   newsCanvas.Update(true);

   EventSetMillisecondTimer(InpTimerMs);
   return INIT_SUCCEEDED;

}

OnChartEvent

La función OnChartEvent gestiona las interacciones del usuario con los Quick Trade Buttons delegando los eventos del gráfico (concretamente CHARTEVENT_OBJECT_CLICK) al método buttonsEA.HandleChartEvent. Este método, definido en TradingButtons.mqh, asocia los clics en los botones a acciones de negociación (por ejemplo, OpenBuyOrder, PlaceBuyStop), lo que garantiza una ejecución rápida (<500 ms) de las operaciones manuales.

Al canalizar los eventos a través de la clase CTradingButtons, esta sección garantiza que las acciones de negociación manuales se procesen de manera eficiente sin interferir en las funciones automatizadas del EA, como las órdenes stop activadas por noticias o las actualizaciones de los indicadores. Esto contribuye al objetivo de desarrollo al proporcionar una interfaz fluida que permite a los traders actuar sobre la base de datos en tiempo real, lo que facilita la sinergia entre el ser humano y la máquina para el trading basado en noticias (por ejemplo, la colocación de órdenes stop antes de acontecimientos de gran impacto) y el scalping (por ejemplo, entradas rápidas en el mercado).

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)

{
   buttonsEA.HandleChartEvent(id, sparam);
}

En conjunto, estas secciones logran la integración de los Quick Trade Buttons en el EA «News Headline», cumpliendo así el objetivo de crear un sistema de trading con inteligencia aumentada. La sección «Configuración del usuario» permite a los traders personalizar los parámetros de riesgo, lo que garantiza que las operaciones manuales se ajusten a sus estrategias y, al mismo tiempo, se mantenga la coherencia con las operaciones automatizadas. La función OnInit integra la clase CTradingButtons en la inicialización del EA, creando un espacio de trabajo unificado en el gráfico donde el panel de botones (en y=40) convive con los paneles de noticias e indicadores (a partir de y=160), lo que mejora la usabilidad y la concentración.

La función OnChartEvent permite una ejecución manual de operaciones rápida y fiable, lo que permite a los traders reaccionar al instante ante los datos en tiempo real, algo fundamental para el trading basado en noticias y el scalping. En conjunto, estas secciones conforman una interfaz centrada en los gráficos e integrada con datos que combina el criterio humano con la eficiencia de la automatización, lo que reduce la latencia en la ejecución y la carga cognitiva en mercados volátiles.


Pruebas

Para evaluar la función «Botones de operación rápida» integrada en el asesor experto (EA) «News Headline», he aplicado el EA a un gráfico de mi par de divisas preferido, el EURAUD, en una cuenta de demostración. Recomiendo encarecidamente utilizar una cuenta de demostración para probar cualquier sistema de trading y garantizar así un entorno sin riesgos. El objetivo de este proceso de pruebas es comprobar si se ha logrado el objetivo de desarrollo de crear una interfaz fluida y centrada en los gráficos que permita ejecutar operaciones manuales rápidas durante eventos noticiosos y sesiones de scalping. Antes de esta presentación final, unas exhaustivas pruebas iterativas nos permitieron perfeccionar el sistema hasta convertirlo en una implementación sólida y fácil de usar.

Aunque aún hay margen para introducir mejoras, como añadir diseños dinámicos de botones u opciones avanzadas de gestión de riesgos, la implementación actual ofrece una base sólida. Sirve como recurso educativo para traders y desarrolladores, ya que ofrece una estructura de código clara, plantillas reutilizables y ejemplos prácticos que se pueden adaptar a otros proyectos. Aunque algunos podrían sugerir incluir un campo de entrada para ajustar los parámetros de negociación en tiempo real, he optado por mantener estos ajustes en el panel de configuración del EA (por ejemplo, ButtonLotSize, ButtonStopLoss) para eliminar los retrasos en situaciones de negociación de alta presión. Un operador prudente debería configurar estos valores de antemano antes de utilizar los Quick Trade Buttons, asegurándose así de centrarse en ejecuciones rápidas con un solo clic.

Por favor, revise la imagen que se muestra a continuación, en la que se presentan los resultados satisfactorios de las pruebas realizadas con todos los Quick Trade Buttons (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop) en el par de divisas EURAUD utilizando una cuenta de demostración. Estos resultados demuestran el perfecto funcionamiento de los botones, con una ejecución rápida y una aplicación precisa de los parámetros de riesgo preestablecidos, lo que confirma que el asesor experto (EA) «News Headline» está listo para su implementación en condiciones reales.

Presentación de un EA News Headline integrado con interfaz de botones de trading manual.

Prueba de los Quick Trade Buttons en el gráfico del EURAUD

Las pruebas confirman la capacidad del EA para integrar el trading manual con noticias en tiempo real, indicadores y análisis basados en inteligencia artificial, lo que garantiza una interfaz sólida y centrada en los gráficos para el trading basado en noticias y el scalping. Aunque la implementación actual ya está lista para su uso en producción, las mejoras continuas, como los ajustes de riesgo adaptativos o las funciones adicionales de los botones, podrían optimizar aún más el rendimiento. Estos resultados sitúan al EA como una herramienta fiable para los traders, preparada para ofrecer inteligencia aumentada en condiciones reales de mercado.


Conclusión

La integración de sistemas de negociación totalmente autónomos con la intervención del operador en tiempo real es perfectamente factible gracias a interfaces intuitivas como los Quick Trade Buttons del asesor experto «News Headline». Estos botones permiten a los traders participar de forma manual en procesos que suelen estar controlados por algoritmos, lo que fomenta una colaboración entre la intuición humana y la lógica automatizada. Para maximizar la eficiencia, la mayoría de los parámetros, como el tamaño de la posición, el stop loss y el take profit, se integran mediante programación en la lógica de los botones, lo que elimina los retrasos en situaciones de negociación de alta presión.

Esto permite a los traders centrarse exclusivamente en hacer clic para ejecutar operaciones, lo que mejora la rapidez y la precisión. Unos números mágicos únicos garantizan que el EA distinga entre sus propias posiciones y las intervenciones manuales, evitando así conflictos. Este enfoque de inteligencia aumentada, aunque no se basa íntegramente en la inteligencia artificial, combina eficazmente la toma de decisiones humana con la precisión algorítmica, creando una base sólida para las estrategias de negociación híbridas.

Esta herramienta resulta especialmente útil en situaciones exigentes, como el scalping y el trading de noticias, en las que la rapidez y la adaptabilidad son fundamentales. El botón «Cerrar todo» protege el capital al cerrar rápidamente todas las posiciones abiertas ante acontecimientos inesperados del mercado, mientras que los botones «Cerrar con ganancias» y «Cerrar con pérdidas» permiten a los traders asegurar las ganancias o limitar las pérdidas con un solo clic, lo que agiliza la gestión de las posiciones. A diferencia de las herramientas de trading integradas de MetaTrader 5, los Quick Trade Buttons incorporan parámetros de gestión de riesgos preestablecidos, lo que fomenta prácticas de negociación disciplinadas entre los traders de todos los niveles de experiencia.

Estos parámetros se pueden personalizar a través de la configuración de entrada del EA (por ejemplo, ButtonLotSize, ButtonStopLoss), lo que permite a los traders adaptar el riesgo al tamaño de su cuenta y a su tolerancia al riesgo. Se adjunta una recopilación de las principales lecciones y conclusiones extraídas de este proceso de desarrollo, que ofrece recursos valiosos para traders y desarrolladores. Te invito a participar en el debate compartiendo tus preguntas y experiencias. ¡Mantente atento a las próximas novedades, ya que seguimos perfeccionando esta herramienta de trading revolucionaria!

Lecciones clave

Lección Descripción
Diseño de clases modulares Utilice la programación orientada a objetos (por ejemplo, la clase CTradingButtons) para encapsular la lógica de los botones y la ejecución de las operaciones, lo que garantiza la reutilización del código y una fácil integración en otros asesores expertos (EA).
Gestión de riesgos preestablecida Integre parámetros de riesgo en la lógica de los botones para eliminar los retrasos en la entrada manual, lo que permite una ejecución rápida durante eventos noticiosos volátiles y operaciones de scalping.
Números mágicos únicos Asigne números mágicos distintos para evitar conflictos entre las operaciones manuales y algorítmicas, garantizando así un seguimiento claro de las posiciones.
Interfaz centrada en gráficos Los botones de posición y la visualización de datos en el gráfico mediante CCanvas reducen la carga cognitiva y ayudan a los traders a mantenerse concentrados en situaciones de alta presión.
Gestión eficiente de eventos Utilice OnChartEvent con CHARTEVENT_OBJECT_CLICK para asignar clics de botón a funciones de negociación, logrando una ejecución inferior a 500 ms para scalping y negociación de noticias.
Claridad visual Utilice colores de texto llamativos y un orden Z alto (por ejemplo, 11 para los botones) para garantizar que los botones sean fácilmente identificables y accesibles en el gráfico.
Personalización de la entrada del usuario Permitir a los traders establecer parámetros de riesgo mediante las entradas del EA para mayor flexibilidad sin comprometer la velocidad de ejecución.
Manejo de errores Implemente comprobaciones de validación (por ejemplo, SYMBOL_TRADE_MODE, tamaño del lote frente a SYMBOL_VOLUME_MIN/MAX) en las funciones de negociación para evitar órdenes fallidas y registrar errores para la depuración.
Integración de datos fluida Integre datos en tiempo real (calendario económico, noticias de Alpha Vantage, indicadores) con botones que utilicen lienzos separados para crear un espacio de trabajo unificado que permita tomar decisiones de trading manuales informadas.
Sinergia de trading híbrido Diseñar botones que complementen las estrategias automatizadas, fomentando la colaboración entre humanos y máquinas para la inteligencia aumentada.
Posicionamiento del lienzo Utilice coordenadas Y y órdenes Z distintos (por ejemplo, 10 para el panel, 0 para las noticias) para evitar la superposición y garantizar una visibilidad clara de todos los componentes de EA.
Actualizaciones dinámicas de datos Aproveche OnTimer para actualizar noticias, indicadores y análisis de IA (por ejemplo, cada 20 ms mediante InpTimerMs) y mantener informados a los traders sin intervención manual.
Pruebas con la cuenta de demostración Prueba el EA en una cuenta de demostración para comprobar el funcionamiento de los botones y la configuración de riesgo en un entorno sin riesgos antes de su implementación en vivo.
Escalabilidad para futuras mejoras Estructura el EA con funciones modulares para facilitar la incorporación de nuevos botones o características, como ajustes de riesgo adaptativos.
Optimización del rendimiento Normalice los precios (por ejemplo, con NormalizeDouble) y establezca una tolerancia al deslizamiento (por ejemplo, SetDeviationInPoints(10)) para garantizar una ejecución fiable de las operaciones en mercados volátiles.
Formación para inversores Proporcione documentación y registros claros (por ejemplo, Print(«Orden de compra manual enviada»)) para informar a los traders sobre el funcionamiento de los botones y los resultados de las operaciones, mejorando así la usabilidad.
Balance automatizado frente a balance manual Separa la lógica de negociación manual (basada en botones) y la automática (basada en noticias) con ajustes distintos (por ejemplo, «InpOrderVolume» frente a «ButtonLotSize») para mantener la flexibilidad y el control.
Integración del sistema de alertas Combina las acciones de los botones con alertas de eventos (por ejemplo, InpAlertMinutesBefore=5) para orientar a los traders sobre cuándo utilizar botones como «Buy Stop» antes de que se publiquen noticias de gran impacto.
Reutilización del código Diseña el encabezado de CTradingButtons como un módulo independiente para su uso en otros EA, lo que reducirá el tiempo de desarrollo en futuros proyectos que requieran interfaces de negociación manual.
Refinamiento iterativo Realice pruebas iterativas (por ejemplo, en la cuenta demo EURAUD) para ajustar la capacidad de respuesta de los botones y los parámetros de riesgo, asegurándose de que el EA satisfaga las exigencias del mercado real antes de su uso en condiciones reales.


Archivos adjuntos

Nombre del archivo Versión Descripción
TradingButtons.mqh 1.0 Archivo de cabecera que define la clase CTradingButtons, la cual encapsula la lógica de ocho Quick Trade Buttons (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop). Se encarga de la creación de botones, el diseño (por ejemplo, colores llamativos para una identificación rápida) y la ejecución de operaciones con parámetros de riesgo preestablecidos (por ejemplo, tamaño del lote = 0,1, stop loss = 50 pips). Este diseño modular garantiza la reutilización y una integración perfecta con la EA para el trading manual en mercados volátiles.
News_Headline_EA.mq5 1.12 Archivo EA principal que integra los Quick Trade Buttons con datos del calendario económico en tiempo real, fuentes de noticias de Alpha Vantage, indicadores técnicos (RSI, estocástico, MACD, CCI) y análisis basados en inteligencia artificial. Permite gestionar entradas manuales de operaciones, órdenes stop automáticas basadas en noticias y elementos mostrados en el gráfico (por ejemplo, noticias en y=398, indicadores en y=414-462). Utiliza números mágicos distintos (123456 para el modo manual y 888888 para el automático) con el fin de evitar conflictos entre operaciones, lo que permite el uso de inteligencia aumentada para el trading basado en noticias y el scalping.

Para integrar el canal de análisis de IA en el asesor experto (EA) News Headline, consulta el artículo De novato a experto: Noticias animadas utilizando MQL5 (IV) Análisis de mercado sobre modelos de IA alojados localmente. Este recurso ofrece una guía detallada sobre los scripts de Python necesarios para generar análisis de mercado basados en inteligencia artificial y explica cómo integrarlos en el EA.

Volver al índice

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

Archivos adjuntos |
TradingButtons.mqh (13.39 KB)
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.
Los componentes de Vista y Controlador para tablas en el paradigma MVC de MQL5: elementos redimensionables Los componentes de Vista y Controlador para tablas en el paradigma MVC de MQL5: elementos redimensionables
En este artículo, añadiremos la funcionalidad de cambiar el tamaño de los controles arrastrando los bordes y las esquinas del elemento con el ratón.
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.
Creación de un sistema de trading (Parte 1): Enfoque cuantitativo Creación de un sistema de trading (Parte 1): Enfoque cuantitativo
Muchos operadores evalúan las estrategias basándose en el rendimiento a corto plazo, abandonando a menudo los sistemas rentables demasiado pronto. Sin embargo, la rentabilidad a largo plazo depende de una expectativa positiva mediante una tasa de aciertos y una relación beneficio/riesgo optimizadas, junto con una gestión disciplinada del tamaño de las posiciones. Estos principios pueden validarse mediante simulación de Monte Carlo en Python con métricas de prueba retrospectiva para evaluar si una estrategia es robusta o si es probable que falle con el tiempo.