Desenvolvimento do Kit de Ferramentas de Análise de Price Action (Parte 5): Volatility Navigator EA
Introdução
Navegar pelas complexidades do trading envolve mais do que simplesmente identificar possíveis direções de mercado; também exige execução precisa. Muitos traders enfrentam dificuldades não por uma má execução, mas devido a imprecisões nos pontos de entrada, configurações de stop loss ou alvos de take profit..
Para enfrentar esse desafio, desenvolvi uma nova ferramenta chamada Volatility Navigator usando a linguagem de programação MQL5, projetada especificamente para otimizar esses aspectos críticos do trading. Diferente das minhas ferramentas anteriores que focavam principalmente em prever tendências de mercado, o Volatility Navigator identifica de forma independente os pontos de entrada ideais, níveis de stop loss e alvos de take profit.
Ao incorporar indicadores técnicos avançados à nossa análise de price action, buscamos aprimorar a experiência de trading e melhorar a formulação de estratégias.
Por favor, consulte as seções a seguir.
- Introdução
- Indicadores Técnicos
- Visão Geral da Estrutura do EA
- A Lógica Principal do EA
- Implementação de Alertas e Notificações
- Teste
- Conclusão
Indicadores Técnicos
Os indicadores técnicos podem ser categorizados em vários tipos, incluindo indicadores de tendência, indicadores de momentum, indicadores de volatilidade e indicadores de volume, cada um servindo a propósitos distintos na análise do mercado financeiro. Alguns exemplos amplamente utilizados incluem a Média Móvel, Índice de Força Relativa (RSI), Bandas de Bollinger e o MACD (Moving Average Convergence Divergence).
Vamos analisar mais de perto os três indicadores que utilizaremos junto com price action para alcançar nossos objetivos: Bandas de Bollinger, Índice de Força Relativa (RSI) e Average True Range (ATR).
- Bandas de Bollinger
As Bandas de Bollinger foram desenvolvidas por John Bollinger no início da década de 1980 como uma ferramenta de análise técnica para ajudar traders a identificar tendências de mercado e potenciais reversões de preço. O conceito surgiu do desejo de Bollinger de oferecer uma forma mais dinâmica de medir a volatilidade de preços em comparação aos indicadores técnicos tradicionais. John Bollinger buscou criar uma ferramenta de trading que pudesse se adaptar às condições de mercado em constante mudança.
Ele queria um indicador que se ajustasse com base na volatilidade do mercado, o que o levou à ideia de usar médias móveis junto com uma medida de variação dos preços. As Bandas de Bollinger consistem em três linhas:
- A banda do meio é tipicamente uma média móvel simples (SMA) dos preços de fechamento ao longo de um período especificado (comumente 20 dias).
- A banda superior é a banda do meio mais um determinado número de desvios padrão (geralmente dois).
- A banda inferior é a banda do meio menos o mesmo número de desvios padrão.

Fig 1. Bandas de Bollinger
O uso de desvios padrão é fundamental nas Bandas de Bollinger, pois fornece uma medida estatística de volatilidade. Ao incorporar essa medida, as Bandas de Bollinger conseguem encapsular efetivamente os movimentos de preço dentro de um intervalo, ajudando traders a reconhecer possíveis rompimentos ou reversões.
Traders frequentemente usam Bandas de Bollinger para identificar condições de sobrecompra ou sobrevenda, possíveis reversões de tendência e para avaliar a força dos movimentos de preço. Por exemplo, preços tocando a banda superior podem indicar uma condição de sobrecompra, enquanto preços tocando a banda inferior podem sugerir uma condição de sobrevenda.
- Índice de Força Relativa (RSI)
O Índice de Força Relativa (RSI) foi desenvolvido por J. Welles Wilder Jr. e introduzido em seu livro de 1978, "New Concepts in Technical Trading Systems." Wilder tinha como objetivo criar um oscilador de momentum que pudesse ajudar os traders a identificar condições de sobrecompra e sobrevenda nos mercados financeiros. Abaixo está a fórmula para calcular o RSI.

