Do iniciante ao especialista: Criação de um EA animado para notícias em MQL5 (VIII): botões de negociação rápida para trading de notícias
Sumário:
- Introdução
- Desenvolvimento da classe CTradingButtons
- Integração da classe CTradingButtons ao EA "Manchetes de Notícias"
- Testes
- Conclusão
- Principais lições
- Aplicações
Introdução
Neste artigo, apresentamos a interface de botões de negociação rápida no EA "Manchetes de Notícias", desenvolvida para combinar a precisão algorítmica com a tomada de decisão humana no trading de notícias e no scalping. Embora o EA seja excelente na execução automática de negociações, anteriormente ele limitava a intervenção manual em tempo real durante eventos de notícias de alta volatilidade, quando o julgamento humano é essencial para a análise contextual e para o desenvolvimento de estratégias mais refinadas.
O painel de botões de negociação rápida resolve esse problema integrando uma interface compacta e visualmente clara diretamente ao gráfico, permitindo que os traders realizem operações rápidas (Buy, Sell, Close All, Delete Orders e muito mais) com base em dados do calendário econômico em tempo real, feeds de notícias da Alpha Vantage, dados analíticos de indicadores (RSI, Stochastic, MACD, CCI) e análises baseadas em IA. Essa abordagem híbrida de "inteligência aumentada" permite que os traders combinem a velocidade das máquinas com o critério estratégico, otimizando os resultados em mercados voláteis e em cenários dinâmicos de scalping.
Comparação: fluxo de trabalho atual do EA em comparação com o fluxo de trabalho aprimorado com o uso de botões de negociação rápida
| Fluxo de funcionamento atual | Fluxo de funcionamento aprimorado |
|---|---|
| Monitoramento passivo: O EA executa operações automáticas com base em regras predefinidas; os traders as acompanham sem intervenção direta. | Gestão híbrida ativa: Os traders usam botões de negociação rápida para sobrepor ou complementar a automação com ações de um clique para ordens a mercado ou ordens pendentes. |
| Exige navegação pelo terminal: A execução manual de operações exige acessar a janela de ordens ou a barra de ferramentas do MetaTrader 5, o que prejudica o foco no gráfico. | Execução centrada no gráfico: Todas as operações de trading ficam disponíveis diretamente no gráfico por meio de um painel compacto de botões, permitindo manter o foco. |
| Ciclo desconectado entre dados e ação: Notícias, indicadores e análises de IA são exibidos, mas exigem ações externas, o que atrasa a execução. | Pipeline de ações integrado: Visualize notícias ou análises em tempo real → clique no botão de negociação rápida → execute ordens instantaneamente. |
| Alta carga cognitiva: Alternar entre a análise gráfica e as janelas do terminal aumenta a carga mental em períodos de volatilidade. | Foco otimizado: Um único espaço de trabalho com gráficos, botões e dados reduz a carga cognitiva e a latência. |
| Rigidez algorítmica: Estratégias predefinidas não conseguem se adaptar a anomalias inesperadas do mercado. | Interação homem-máquina: Os botões de negociação rápida permitem que o trader adapte as ações a diferentes situações a seu critério, aumentando a flexibilidade. |
| Execução manual lenta: Operações realizadas manualmente pelo terminal levam mais de 3000 ms+ devido a atrasos de navegação e entrada de dados. | Velocidade próxima à algorítmica: Cliques em botões pré-configurados permitem executar operações em menos de 500 ms com parâmetros de risco aplicados automaticamente. |
A integração da interface de botões de negociação rápida ao EA "Manchetes de Notícias" é plenamente viável, pois ele utiliza a classe CButton no MetaTrader 5 para controle interativo, CTrade para execução eficiente de operações e CCanvas para um painel de monitoramento intuitivo. A interface proposta terá oito botões (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop) com parâmetros de gestão de risco calculados antecipadamente, permitindo executar operações de forma rápida e disciplinada durante eventos de notícias de alta volatilidade e cenários dinâmicos de scalping.
A gestão de riscos calculada antecipadamente aumenta a eficiência ao automatizar os cálculos de Stop Loss e Take Profit, validados em conformidade com as restrições da corretora (por exemplo, SYMBOL_VOLUME_MIN/MAX), minimizando erros quando for necessário agir rapidamente e mantendo uma relação risco-retorno consistente. Essa sinergia entre velocidade, precisão e integração de dados em tempo real (calendário econômico, feeds de notícias da Alpha Vantage, indicadores RSI/Stochastic/MACD/CCI e análises com uso de IA) faz dos botões de negociação rápida uma poderosa ferramenta de "inteligência aumentada", permitindo que os traders combinem o discernimento humano com a eficiência das máquinas em condições de mercado instáveis.
O plano de desenvolvimento consiste em três etapas estratégicas voltadas à criação de um produto confiável e fácil de usar.
Etapa 1:
A implementação do cabeçalho da classe incluirá a criação da classe CTradingButtons em um arquivo de cabeçalho dedicado (TradingButtons.mqh). Essa classe definirá a criação dos botões, o estilo visual e a lógica de trading com parâmetros de risco integrados, incluindo validação dos parâmetros de entrada (por exemplo, verificação de SYMBOL_TRADE_MODE) e tratamento de erros para garantir confiabilidade. Para facilitar o uso do painel, o painel incluirá o rótulo "Botões de negociação rápida".
Etapa 2:
A integração com o EA permitirá incorporar a classe ao EA "Manchetes de Notícias", inicializá-la em OnInit com parâmetros de entrada do usuário, vincular os cliques nos botões a OnChartEvent e posicionar o painel de modo que ele complemente as áreas de canvas de notícias. As operações manuais usarão um número mágico separado para evitar conflitos com as operações automáticas (por exemplo, ordens stop 3 minutos antes do evento).
Etapa 3:
Os testes em gráficos em tempo real permitirão verificar a interface em uma conta demo (por exemplo, EURUSD, gráfico M1), avaliar a responsividade dos botões, a precisão dos parâmetros de risco e a integração com dados de notícias, indicadores e inteligência artificial durante a simulação de eventos de notícias e sessões de scalping. O teste de usabilidade ajudará a avaliar a clareza da interface e a velocidade de resposta. Essa abordagem em etapas garante que os botões de negociação rápida ofereçam trading fluido baseado em dados.