Fig 2. Fórmula do RSI
O RSI mede a velocidade e a variação dos movimentos de preço, ajudando a identificar condições de sobrecompra ou sobrevenda em um mercado durante um período especificado, tipicamente 14 dias. Variando de 0 a 100, um RSI acima de 70 geralmente indica que um ativo pode estar sobrecomprado, enquanto um RSI abaixo de 30 sugere que ele pode estar sobrevendido.
Os traders usam o RSI para sinalizar potenciais reversões ou confirmar tendências. Além disso, divergências entre o RSI e a ação do preço podem indicar enfraquecimento do momentum, apresentando outras oportunidades de negociação.

Fig 3. Gráfico RSI
- Average True Range (ATR)
O indicador Average True Range (ATR) foi desenvolvido por J. Welles Wilder Jr. e introduzido em seu livro de 1978, "New Concepts in Technical Trading Systems." Wilder criou o ATR para medir a volatilidade do mercado calculando o True Range (TR), que considera a maior faixa de movimento de preço em um período determinado.
Desde então, o ATR se tornou uma ferramenta amplamente utilizada na análise técnica, ajudando traders a avaliar a volatilidade e gerenciar o risco em diversos mercados financeiros. O Average True Range (ATR) é um indicador de volatilidade que mede o grau de movimento dos preços em um período especificado, fornecendo insights sobre a volatilidade do mercado sem indicar a direção do movimento do preço.
Um valor de ATR mais alto indica maior volatilidade, enquanto um ATR mais baixo sinaliza menor volatilidade. Os traders utilizam o ATR para informar estratégias de gerenciamento de risco, como definir níveis de stop-loss e dimensionamento de posição com base nas condições de mercado. Isso ajuda a adaptar as estratégias de negociação à volatilidade do mercado, permitindo operações mais eficazes em diferentes cenários. Vamos ver abaixo a fórmula para calcular o ATR.