Diagrama das relações entre as etapas de desenvolvimento
Observe a imagem abaixo para ver uma representação visual da nossa tarefa.

Objetivo ao final da discussão
Ao final desta discussão, pretendemos alcançar os resultados mostrados no gráfico acima, demonstrando a implementação bem-sucedida dos botões de negociação rápida incorporados ao EA de notícias no gráfico EURAUD. Na próxima seção, descreveremos duas etapas-chave da implementação: primeiro, o desenvolvimento do cabeçalho dos botões de negociação rápida para criar uma interface modular e fácil de usar; em segundo lugar, a integração desse cabeçalho ao EA "Manchetes de Notícias" para permitir trading manual fluido em paralelo às estratégias automatizadas. Essas etapas culminam em testes abrangentes, cujos resultados confirmam a eficácia do sistema para trading de notícias e scalping.
Desenvolvimento da classe CTradingButtons
O arquivo de cabeçalho TradingButtons.mqh define a classe CTradingButtons, que é central para a implementação da interface de botões de negociação rápida do EA "Manchetes de Notícias". Essa classe oferece uma interface intuitiva baseada no gráfico para trading manual, permitindo executar operações rapidamente e gerenciar posições no trading de notícias e no scalping. A seguir, divido o cabeçalho em quatro seções principais: declaração da classe, inicialização (Init), criação dos botões (CreateButtons) e tratamento de eventos (HandleChartEvent), explicando como cada uma funciona e contribui para o objetivo de desenvolvimento: criar um painel de trading eficiente e intuitivo, integrado a dados em tempo real para oferecer recursos avançados.
Declaração da classe
A seção de declaração da classe declara a classe CTradingButtons, definindo seus membros privados e públicos para gerenciar o painel de botões e as operações de trading. Os membros privados incluem objetos CButton para cada um dos oito botões (Buy, Sell, Close All etc.), um objeto CCanvas para o painel, um objeto CTrade para executar operações de trading e variáveis para as dimensões dos botões e o espaçamento entre eles.
Os membros públicos fornecem parâmetros de risco configuráveis (por exemplo, LotSize, StopLoss, TakeProfit), e o construtor define valores padrão (por exemplo, tamanho do lote=0,1, Stop Loss=50 pips). Essa estrutura oferece uma base modular para os botões de negociação rápida, encapsulando a interface gráfica e a lógica de trading. Ela contribui para o objetivo de desenvolvimento ao fornecer uma interface compacta e reutilizável, que pode ser facilmente integrada ao EA, com configurações de risco predefinidas para garantir trading disciplinado durante eventos de notícias voláteis e sessões de scalping.
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) {} };
Inicialização (Init)
A função Init inicializa os componentes de trading e a interface gráfica quando o EA é carregado. Ela atribui ao objeto CTrade um número mágico separado (123456).
para diferenciar as operações realizadas manualmente, define um desvio de 10 pontos para tolerância ao slippage e usa o tipo de preenchimento de ordens conforme o símbolo (SetTypeFillingBySymbol). Em seguida, chama CreateButtonPanel e CreateButtons para exibir o painel e os botões no gráfico. Esta seção é essencial para configurar a interface e garantir a confiabilidade da execução das operações. Ela contribui para o objetivo de desenvolvimento ao oferecer uma inicialização fluida, permitindo que os botões de negociação rápida fiquem prontos para uso imediato, com parâmetros de trading consistentes que dão suporte à execução rápida no trading de notícias (por exemplo, colocação de ordens stop antes dos eventos) e no scalping (por exemplo, ordens a mercado rápidas).
void Init() { trade.SetExpertMagicNumber(123456); trade.SetDeviationInPoints(10); trade.SetTypeFillingBySymbol(_Symbol); CreateButtonPanel(); CreateButtons(); }
Criação dos botões (CreateButtons)
A função CreateButtons cria oito botões, posicionando-os verticalmente no painel (começando em y=160, x=10), com tamanho fixo (100x30 pixels) e espaçamento (10 pixels). Cada botão é criado usando a classe CButton, recebe um nome exclusivo (por exemplo, "btnBuy"), é configurado com a fonte Calibri (tamanho 8) e tem fundo preto com cores de texto vivas (por exemplo, verde-limão para compra, vermelho para venda) para identificação rápida. A ordem Z dos botões é 11, para que eles fiquem acima do painel (ordem z=10).
Esta seção é essencial para criar uma interface intuitiva, permitindo que os traders reconheçam os botões instantaneamente e interajam com eles em situações complexas. Ela apoia o objetivo de desenvolvimento ao fornecer um painel de controle centrado no gráfico e fácil de usar, que aumenta a velocidade e reduz a carga cognitiva no trading de notícias e no 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); }
Tratamento de eventos (HandleChartEvent)
A função HandleChartEvent processa a interação do usuário com os botões, detectando eventos CHARTEVENT_OBJECT_CLICK e associando-os a ações de trading específicas. Ela verifica o nome do objeto selecionado (por exemplo, btnBuy) e chama a função correspondente (por exemplo, OpenBuyOrder, PlaceBuyStop).
Esta seção garante que o clique em um botão leve à execução imediata da operação, usando o objeto CTrade para o envio confiável de ordens. Isso contribui para o objetivo de desenvolvimento ao oferecer velocidade próxima à algorítmica (<500 ms) para operações manuais, o que é importante para o trading de notícias (por exemplo, para reagir a eventos importantes) e para o scalping (por exemplo, para entrada/saída rápida de posições). A abordagem orientada a eventos integra-se facilmente aos dados em tempo real do EA (notícias, indicadores, IA), permitindo que os traders acessem informações instantaneamente e sustentando o paradigma da "inteligência 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(); } }
Em conjunto, essas seções contribuem para o objetivo de criar uma interface com botões de negociação rápida que simplifica o trading manual no EA "Manchetes de Notícias". A declaração da classe fornece uma estrutura modular e reutilizável, facilitando a integração e a manutenção. A função Init configura o ambiente de trading e a interface gráfica do usuário, deixando a interface pronta para uso imediato. A função CreateButtons oferece um painel de controle intuitivo, reduzindo a carga cognitiva durante mercados voláteis. A função HandleChartEvent garante execução rápida e confiável das operações, atendendo aos requisitos de velocidade do trading de notícias e do scalping. Juntas, elas criam uma interface centrada no gráfico e integrada a dados, permitindo que os traders combinem o discernimento humano com a gestão automatizada de riscos, materializando o conceito de inteligência aumentada.
Integração de CTradingButtons no EA 'Manchetes de Notícias'
A integração do arquivo de cabeçalho TradingButtons.mqh ao EA "Manchetes de Notícias" forma um sistema híbrido de trading que combina operações manuais por meio de botões de negociação rápida com estratégias automatizadas baseadas em notícias, dados do calendário econômico em tempo real, feeds de notícias da Alpha Vantage, leituras de indicadores técnicos e análises baseadas em inteligência artificial. A seguir, abordarei três seções principais do EA "Manchetes de Notícias" responsáveis por essa integração: "Parâmetros de entrada do usuário", "OnInit" e "OnChartEvent", explicando como cada uma funciona e contribui para o objetivo de desenvolvimento: criar uma ferramenta integrada de trading com inteligência aumentada.
Parâmetros de entrada do usuário (User Inputs)
O grupo de entradas Botões de trading manual define parâmetros configuráveis para os botões de negociação rápida, permitindo que os traders ajustem o comportamento das operações manuais por meio da classe CTradingButtons. Esses parâmetros de entrada incluem o valor ButtonLotSize (por padrão, 0.1), o valor ButtonStopLoss (50 pips), o valor ButtonTakeProfit (100 pips), o valor StopOrderDistancePips (8 pips) e o valor RiskRewardRatio (2.0). Esses parâmetros são passados à instância de CTradingButtons para definir as regras de gestão de riscos das ações disparadas pelos botões (por exemplo, Buy, Sell, Buy Stop).
Ao disponibilizar esses parâmetros de entrada, o EA garante que as operações manuais respeitem limites de risco predefinidos, mantendo a consistência com a lógica de trading automático (que usa parâmetros separados, como InpOrderVolume). Esta seção contribui para o objetivo de desenvolvimento ao permitir que os traders adaptem os botões de negociação rápida às suas preferências de risco, garantindo execução disciplinada durante eventos de notícias voláteis e no scalping, além de se integrar facilmente ao ambiente mais amplo do EA orientado por dados.
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
A função OnInit inicializa o EA e inclui a integração da classe CTradingButtons. Ela declara uma instância global de CTradingButtons (buttonsEA) e atribui os parâmetros de entrada definidos pelo usuário aos seus membros públicos (por exemplo, buttonsEA.LotSize = ButtonLotSize). A chamada buttonsEA.Init() inicia a criação do painel e dos botões, posicionando-os no canto superior esquerdo do gráfico (x=0, y=40), para evitar sobreposição com as notícias e as áreas de canvas dos indicadores (a partir de y=160, conforme definido pela função InpTopOffset).
Essa função também inicializa outros componentes do EA, como os painéis de eventos econômicos, notícias, indicadores e análises com IA, garantindo uma integração consistente do painel de botões com esses elementos de exibição. O número mágico separado (123456 para operações manuais contra 888888 para operações automáticas) evita conflitos entre ordens manuais e automáticas. Esta seção contribui para o objetivo de desenvolvimento ao incorporar os botões de negociação rápida à inicialização do EA, oferecendo um espaço de trabalho unificado no qual os traders podem acessar o controle manual em paralelo aos dados em tempo real, aumentando a velocidade e o foco durante o trading de notícias e o 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
A função OnChartEvent gerencia a interação do usuário com os botões de negociação rápida, delegando os eventos do gráfico (em particular, CHARTEVENT_OBJECT_CLICK) ao método buttonsEA.HandleChartEvent. Esse método, definido em TradingButtons.mqh, associa cliques nos botões a ações de trading (por exemplo, OpenBuyOrder, PlaceBuyStop), garantindo execução rápida (<500 ms) das operações manuais.
Ao rotear os eventos pela classe CTradingButtons, esta seção garante que as ações de trading executadas manualmente sejam processadas com eficiência, sem prejudicar o funcionamento das funções automatizadas do EA, como ordens stop baseadas em eventos de notícias ou atualizações dos indicadores. Isso contribui para o objetivo de desenvolvimento ao oferecer aos traders uma interface unificada para operar com dados em tempo real, favorecendo a sinergia homem-máquina no trading de notícias (por exemplo, colocação de ordens stop antes de eventos importantes) e no scalping (por exemplo, entradas rápidas no mercado).
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { buttonsEA.HandleChartEvent(id, sparam); }
Em conjunto, essas seções garantem a integração dos botões de negociação rápida ao EA "Manchetes de Notícias", permitindo atingir o objetivo de criar um sistema de trading com inteligência aumentada. A seção "Parâmetros de entrada do usuário" permite que os traders configurem os parâmetros de risco, garantindo que as operações manuais estejam alinhadas às suas estratégias, mantendo ao mesmo tempo consistência com as operações automáticas. A função OnInit incorpora a classe CTradingButtons à inicialização do EA, criando uma área de trabalho unificada no gráfico, na qual o painel de botões (em y=40) fica ao lado dos painéis de notícias e indicadores (a partir de y=160), melhorando a usabilidade e o foco.
A função OnChartEvent garante a execução rápida e confiável das operações manuais, permitindo que os traders reajam instantaneamente aos dados em tempo real, algo essencial para o trading de notícias e o scalping. Juntas, essas seções criam uma interface centrada no gráfico e integrada a dados, que combina o critério humano com a eficiência automatizada, reduzindo a latência de execução e a carga cognitiva em mercados voláteis.
Testes
Para avaliar a funcionalidade dos botões de negociação rápida incorporados ao EA "Manchetes de Notícias", anexei o EA ao gráfico do meu par de moedas preferido, EURAUD, em uma conta demo. Recomendo fortemente usar uma conta demo para testar qualquer sistema de trading, a fim de manter um ambiente sem risco financeiro real. O objetivo destes testes é verificar se o objetivo de desenvolvimento foi alcançado: criar uma interface fluida e centrada no gráfico para trading manual rápido durante eventos de notícias e sessões de scalping. Antes desta apresentação final, realizamos amplos testes iterativos, que nos permitiram transformar o sistema em uma solução confiável e fácil de usar.
Embora ainda existam possibilidades de melhoria, como adicionar posicionamento dinâmico dos botões ou recursos avançados de gestão de riscos, a implementação atual oferece uma base sólida. Ela serve como recurso educacional para traders e desenvolvedores, com uma estrutura de código clara, modelos reutilizáveis e exemplos práticos que podem ser adaptados a outros projetos. Embora alguns possam sugerir a inclusão de um campo de entrada para ajustar os parâmetros de trading em tempo real, decidi manter essas configurações no painel de entradas do EA (por exemplo, ButtonLotSize, ButtonStopLoss), para evitar atrasos operacionais em cenários complexos de trading. Um trader prudente deve configurar previamente esses valores antes de usar os botões de negociação rápida, para manter o foco na execução rápida de operações com um clique.
Confira a imagem abaixo, que demonstra os resultados bem-sucedidos dos testes de todos os botões de negociação rápida (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop) no par de moedas EURAUD usando uma conta demo. Esses resultados demonstram a funcionalidade impecável dos botões, com execução rápida e aplicação precisa dos parâmetros de risco predefinidos, confirmando que o EA "Manchetes de Notícias" está pronto para uso operacional.