Fig 4. Cálculo do ATR
O objetivo de usar o Average True Range (ATR) na estratégia de negociação é ajustar dinamicamente os níveis de stop loss e take profit com base na volatilidade atual do mercado. O ATR serve como uma medida de movimentação de preço, permitindo que o Expert Advisor defina níveis mais amplos durante períodos de alta volatilidade e níveis mais estreitos quando o mercado estiver mais calmo. Essa abordagem melhora o gerenciamento de risco, garantindo que operações não sejam interrompidas prematuramente em condições voláteis, ao mesmo tempo que possibilita aproveitar potenciais lucros quando o movimento do mercado está mais contido. Ao incorporar o ATR, o EA pode se adaptar às mudanças das condições de mercado, resultando em execuções de trades mais eficazes e maior chance de sucesso.
Visão Geral da Estrutura do EA
O Expert Advisor (EA) Volatility Navigator foi projetado com uma estrutura organizada que segue os padrões de programação MQL5. Compreender essa estrutura é crucial para configurar o EA de forma eficaz e realizar ajustes conforme as condições de mercado mudam. Em MQL5, os handles dos indicadores são ferramentas fundamentais que simplificam o uso dos indicadores técnicos dentro do EA. Em vez de recalcular os indicadores a cada variação de preço, o EA pode rapidamente referenciar esses handles para obter os valores mais recentes.
Por exemplo, sempre que a função OnTick() é executada, o EA pode acessar de forma eficiente os valores relevantes dos indicadores, o que é especialmente útil em condições de mercado que mudam rapidamente. Esse acesso imediato permite melhores ações com base na dinâmica atual do mercado.
Funções Centrais do EA
Os principais componentes de um Expert Advisor MQL5 consistem em três funções principais: OnInit(), OnTick() e OnDeinit().
- Função OnInit()
int OnInit() { // Initialize RSI rsiHandle = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE); // Initialize Bollinger Bands bbHandle = iBands(NULL, 0, bbPeriod, 2, 0, PRICE_CLOSE); // Initialize ATR atrHandle = iATR(NULL, 0, atrPeriod); return INIT_SUCCEEDED; }
No trecho de código acima, estamos criando handles para os indicadores RSI, Bandas de Bollinger e Average True Range (ATR), todos os quais ajudarão o EA na tomada de decisões de negociação.
- Função OnTick():
A função OnTick() é crítica, pois é chamada toda vez que há uma variação de preço no mercado. É aqui que o EA avalia os valores atuais dos indicadores e determina as ações de negociação apropriadas.
void OnTick() { double rsiValue = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE); double upperBand, middleBand, lowerBand; iBands(NULL, 0, bbPeriod, 2, 0, PRICE_CLOSE, upperBand, middleBand, lowerBand); double atrValue = iATR(NULL, 0, atrPeriod); // Trading logic if (rsiValue > 70 && Close[0] > upperBand) { // Logic to place a sell order } else if (rsiValue < 30 && Close[0] < lowerBand) { // Logic to place a buy order } }
Aqui, o EA verifica o valor do RSI, das Bandas de Bollinger e do ATR para tomar decisões de negociação informadas. Por exemplo, ele vende quando o RSI indica condições de sobrecompra e o preço excede a banda superior das Bandas de Bollinger.
- Função OnDeinit():
A função OnDeinit() é chamada quando o EA é removido do gráfico. Esta função desempenha um papel vital na liberação de recursos, liberando os handles dos indicadores.
void OnDeinit(const int reason) { // Release resources for indicators IndicatorRelease(rsiHandle); IndicatorRelease(bbHandle); IndicatorRelease(atrHandle); }
Parâmetros de Entrada
Um dos destaques do EA Volatility Navigator é sua flexibilidade por meio de parâmetros de entrada personalizáveis. Esses parâmetros permitem que os traders ajustem o comportamento do EA para alinhar com suas estratégias individuais. Alguns parâmetros de entrada essenciais incluem:
- Período do RSI:
input int rsiPeriod = 14; // Standard period for RSI calculation
- Período das Bandas de Bollinger:
input int bbPeriod = 20; // Standard period for Bollinger Bands
- Período do ATR:
input int atrPeriod = 14; // Period for ATR
A Lógica Principal do EA
Vamos começar examinando o diagrama abaixo, que ilustra como o sinal é gerado para uma ordem de compra, sendo o processo para uma ordem de venda o inverso.
Fig 5. Condições de Geração de Sinal
- Condições de Geração de Sinal
A principal função do EA Volatility Navigator é analisar as condições de mercado para gerar sinais de negociação. Como parte desse processo, o EA recupera os valores atuais dos indicadores relevantes na função OnTick. Abaixo está um trecho que ilustra como calcular o RSI, as Bandas de Bollinger e o ATR dentro do EA.
// Declare indicator handles int rsiHandle; int bbHandle; int atrHandle; // OnInit function int OnInit() { // Create indicator handles rsiHandle = iRSI(NULL, 0, rsiPeriod, PRICE_CLOSE); bbHandle = iBands(NULL, 0, bbPeriod, bbDevUp, bbDevDown, PRICE_CLOSE); atrHandle = iATR(NULL, 0, atrPeriod); return(INIT_SUCCEEDED); }
Nesta configuração, a função OnInit inicializa os handles para o RSI, Bandas de Bollinger e ATR, permitindo que o EA acesse seus valores para cálculos contínuos.
- Avaliando Condições do RSI
O indicador RSI ajuda a identificar possíveis pontos de entrada e saída ao indicar condições de sobrecompra e sobrevenda. Analisar o valor do RSI permite que o EA faça escolhas estratégicas de negociação. O trecho a seguir mostra como verificar os valores do RSI.
double rsiValue = iCustom(NULL, 0, "RSI", rsiPeriod, 0); if (rsiValue > 70) { // Market is overbought - potentially signal to sell } else if (rsiValue < 30) { // Market is oversold - potentially signal to buy }
Neste código, o EA obtém o valor atual do RSI e o compara com os limites pré-definidos de 70 e 30 para determinar possíveis sinais de negociação.
- Analisando as Bandas de Bollinger
double upperBand = iBands(NULL, 0, bbPeriod, bbDevUp, 0, PRICE_CLOSE); double lowerBand = iBands(NULL, 0, bbPeriod, -bbDevDown, 0, PRICE_CLOSE); double price = Close[0]; if (price < lowerBand) { // Price is touching the lower band - potential buy signal } else if (price > upperBand) { // Price is touching the upper band - potential sell signal }
Este trecho mostra a lógica que o EA emprega para verificar se o preço atual está próximo à banda superior ou inferior das Bandas de Bollinger, o que pode acionar sinais de compra ou venda.
- Incorporando o Average True Range (ATR)
O ATR fornece insights sobre a volatilidade do mercado e auxilia no gerenciamento de risco por meio das configurações de stop-loss e take-profit. O código a seguir recupera o valor do ATR:
double atrValue = iATR(NULL, 0, atrPeriod); if (atrValue > atrThreshold) { // High volatility - consider entering trades } else { // Low volatility - potentially stay out of the market }
Neste exemplo, o EA verifica o ATR para determinar se a volatilidade é suficiente para justificar a entrada em uma negociação. Os traders geralmente preferem valores altos de ATR, pois indicam que movimentos significativos de preço são esperados.
- Geração de Sinais de Negociação
Ao combinar os insights do RSI, Bandas de Bollinger e ATR, o EA gera sinais de negociação mais confiáveis. O trecho a seguir ilustra como o EA formularia esses sinais:
if (rsiValue < 30 && price < lowerBand && atrValue > atrThreshold) { // Generate buy signal } else if (rsiValue > 70 && price > upperBand && atrValue > atrThreshold) { // Generate sell signal }Nesta análise composta, um sinal de compra ocorre quando o mercado está sobrevendido conforme indicado pelo RSI, o preço está tocando a banda inferior das Bandas de Bollinger e o ATR sugere volatilidade adequada. Por outro lado, um sinal de venda é gerado sob condições opostas.
- Feedback Visual no Gráfico
Para aprimorar a experiência do usuário, o EA fornece feedback visual quando gera sinais. O código a seguir demonstra como isso é implementado com marcações claras no gráfico:
void DrawTradeSignals() { if (buySignal) { // Draw buy signal on the chart ObjectCreate(0, "BuySignal" + IntegerToString(TimeCurrent()), OBJ_ARROW, 0, Time[0], price); } else if (sellSignal) { // Draw sell signal on the chart ObjectCreate(0, "SellSignal" + IntegerToString(TimeCurrent()), OBJ_ARROW, 0, Time[0], price); } }
Em resumo, a lógica principal do EA Volatility Navigator gira em torno da avaliação sistemática dos dados de mercado atuais por meio de múltiplos indicadores. Ao combinar os insights do RSI, Bandas de Bollinger e ATR, o EA pode gerar sinais de negociação robustos enquanto também fornece feedback visual valioso no gráfico. Essa abordagem multifacetada aprimora as avaliações dos traders e, em última análise, auxilia na navegação eficaz de mercados voláteis.
Implementando Alertas e Notificações no EA Volatility Navigator
O Expert Advisor (EA) Volatility Navigator é equipado com um sistema integrado de alertas e notificações que aumenta a capacidade do trader de responder de forma eficaz às condições do mercado. Esse sistema é essencial para fornecer insights e alertas oportunos com base em sinais de negociação específicos gerados pelos principais indicadores do EA: o Índice de Força Relativa (RSI), Bandas de Bollinger e Average True Range (ATR).
- Tipos de Alertas no EA
Alertas Sonoros: O EA está programado para emitir notificações sonoras sempre que um sinal de negociação significativo é acionado. Por exemplo, quando o RSI cruza acima de 70, indicando uma condição de sobrecompra, ou cai abaixo de 30, indicando condição de sobrevenda, um alerta sonoro será emitido. Esses alertas permitem que os traders reajam imediatamente, possibilitando uma tomada de decisão rápida com base nas oportunidades de mercado identificadas.
Alertas Visuais: Além dos avisos sonoros, o EA incorpora alertas visuais diretamente no gráfico de negociação. Por exemplo, quando um sinal de negociação é gerado, o EA pode mudar a cor da linha de preço ou exibir uma mensagem na tela destacando a natureza do sinal (compra ou venda). Esse recurso permite que os traders avaliem rapidamente as condições atuais do mercado em seus gráficos, sem depender exclusivamente de notificações sonoras.
- Integração de Alertas na Lógica do EA
Os alertas e notificações no EA Volatility Navigator são integrados de forma transparente à sua lógica principal de negociação:
Durante cada execução do OnTick, o EA monitora continuamente os indicadores em busca de potenciais sinais de negociação. Quando o EA detecta que determinados limites foram atingidos, por exemplo, o RSI cruzando um nível pré-definido, uma sequência de alerta é acionada. Assim que um sinal de negociação é confirmado, o EA ativa os alertas correspondentes.
Esse processo de ativação pode incluir a reprodução de um som ou a geração de um marcador visual no gráfico. Os alertas fornecem feedback imediato sobre as condições de mercado, ajudando os traders a tomar decisões rápidas e informadas. Esse engajamento promove a participação ativa no processo de negociação, aumentando a probabilidade de capturar movimentos lucrativos do mercado.
// Example of defining thresholds double rsiValue = iRSI(NULL, 0, 14, PRICE_CLOSE); // Check for overbought and oversold conditions if (rsiValue > 70) { // Audio Alert PlaySound("alert.wav"); // Visual Alert on Chart ObjectCreate("OverboughtAlert", OBJ_TEXT, 0, Time[0], High[0]); ObjectSetText("OverboughtAlert", "Overbought Signal!", 12, "Arial", clrRed); // Additional actions like placing an order can be added here } else if (rsiValue < 30) { // Audio Alert PlaySound("alert.wav"); // Visual Alert on Chart ObjectCreate("OversoldAlert", OBJ_TEXT, 0, Time[0], Low[0]); ObjectSetText("OversoldAlert", "Oversold Signal!", 12, "Arial", clrGreen); // Additional actions like placing an order can be added here }
O trecho de código fornecido é projetado para implementar alertas sonoros e visuais dentro do Expert Advisor (EA) Volatility Navigator com base no comportamento do Índice de Força Relativa (RSI). Primeiro, o código calcula o valor atual do RSI usando a função iRSI, que utiliza o símbolo do gráfico atual, timeframe, período (14) e preço de fechamento como entradas. Em seguida, verifica se o valor do RSI excede o limite de 70, significando condições de sobrecompra. Se essa condição for atendida, a função PlaySound é chamada para reproduzir um alerta sonoro, chamando a atenção imediata do trader.

Fig 6. Alertas Visuais
Além disso, um alerta visual é criado no gráfico de negociação ao posicionar um objeto de texto no nível do preço máximo atual, indicando esse sinal de sobrecompra em texto vermelho para garantir destaque. Por outro lado, se o valor do RSI cair abaixo do limite de 30, indicando condições de sobrevenda, o mesmo procedimento é seguido: um alerta sonoro é emitido, e um objeto de texto é gerado no nível do preço mínimo atual, desta vez exibindo o sinal em verde.
Esse sistema duplo de alerta, composto por elementos sonoros e visuais, aumenta a capacidade do trader de se manter informado e reagir prontamente a movimentos significativos do mercado, melhorando assim a eficiência geral das negociações.
O sistema de alertas sonoros e visuais no EA Volatility Navigator foi projetado para facilitar respostas rápidas às mudanças nas condições de mercado. Ao implementar esses alertas, o EA capacita os traders a se manterem informados e prontos para agir, aumentando assim sua eficiência e sucesso nas operações.
Abaixo está o código completo do Expert Advisor (EA). Este código contém todas as instruções e lógicas necessárias que regem suas operações de negociação.
//+------------------------------------------------------------------+ //| Volatility Navigator.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 "The EA analyzes market conditions using the Bollinger Bands, RSI and ATR indicators" #property version "1.1" #property strict // Input parameters for trading strategy input int rsiPeriod = 14; // Period for RSI calculation input double overboughtLevel = 70.0; // RSI level for overbought condition input double oversoldLevel = 30.0; // RSI level for oversold condition input int bbPeriod = 20; // Period for Bollinger Bands input double bbDeviation = 2.0; // Deviation for Bollinger Bands input int atrPeriod = 14; // ATR period for stop loss and take profit calculations input double atrMultiplier = 1.5; // Multiplier for ATR in calculating stop loss and take profit input string signalSound = "alert.wav"; // Sound file for alert notifications // Indicator handles for Bollinger Bands and ATR int bbHandle = 0; int atrHandle = 0; // Function to clear previous drawings from the chart void ClearPreviousDrawings() { // Delete any previously created trade lines and signal text if (ObjectFind(0, "EntryPoint") != -1) ObjectDelete(0, "EntryPoint"); if (ObjectFind(0, "StopLoss") != -1) ObjectDelete(0, "StopLoss"); if (ObjectFind(0, "TakeProfit") != -1) ObjectDelete(0, "TakeProfit"); if (ObjectFind(0, "SignalText") != -1) ObjectDelete(0, "SignalText"); if (ObjectFind(0, "BuyArrow") != -1) ObjectDelete(0, "BuyArrow"); if (ObjectFind(0, "SellArrow") != -1) ObjectDelete(0, "SellArrow"); } // Function to draw entry points, stop loss, and take profit on the chart void DrawTradeLines(double entryPoint, double stopLoss, double takeProfit, string signalText) { // Clear previous drawings before drawing new ones ClearPreviousDrawings(); // Draw the entry point line if (!ObjectCreate(0, "EntryPoint", OBJ_HLINE, 0, TimeCurrent(), entryPoint)) Print("Failed to create EntryPoint line. Error: ", GetLastError()); ObjectSetInteger(0, "EntryPoint", OBJPROP_COLOR, clrGreen); ObjectSetInteger(0, "EntryPoint", OBJPROP_WIDTH, 2); // Draw the stop loss line if (!ObjectCreate(0, "StopLoss", OBJ_HLINE, 0, TimeCurrent(), stopLoss)) Print("Failed to create StopLoss line. Error: ", GetLastError()); ObjectSetInteger(0, "StopLoss", OBJPROP_COLOR, clrRed); ObjectSetInteger(0, "StopLoss", OBJPROP_WIDTH, 2); // Draw the take profit line if (!ObjectCreate(0, "TakeProfit", OBJ_HLINE, 0, TimeCurrent(), takeProfit)) Print("Failed to create TakeProfit line. Error: ", GetLastError()); ObjectSetInteger(0, "TakeProfit", OBJPROP_COLOR, clrBlue); ObjectSetInteger(0, "TakeProfit", OBJPROP_WIDTH, 2); // Draw a label with the signal text to provide information at a glance if (!ObjectCreate(0, "SignalText", OBJ_LABEL, 0, TimeCurrent(), entryPoint + 10)) Print("Failed to create SignalText label. Error: ", GetLastError()); ObjectSetInteger(0, "SignalText", OBJPROP_XDISTANCE, 10); ObjectSetInteger(0, "SignalText", OBJPROP_YDISTANCE, 30); ObjectSetInteger(0, "SignalText", OBJPROP_COLOR, clrWhite); ObjectSetInteger(0, "SignalText", OBJPROP_FONTSIZE, 12); ObjectSetString(0, "SignalText", OBJPROP_TEXT, signalText); } // Function to draw arrows on the chart at entry points void DrawEntryArrow(double price, string label, color arrowColor) { if (!ObjectCreate(0, label, OBJ_ARROW, 0, TimeCurrent(), price)) { Print("Failed to create arrow object. Error: ", GetLastError()); return; } ObjectSetInteger(0, label, OBJPROP_ARROWCODE, 233); // Arrow code for upward direction ObjectSetInteger(0, label, OBJPROP_COLOR, arrowColor); ObjectSetInteger(0, label, OBJPROP_WIDTH, 2); // Set the width of the arrow } // Function to manage open positions for efficient trade execution void ManageOpenPositions(string symbol) { // Loop through all open positions for (int i = PositionsTotal() - 1; i >= 0; i--) { ulong ticket = PositionGetTicket(i); if (PositionSelectByTicket(ticket)) { // Check if the position is for the current symbol if (PositionGetString(POSITION_SYMBOL) == symbol) { double currentProfit = PositionGetDouble(POSITION_PROFIT); Print("Current Profit for position: ", currentProfit); // Additional management logic can be added here (e.g., close position, update SL/TP) } } } } // Function to calculate trade parameters such as entry point, stop loss, and take profit void CalculateTradeParameters() { // Get the current RSI value double rsiValue = iRSI(Symbol(), PERIOD_CURRENT, rsiPeriod, PRICE_CLOSE); Print("RSI Value: ", rsiValue); double bbUpper = 0.0; double bbLower = 0.0; double atrValue = 0.0; // Get the latest closing prices double closePrices[]; if (CopyClose(NULL, 0, 0, 1, closePrices) <= 0) { Print("Error copying close prices: ", GetLastError()); return; // Exit if there's an error } // Initialize and get values for Bollinger Bands if (bbHandle == 0) { bbHandle = iBands(NULL, 0, bbPeriod, 0, bbDeviation, PRICE_CLOSE); } if (bbHandle != INVALID_HANDLE) { double bbBuffer[]; // Get the upper and lower Bollinger Bands if (CopyBuffer(bbHandle, 1, 0, 1, bbBuffer) > 0) { bbUpper = bbBuffer[0]; // Upper band value Print("Bollinger Band Upper: ", bbUpper); } if (CopyBuffer(bbHandle, 2, 0, 1, bbBuffer) > 0) { bbLower = bbBuffer[0]; // Lower band value Print("Bollinger Band Lower: ", bbLower); } // Initialize and get the ATR value if (atrHandle == 0) { atrHandle = iATR(NULL, 0, atrPeriod); } if (atrHandle != INVALID_HANDLE) { double atrBuffer[]; if (CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) { atrValue = atrBuffer[0]; // Current ATR value Print("ATR Value: ", atrValue); } } double entryPoint, stopLoss, takeProfit; // Generate buy or sell signals based on Bollinger Bands and RSI values if (closePrices[0] < bbLower && rsiValue < oversoldLevel) // Buy Condition { entryPoint = closePrices[0]; stopLoss = entryPoint - (atrValue * atrMultiplier); takeProfit = entryPoint + (atrValue * atrMultiplier * 2); DrawTradeLines(entryPoint, stopLoss, takeProfit, "Buy Signal"); DrawEntryArrow(entryPoint, "BuyArrow", clrGreen); // Draw Buy Arrow PlaySound(signalSound); // Notify with sound for new entry } else if (closePrices[0] > bbUpper && rsiValue > overboughtLevel) // Sell Condition { entryPoint = closePrices[0]; stopLoss = entryPoint + (atrValue * atrMultiplier); // Above entry for short position takeProfit = entryPoint - (atrValue * atrMultiplier * 2); // Below entry for short position DrawTradeLines(entryPoint, stopLoss, takeProfit, "Sell Signal"); DrawEntryArrow(entryPoint, "SellArrow", clrRed); // Draw Sell Arrow PlaySound(signalSound); // Notify with sound for new entry } } } // Expert initialization function int OnInit() { // Initialization tasks can be done here return INIT_SUCCEEDED; } // Expert deinitialization function void OnDeinit(const int reason) { // Release the indicator handles when the EA is removed if (bbHandle != 0) IndicatorRelease(bbHandle); if (atrHandle != 0) IndicatorRelease(atrHandle); ClearPreviousDrawings(); // Clear drawings on removal } // Expert tick function void OnTick() { ManageOpenPositions(Symbol()); // Manage open positions before calculating new parameters CalculateTradeParameters(); // Calculate trade parameters based on market data } //+------------------------------------------------------------------+
Teste
Para adicionar o Expert Advisor (EA) Volatility Navigator a um gráfico no MetaTrader 5 para testes, primeiro certifique-se de que seu arquivo EA está devidamente instalado na plataforma MetaTrader 5. Navegue até o painel "Navegador" no lado esquerdo e, na seção "Expert Advisors", encontre seu EA. Se ele não estiver visível, talvez seja necessário atualizar a lista clicando com o botão direito e selecionando "Atualizar", ou garantir que os arquivos do EA estejam na pasta correta (especificamente, em MQL5 > Experts dentro da instalação do MetaTrader).
Uma vez localizado, basta arrastar o EA para o gráfico desejado ou dar um duplo clique para abrir a janela de configurações. Lá, você pode configurar parâmetros como tamanho do lote e indicadores de acordo com sua estratégia. Após configurar as definições, certifique-se de habilitar a negociação automatizada clicando no botão "AutoTrading" na barra de ferramentas. Por fim, clique em "OK" para aplicar o EA, e ele começará a executar operações com base na estratégia pré-definida. Sempre verifique a aba "Trade" para monitorar sua atividade durante os testes. Neste projeto que desenvolvi, testei o Expert Advisor (EA) em uma conta demo. No entanto, você também pode realizar backtest usando dados históricos antes de arriscar dinheiro real.
Após arrastar o EA para o gráfico, é essencial aguardar pacientemente até que os sinais sejam gerados quando certas condições forem atendidas pelos indicadores, conforme explicado acima. Quando essas condições são satisfeitas, o EA exibirá três linhas no gráfico: o stop loss, o take profit e o ponto de entrada. Além disso, um alerta sonoro será emitido, sinalizando ao trader, e esse alerta persistirá até que o ponto de entrada mais preciso seja atingido.
Abaixo, ilustramos os resultados de nossos testes para sua análise

Fig 7. Resultados dos Testes
No diagrama acima, podemos observar as ordens que executei após receber os sinais, todas atualmente em lucro. O diagrama também mostra os níveis indicados pelos sinais como linhas horizontais: o nível de take profit está em azul, o ponto de entrada em verde e o stop loss em vermelho. Vamos também dar uma olhada no GIF abaixo para uma visão mais ampla.

Fig 8. Resultados dos Testes
Conclusão
Esta ferramenta tem como foco principal fornecer pontos de entrada promissores e lucrativos, níveis de take profit e definições de stop loss. Ela pode ser aplicada a diferentes gráficos e suporta todos os períodos de tempo. Para entradas do tipo scalping, é recomendável usar períodos de tempo mais curtos, enquanto operações mais longas podem se beneficiar de períodos maiores. Além disso, é interessante usar esta ferramenta junto com suas próprias estratégias para potencializar os resultados.
Certifique-se de testar e experimentar a ferramenta antes de usar dinheiro real. Observe que esta ferramenta não abre operações; meu objetivo nesta série é apenas desenvolver ferramentas para análise de mercado.
| Data | Nome da Ferramenta | Descrição | Versão | Atualizações | Notas |
|---|---|---|---|---|---|
| 01/10/24 | Projetor de Gráficos | Script para sobrepor a ação de preço do dia anterior com efeito fantasma. | 1.0 | Lançamento Inicial | A primeira ferramenta do Lynnchris Tools Chest |
| 18/11/24 | Comentário Analítico | Ele fornece informações do dia anterior em formato tabular, bem como antecipa a direção futura do mercado. | 1.0 | Lançamento Inicial | Segunda ferramenta no Lynnchris Tool Chest |
| 27/11/24 | Mestre em Análise | Atualização Regular das métricas de mercado a cada duas horas | 1.01 | Segundo Lançamento | Terceira ferramenta no Lynnchris Tool Chest |
| 02/12/2024 | Previsor analítico | Atualização regular das métricas de mercado a cada duas horas com integração ao Telegram | 1.1 | Terceira Edição | Ferramenta número 5 |
| 09/12/24 | Navegador de Volatilidade | O EA analisa as condições de mercado usando os indicadores Bandas de Bollinger, RSI e ATR | 1.0 | Lançamento Inicial | Ferramenta número 6 |
Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/16560
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.
Trading por algoritmo: IA e seu caminho para os topos dourados
Construindo um Modelo de Restrição de Tendência com Candlesticks (Parte 9): Expert Advisor de Múltiplas Estratégias (III)
Otimização de recifes de coral — Coral Reefs Optimization (CRO)
Análise angular dos movimentos de preço: um modelo híbrido de previsão dos mercados financeiros
- 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
Basta acessar o perfil do autor e clicar em "Publications" (Publicações) ... Christian Benjamin (Publicações)
O Sr. Benjamin ou alguém que esteja lendo este artigo poderia me dizer onde posso encontrar as Partes 1-3 deste artigo?
Olá, senhor, siga os links fornecidos abaixo.
https://www.mql5.com/pt/articles/16434
https://www.mql5.com/pt/articles/15927
https://www.mql5.com/pt/articles/16014
Basta acessar o perfil do autor e clicar em "Publicações" ... Christian Benjamin (Publicações)
Obrigado, senhor!
Posso saber o que esse EA está negociando? Não estou vendo.
(C.Benjamin) O autor diz no cabeçalho "TESTE":
"Depois de arrastar o EA para o gráfico, é essencial esperar pacientemente que os sinais sejam gerados quando determinadas condições forem atendidas pelos indicadores, conforme explicado acima. Quando essas condições forem atendidas, o EA exibirá três linhas no gráfico: o stop loss, o take profit e o ponto de entrada. Além disso, um alerta sonoro será emitido, sinalizando o trader, e esse alerta persistirá até que o ponto de entrada mais preciso seja alcançado."
O código do EA mostra graficamente APENAS A OPERAÇÃO SUGERIDA e também o alerta