Apresentação de um EA "Manchetes de Notícias" integrado com interface de botões de trading manual.
Os testes confirmaram a capacidade do EA de integrar trading manual com notícias em tempo real, indicadores e análises de IA, oferecendo uma interface confiável e centrada no gráfico para trading de notícias e scalping. Embora a implementação atual esteja pronta para uso, aperfeiçoamentos em andamento, como configurações adaptativas de risco ou botões funcionais adicionais, podem otimizar ainda mais o desempenho. Esses resultados consolidam o EA como uma ferramenta confiável para traders, pronta para fornecer análise aumentada em condições reais de mercado.
Conclusão
A integração de sistemas de trading totalmente autônomos com a intervenção do trader em tempo real é plenamente justificável graças a interfaces práticas, como os botões de negociação rápida no EA "Manchetes de Notícias". Esses botões permitem que os traders intervenham manualmente em processos normalmente gerenciados por algoritmos, fortalecendo a parceria entre a intuição humana e a lógica automatizada. Para máxima eficiência, a maioria das configurações, como tamanho do lote, Stop Loss e Take Profit, é incorporada programaticamente à lógica dos botões, eliminando atrasos no trading em condições complexas.
Isso permite que os traders se concentrem exclusivamente em clicar no botão para executar operações, aumentando a velocidade e a precisão. Números mágicos separados permitem que o EA diferencie as posições automáticas do EA das intervenções manuais, evitando conflitos. Essa abordagem de inteligência aumentada, embora não seja totalmente baseada em inteligência artificial, combina de forma eficaz a tomada de decisão humana com a precisão algorítmica, criando uma base confiável para estratégias híbridas de trading.
Essa ferramenta é especialmente valiosa em cenários complexos, como scalping e trading de notícias, nos quais velocidade e adaptabilidade são essenciais. O botão "Close All" (Fechar tudo) protege o capital ao fechar rapidamente todas as posições abertas durante eventos inesperados de mercado, enquanto os botões "Close Profit" (Fechar lucro) e "Close Loss" (Fechar prejuízo) permitem que os traders realizem lucros ou limitem perdas com um único clique, simplificando a gestão de posições. Diferentemente das ferramentas de trading integradas do MetaTrader 5, os botões de negociação rápida incluem parâmetros predefinidos de gestão de riscos, favorecendo um trading disciplinado para traders de todos os níveis de experiência.
Esses parâmetros podem ser ajustados por meio das configurações de entrada do EA (por exemplo, ButtonLotSize, ButtonStopLoss), permitindo que os traders adaptem o risco ao tamanho da conta e à sua tolerância ao risco. A seguir, apresento uma seleção das principais lições e informações desse desenvolvimento, que servem como recursos valiosos para traders e desenvolvedores. Convido você a participar da discussão compartilhando suas perguntas e experiências. Acompanhe as próximas atualizações, pois continuamos aprimorando esta ferramenta de trading transformadora!
Principais lições
| Lição | Descrição |
|---|---|
| Design modular da classe | Usa programação orientada a objetos (por exemplo, a classe CTradingButtons) para encapsular a lógica dos botões e a execução das operações, permitindo reutilização do código e fácil integração com outros EAs. |
| Gestão de riscos predefinida | Incorpora parâmetros de risco à lógica dos botões para eliminar atrasos de entrada manual, garantindo execução rápida durante eventos de notícias voláteis e no scalping. |
| Números mágicos separados | Atribui números mágicos distintos para evitar conflitos entre operações realizadas manualmente e operações algorítmicas, garantindo rastreamento claro das posições. |
| Interface centrada no gráfico | Posiciona os botões e a exibição dos dados no gráfico usando CCanvas para reduzir a carga cognitiva e ajudar os traders a manterem o foco em cenários complexos. |
| Tratamento eficiente de eventos | Usa OnChartEvent com CHARTEVENT_OBJECT_CLICK para vincular cliques nos botões às funções de trading, garantindo execução das operações em menos de 500 ms no scalping e no trading de notícias. |
| Clareza visual | Aplica cores de texto vivas e uma ordem Z alta (por exemplo, 11 para os botões), para que os botões sejam facilmente reconhecíveis e acessíveis no gráfico. |
| Configuração das entradas do usuário | Permite que os traders configurem parâmetros de risco por meio das entradas do EA, oferecendo flexibilidade sem prejudicar a velocidade de execução. |
| Tratamento de erros | Implementa validações (por exemplo, SYMBOL_TRADE_MODE, tamanho do lote conforme SYMBOL_VOLUME_MIN/MAX) nas funções de trading para evitar falhas no envio das ordens e registrar erros para depuração. |
| Integração fluida dos dados | Integra dados em tempo real (calendário econômico, notícias da Alpha Vantage, indicadores) aos botões, usando canvases separados para criar um espaço de trabalho unificado para decisões manuais de trading bem fundamentadas. |
| Sinergia híbrida de trading | Desenvolve os botões como complemento às estratégias automatizadas, favorecendo a colaboração homem-máquina para materializar o conceito de inteligência aumentada. |
| Posicionamento do canvas | Usa coordenadas y e valores de ordem Z claros (por exemplo, 10 para o painel, 0 para as notícias), para evitar sobreposição e garantir boa visibilidade de todos os componentes do EA. |
| Atualização dinâmica dos dados | Usa OnTimer para atualizar notícias, indicadores e análises de IA (por exemplo, a cada 20 ms com InpTimerMs), mantendo os traders informados sem intervenção manual. |
| Teste em conta demo | Testa o EA em uma conta demo para verificar a funcionalidade dos botões e as configurações de risco em um ambiente sem risco financeiro real antes do uso em mercado real. |
| Escalabilidade para aperfeiçoamentos | Estrutura o EA com funções modulares para facilitar a adição de novos botões ou recursos, como configurações adaptativas de risco. |
| Otimização da eficiência | Normaliza preços (por exemplo, NormalizeDouble) e define o nível permitido de slippage (por exemplo, SetDeviationInPoints(10)) para garantir execução confiável das operações em mercados voláteis. |
| Orientação do trader | Fornece documentação clara e logs (por exemplo, Print("Manual Buy order placed")) para familiarizar os traders com a funcionalidade dos botões e com os resultados das operações, melhorando a usabilidade. |
| Equilíbrio entre operações automáticas e manual | Separa a lógica de trading manual (controlada por botões) da lógica automática (orientada por notícias), com configurações distintas (por exemplo, InpOrderVolume e ButtonLotSize), para oferecer flexibilidade e controle. |
| Integração com o sistema de alertas | Combina ações acionadas pelos botões com alertas de eventos (por exemplo, InpAlertMinutesBefore=5), para indicar aos traders quando usar botões como Buy Stop antes de notícias importantes. |
| Reutilização do código | Projeta o arquivo de cabeçalho CTradingButtons como um módulo separado como um módulo separado para uso em outros EAs, reduzindo o tempo de desenvolvimento de projetos futuros que exijam interfaces de trading manual. |
| Refinamento iterativo | Realiza testes iterativos (por exemplo, em teste demo com o par EURAUD) para ajustar a sensibilidade dos botões e os parâmetros de risco, garantindo que o EA atenda aos requisitos do trading real antes do uso em ambiente real. |
Aplicações
| Nome do arquivo | Versão | Descrição |
|---|---|---|
| TradingButtons.mqh | 1.0 | Arquivo de cabeçalho que define a classe CTradingButtons e encapsula a lógica para os oito botões de negociação rápida (Buy, Sell, Close All, Delete Orders, Close Profit, Close Loss, Buy Stop, Sell Stop). Gerencia a criação dos botões, o estilo visual (por exemplo, cores vivas para identificação rápida) e a execução das operações com parâmetros de risco predefinidos (por exemplo, tamanho do lote=0,1, Stop Loss=50 pips). Esse design modular permite a reutilização e a integração fluida com o EA para trading manual em mercados voláteis. |
| News_Headline_EA.mq5 | 1.12 | Arquivo principal do EA, que combina os botões de negociação rápida com dados do calendário econômico em tempo real, feeds de notícias da Alpha Vantage, indicadores técnicos (RSI, Stochastic, MACD, CCI) e análises baseadas em inteligência artificial. Gerencia a entrada manual dos dados das operações, ordens stop automáticas baseadas em eventos de notícias e a exibição no gráfico (por exemplo, notícias em y=398, indicadores em y=414-462). Usa números mágicos separados (123456 para controle manual, 888888 para controle automático) para evitar conflitos entre operações, oferecendo inteligência aumentada para trading de notícias e scalping. |
Para incluir a faixa "Análises com IA" no EA "Manchetes de Notícias", consulte o artigo "Do iniciante ao especialista: Criação de um EA animado para notícias em MQL5 (IV): Análise de mercado com modelos executados localmente usando IA". Esse recurso contém instruções detalhadas sobre os scripts Python correspondentes, necessários para obter análises de mercado baseadas em IA, e explica sua integração com o EA.
Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/18975
Aviso: Todos os direitos sobre esses materiais pertencem à MetaQuotes Ltd. É proibida a reimpressão total ou parcial.
Esse artigo foi escrito por um usuário do site e reflete seu ponto de vista pessoal. A MetaQuotes Ltd. não se responsabiliza pela precisão das informações apresentadas nem pelas possíveis consequências decorrentes do uso das soluções, estratégias ou recomendações descritas.
Automatizando Estratégias de Trading em MQL5 (Parte 12): Implementação da Estratégia Mitigation Order Blocks (MOB)
Ciência de Dados e ML (Parte 35): NumPy em MQL5 – A Arte de Desenvolver Algoritmos Complexos com Menos Código
Superando as limitações do aprendizado de máquina (Parte 2): falta de reprodutibilidade
Desenvolvimento de um conjunto de ferramentas de Análise de Price Action (Parte 18): Introduzindo a Teoria dos Quarters (III) — Quarters Board
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso