
Price Action Analysis Toolkit Development (Part 3): Analytics Master — EA
Conteúdo:
- Introdução
- Revisão da Ferramenta Anterior
- Visão Geral do Analytic Master
- Explorando o Código do Expert Advisor
- Quebra do Código
- Implementação e Testes do Código
- Conclusão
Introdução
Tendo desenvolvido o script de comentário analítico no episódio anterior, identifiquei suas limitações em relação às propriedades do script, que detalharei abaixo. Embora eu reconheça o impacto considerável que o script de comentário analítico teve dentro da comunidade de negociação, desenvolvi um Expert Advisor (EA) chamado Analytics Master. Este EA oferece a mesma análise e ainda fornece métricas extras para melhores insights de negociação. Esta nova ferramenta oferece várias vantagens, incluindo a capacidade de atualizar continuamente as métricas a cada duas horas, em contraste com o script, que só podia escrever informações de métricas uma vez. O EA aprimora a análise e mantém os usuários atualizados.
Em alguns casos, um Expert Advisor (EA) pode integrar funções semelhantes a scripts para melhorar sua funcionalidade. Isso significa que você pode implementar tarefas específicas dentro do código do EA que se assemelham às ações normalmente executadas por scripts independentes. Um EA combina de forma eficaz codificação, configurações personalizáveis, lógica de negociação e gerenciamento de risco para automatizar estratégias de negociação de forma eficiente. Abaixo, tabulei uma comparação entre o script e o Expert Advisor (EA).
Script | O Expert Advisor (EA) |
---|---|
Eles são projetados para executar uma tarefa específica e concluir a execução quase instantaneamente. Eles terminam assim que a tarefa é concluída e não podem rodar continuamente. | Eles rodam continuamente em segundo plano, monitorando as condições de mercado e executando negociações com base em condições predefinidas. |
Eles não podem lidar com eventos como ticks ou temporizadores. Um script só pode executar seu código quando iniciado manualmente. | Eles podem responder a eventos e mudanças de mercado (por exemplo, OnTick, OnTimer, OnTrade), permitindo maior capacidade de resposta em estratégias de negociação. |
Normalmente, um script pode executar negociações (abrindo, modificando ou fechando) mas não gerencia negociações em andamento. Uma vez executado, não pode monitorar ou reagir ao estado das negociações. | EAs podem gerenciar posições abertas dinamicamente, acompanhar condições de negociação, aplicar trailing stops e ajustar dinamicamente suas estratégias com base nas condições de mercado. |
Geralmente projetados para execução única e podem exigir configurações específicas (como parâmetros de entrada) cada vez que são executados manualmente pelo usuário. | Eles podem manter parâmetros definidos pelo usuário entre sessões e rodar sem interação do usuário uma vez iniciados. |
Mais adequados para tarefas simples baseadas em ações (por exemplo, fechamento em lote de ordens ou aplicação de indicadores). | Eles podem incorporar lógica complexa, algoritmos e sistemas que exigem tomada de decisão contínua e adaptação às condições de mercado. |
Embora scripts possam analisar dados históricos, não podem se adaptar continuamente ou aprender com novos dados sem serem reexecutados. | Eles podem analisar dados históricos e tomar decisões com base em dados em tempo real, permitindo estratégias adaptativas. |
Como executam e encerram rapidamente, também têm impacto de desempenho limitado em comparação com EAs em execução contínua. | Como EAs rodam constantemente, podem levar a maior consumo de CPU e memória, especialmente se gerenciarem muitas negociações ou usarem algoritmos complexos. |
Revisão da ferramenta anterior (Ferramenta de Comentário Analítico)
Nossa ferramenta anterior, o Script de Comentário Analítico, foi projetada para analisar métricas-chave do dia de negociação anterior, incluindo:
- Abertura do Dia Anterior
- Fechamento do Dia Anterior
- Volume do Dia Anterior
- Volume do Dia Atual
- Níveis de Suporte e Resistência
Estas informações são apresentadas em uma tabela organizada verticalmente. Além disso, uma previsão de possíveis movimentos de mercado foi calculada com base nos preços de abertura e fechamento anteriores, bem como nos volumes de negociação, conforme mostrado na Figura 1 abaixo.
Fig 1. Apresentação de Dados
Nosso script desenhou com sucesso linhas de tendência no gráfico, destacando níveis-chave de suporte e resistência. A previsão da direção do mercado também parecia positiva. Na Figura 2, resumimos os resultados da nossa ferramenta de comentário analítico.
Fig 2. Resultado do Comentário Analítico
Para saber mais sobre o Script de Comentário Analítico, clique no link a seguir:https://www.mql5.com/pt/articles/15927
Visão Geral do Analytics Master (EA)
À medida que fazemos a transição de um script para um Expert Advisor (EA), algumas informações anteriormente fornecidas pelo script continuarão acessíveis por meio do EA, conforme mencionado na revisão da ferramenta anterior. No entanto, o EA também fornecerá insights adicionais e executará tarefas que excedem as capacidades do script original.
Além disso, nosso EA agora pode calcular volatilidade de mercado, spread de mercado, patrimônio, saldo e os tamanhos mínimos e máximos de lote possíveis com base no saldo da conta. Fornecerei explicações adicionais sobre por que essas informações são essenciais de se conhecer.
- Volatilidade de Mercado
Volatilidade é uma medida estatística da dispersão dos dados em torno de sua média em um período especificado. Calcular a volatilidade de mercado é crucial para gerenciamento eficaz de risco, execução de negociações e planejamento estratégico nos mercados financeiros. Este EA automatiza o cálculo da volatilidade de mercado, tornando o processo simplificado e fácil de usar. Embora a volatilidade de mercado seja tipicamente medida usando a fórmula abaixo, nosso EA simplifica esta função para facilitar o uso.
Fig 3. Fórmula da Volatilidade
Para calcular a volatilidade, começamos determinando o desvio padrão conforme descrito acima. Para obter a volatilidade anualizada, você pode multiplicar o desvio padrão pela raiz quadrada do número total de dias de negociação em um ano, que é aproximadamente 252. Saiba mais: https://quantra.quantinsti.com/glossary/Volatility
- Spread de Mercado
O spread de mercado, frequentemente referido simplesmente como "spread", é a diferença entre os preços de compra (bid) e venda (ask) de um ativo específico em um mercado financeiro. Uma razão importante para conhecer o valor do spread de mercado é avaliar os custos de negociação. Compreender o spread ajuda traders e investidores a avaliar os custos associados à entrada e saída de posições.
Um spread mais estreito geralmente indica menores custos de transação e melhor execução de ordens, o que é particularmente crucial para traders de alta frequência ou aqueles que executam numerosas negociações diariamente. Por outro lado, um spread mais amplo pode sinalizar custos mais altos e levar traders a reconsiderar suas estratégias ou escolher ativos diferentes para negociação a fim de minimizar despesas. Assim, conhecer o valor do spread de mercado impacta diretamente a lucratividade das negociações e o desempenho geral do investimento.
Fig 4. Fórmula do Spread de Mercado
- Tamanhos Possíveis de Lote
Para melhorar a experiência do trader, nosso Expert Advisor (EA) simplificará os cálculos das informações de mercado e atualizará esses dados a cada duas horas. Isso garante que os traders permaneçam informados com os insights de mercado mais atuais, permitindo uma tomada de decisão mais informada.
Explorando o Código do Expert Advisor (Funções e Recursos Principais)
O código inclui várias funcionalidades:
- Recuperar e exibir dados de negociação dos dias anterior e atual.
- Analisar a direção do mercado com base nos movimentos de preço.
- Desenhar linhas de tendência no gráfico.
- Calcular o tamanho da posição com base em princípios de gerenciamento de risco.
Abaixo está o código do nosso Expert Advisor (EA)
//+------------------------------------------------------------------+ //| Analytics Master EA.mq5| //| Copyright 2024, Christian Benjamin| //| https://www.mql5,com| //+------------------------------------------------------------------+ #property copyright "2024, MetaQuotes Software Corp." #property link "https://www.mql5.com/en/users/lynnchris" #property description "EA for market analysis and commenting" #property version "1.0" #property strict // Inputs for risk management input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics } //+------------------------------------------------------------------+ //| Update metrics and display them | //+------------------------------------------------------------------+ void UpdateMetrics() { // Check if 2 hours have passed since the last update if(TimeCurrent() - lastUpdateTime >= 2 * 3600) { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Fibonacci level // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate spread double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); double maxLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX); // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); // Get the ATR handle double atrValue = 0.0; if(atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; // Array to hold the ATR values if(CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) // Copy the latest ATR value { atrValue = atrBuffer[0]; // Retrieve the ATR value from the buffer } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } } //+------------------------------------------------------------------+ //| Analyze market direction | //+------------------------------------------------------------------+ string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if(close > open) { direction = "Bullish"; } else if(close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if(high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if(low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; } //+------------------------------------------------------------------+ //| Draw a continuous trend line to the left on the chart | //+------------------------------------------------------------------+ void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 720 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left } //+------------------------------------------------------------------+ //| Calculate the lot size based on risk management | //+------------------------------------------------------------------+ double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); // Adjusted for the correct pip size lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if(lotSize < minLotSize) lotSize = minLotSize; return lotSize; } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
Quebra do Código
1. Inicialização e Propriedades
input double RiskPercentage = 1.0; // Percentage of account balance to risk per trade input double StopLossMultiplier = 1.0; // Multiplier for determining the stop loss distance input int ATR_Period = 14; // Period for ATR calculation // Global variables for storing values datetime lastUpdateTime = 0; double previousDayOpen, previousDayClose, previousDayHigh, previousDayLow; double previousDayVolume; double currentDayVolume; double support, resistance;
Parâmetros de entrada permitem que os usuários personalizem o comportamento do EA de acordo com suas preferências de negociação. Variáveis globais são declaradas para armazenar dados históricos, incluindo preços de abertura, fechamento, máxima e mínima do dia anterior, bem como volumes e níveis de suporte/resistência.
2. Funções OnInit e OnDeinit
int OnInit() { lastUpdateTime = 0; // Set the initial update time return INIT_SUCCEEDED; }
OnInit: Esta função é executada quando o EA é inicializado. Ela define o último horário de atualização como zero.
void OnDeinit(const int reason) { ObjectsDeleteAll(0); // Clean up any drawn objects on the current chart }
OnDeinit: Esta função é chamada quando o EA é removido ou interrompido, realizando a limpeza ao excluir todos os objetos do gráfico.
3. Lógica Principal em OnTick
void OnTick() { UpdateMetrics(); // Call to the function that fetches and displays the metrics }
Esta função é acionada a cada tick (mudança de preço). Ela chama a função UpdateMetrics para coletar e analisar dados.
4. Função UpdateMetrics
void UpdateMetrics() { if (TimeCurrent() - lastUpdateTime >= 2 * 3600) // Check if 2 hours have passed since last update { // Fetch previous day's data datetime prevDay = iTime(NULL, PERIOD_D1, 1); previousDayOpen = iOpen(NULL, PERIOD_D1, 1); previousDayClose = iClose(NULL, PERIOD_D1, 1); previousDayHigh = iHigh(NULL, PERIOD_D1, 1); previousDayLow = iLow(NULL, PERIOD_D1, 1); previousDayVolume = iVolume(NULL, PERIOD_D1, 1); // Fetch current day's volume currentDayVolume = iVolume(NULL, PERIOD_D1, 0); // Volume for today // Calculate support and resistance support = previousDayLow - (previousDayHigh - previousDayLow) * 0.382; resistance = previousDayHigh + (previousDayHigh - previousDayLow) * 0.382; // Determine market direction string marketDirection = AnalyzeMarketDirection(previousDayOpen, previousDayClose, previousDayHigh, previousDayLow); // Calculate possible lot size based on risk management double lotSize = CalculateLotSize(support, resistance); // Retrieve account metrics double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE); double accountEquity = AccountInfoDouble(ACCOUNT_EQUITY); // Calculate market spread manually double marketBid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double marketAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double marketSpread = marketAsk - marketBid; // Calculate market volatility using ATR int atrHandle = iATR(NULL, PERIOD_H1, ATR_Period); double atrValue = 0.0; if (atrHandle != INVALID_HANDLE) // Check if the handle is valid { double atrBuffer[]; if (CopyBuffer(atrHandle, 0, 0, 1, atrBuffer) > 0) { atrValue = atrBuffer[0]; } IndicatorRelease(atrHandle); // Release the indicator handle } // Create the output string including the last update time string lastUpdateStr = TimeToString(TimeCurrent(), TIME_DATE | TIME_MINUTES); string infoStr = StringFormat("Prev Day Open: %.2f\nPrev Day Close: %.2f\nPrev Day High: %.2f\nPrev Day Low: %.2f\n" "Prev Day Volume: %.0f\nCurrent Day Volume: %.0f\nMarket Direction: %s\n" "Support: %.2f\nResistance: %.2f\nAccount Balance: %.2f\nAccount Equity: %.2f\n" "Market Spread: %.2f\nMin Lot Size: %.2f, Max Lot Size: %.2f\n" "Market Volatility (ATR): %.2f\nLast Update Time: %s\nPossible Lot Size: %.2f", previousDayOpen, previousDayClose, previousDayHigh, previousDayLow, previousDayVolume, currentDayVolume, marketDirection, support, resistance, accountBalance, accountEquity, marketSpread, minLotSize, maxLotSize, atrValue, lastUpdateStr, lotSize); // Log the information Print(infoStr); // Display information on the chart Comment(infoStr); // Remove old trend lines and create new ones for previous day's high/low ObjectsDeleteAll(0); // Draw continuous trend lines DrawContinuousTrendLine("PrevDayHigh", previousDayHigh); DrawContinuousTrendLine("PrevDayLow", previousDayLow); // Update last update time lastUpdateTime = TimeCurrent(); } }
- Verificação de Tempo: A função só é executada se já tiverem se passado 2 horas desde a última atualização, minimizando cálculos excessivos.
- Coleta de Dados: iTime, iOpen, iClose, iHigh, iLow e iVolume são usados para coletar dados do último dia e do dia atual.
- Suporte e Resistência: O script calcula níveis de Fibonacci com base nos preços mínimo e máximo do dia anterior.
- Análise da Direção do Mercado: Chama a função AnalyzeMarketDirection para avaliar as condições de mercado.
- Cálculo do Tamanho do Lote: Chama a função CalculateLotSize para determinar quanto negociar com base nos princípios de gerenciamento de risco.
- Métricas da Conta e do Mercado: Recupera saldo da conta, patrimônio e spread de mercado para melhores decisões de negociação.
- Cálculo do ATR: Recupera o Average True Range (ATR) para medir a volatilidade do mercado.
- Informações de Saída: Formata e exibe métricas relevantes na string infoStr e registra com Print.
- Criação de Linhas de Tendência: Limpa linhas de tendência antigas e cria novas com base nos preços máximo e mínimo do dia anterior.
5. Análise da Direção do Mercado
string AnalyzeMarketDirection(double open, double close, double high, double low) { string direction; if (close > open) { direction = "Bullish"; } else if (close < open) { direction = "Bearish"; } else { direction = "Neutral"; } // Include current trends or patterns based on high and low for further analysis if (high > open && high > close) { direction += " with bullish pressure"; // Example addition for context } else if (low < open && low < close) { direction += " with bearish pressure"; // Example addition for context } return direction; }
- Determinar a Direção do Mercado: Esta função utiliza os preços de abertura, fechamento, máxima e mínima do dia anterior para determinar se o mercado está em alta, baixa ou neutro.
- Insights Adicionais: Ela verifica indicadores de pressão com base em máximas e mínimas, fornecendo uma análise mais contextual das condições de mercado.
6. Desenho de Linhas de Tendência
void DrawContinuousTrendLine(string name, double price) { datetime startTime = TimeCurrent() - 24 * 3600; // Extend 24 hours into the past ObjectCreate(0, name, OBJ_TREND, 0, startTime, price, TimeCurrent(), price); ObjectSetInteger(0, name, OBJPROP_COLOR, (StringFind(name, "High") >= 0) ? clrRed : clrBlue); ObjectSetInteger(0, name, OBJPROP_WIDTH, 2); // Set thickness of the line ObjectSetInteger(0, name, OBJPROP_XSIZE, 0); // Set this property to extend the line infinitely to the left }
- Desenhar Linhas de Tendência: Esta função cria uma linha de tendência no gráfico para a máxima ou mínima do dia anterior, estendendo-a para trás em 24 horas.
- Personalização: Cada linha tem uma cor (vermelho para máxima, azul para mínima) e uma largura especificada.
7. Cálculo do Tamanho do Lote
double CalculateLotSize(double support, double resistance) { double stopLossDistance = MathAbs((support - resistance) * StopLossMultiplier); double riskAmount = AccountInfoDouble(ACCOUNT_BALANCE) * (RiskPercentage / 100.0); // Get the tick size for the current symbol double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Calculate the lot size based on the stop loss and tick size double lotSize = riskAmount / (stopLossDistance / tickSize); lotSize = NormalizeDouble(lotSize, 2); // Normalize the lot size to two decimal places // Ensure lot size is above minimum lot size allowed by broker double minLotSize = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN); if (lotSize < minLotSize) lotSize = minLotSize; return lotSize; }
- Gerenciamento de Risco: Esta função calcula o tamanho do lote com base no percentual de risco definido em relação ao saldo da conta do usuário e à distância de stop loss calculada.
- Normalização: Garante que o tamanho do lote esteja dentro dos limites aceitáveis definidos pelo corretor.
Implementação e Testes do Código
Implementando um Expert Advisor (EA) no MetaTrader 5: Um Guia Passo a Passo- Abrir o MetaTrader 5: Inicie a plataforma de negociação MetaTrader 5 em seu computador.
- Acessar o MetaEditor: Para abrir o MetaEditor, vá até a barra de menu e clique em Ferramentas > MetaQuotes Language Editor, ou simplesmente pressione F4. Alternativamente, se tiver o MetaEditor instalado separadamente, você pode executá-lo diretamente.
- Inserir o EA: No MetaEditor, selecione Arquivo > Novo > Expert Advisor ou abra um arquivo EA existente (.mq5). Se estiver criando um novo EA, siga as instruções para nomeá-lo e defini-lo.
- Compilar o EA: Após editar o código do seu EA, clique no botão Compilar (ou pressione F7). Certifique-se de que não haja erros; uma compilação bem-sucedida gerará um arquivo executável.
- Carregar o EA no MetaTrader 5: Retorne à plataforma MetaTrader 5 e abra o painel Navegador (Ctrl + N). Encontre seu EA compilado na seção Expert Advisors.
- Anexar o EA a um Gráfico: Arraste e solte o EA no gráfico desejado ou clique com o botão direito no EA e selecione Anexar a um gráfico. Uma janela de configurações aparecerá para personalização de parâmetros.
- Ativar Negociação Automática: Certifique-se de que a Negociação Automática esteja ativada clicando no botão verde AutoTrading na barra de ferramentas do MetaTrader 5. Se solicitado, marque a opção Permitir negociação automatizada nas configurações do EA.
- Monitorar o Desempenho: Acompanhe o desempenho do EA no gráfico. Use o Testador de Estratégia para backtesting, se necessário.
- Ajustar Configurações Conforme Necessário: Você pode modificar parâmetros ou configurações diretamente na janela de configurações do EA clicando com o botão direito no gráfico.
Fig 5. Resultado da Análise
A Figura 5 ilustra o anexo do EA ao gráfico, resultando nos resultados exibidos.
Fig 6. Resultado da Análise
A Figura 6 acima ilustra o desempenho geral do nosso Expert Advisor (EA), que é capaz de calcular automaticamente métricas-chave do mercado e apresentá-las em formato de gráfico. O EA desenha linhas de tendência com base nos níveis de suporte e resistência do dia anterior. Ele realiza atualizações regulares das informações de mercado a cada duas horas, conforme indicado nos dois últimos diagramas, que também exibem os horários mais recentes de atualização.
Conclusão
Em resumo, a implantação bem-sucedida do EA Analytics Master marca um avanço significativo na negociação automatizada. Este EA não apenas automatiza a análise das principais métricas de mercado, mas também fornece insights valiosos sobre níveis de suporte e resistência, ajudando os traders a tomarem decisões mais inteligentes. Ao integrar um gerenciamento de risco eficaz e fornecer atualizações em tempo real, ele apoia os traders na navegação pelas complexidades do mercado com confiança. No geral, esta ferramenta melhora a eficiência da negociação e capacita os usuários a se manterem informados e proativos em suas estratégias de negociação.
Reserve um tempo para realizar backtests do EA em dados históricos para entender seu desempenho em diferentes condições de mercado. Isso ajudará a ajustar suas configurações de acordo com o seu estilo de negociação. Revise regularmente as métricas e os insights fornecidos pelo EA. As condições de mercado podem mudar rapidamente, portanto, manter-se atualizado é crucial para tomar decisões oportunas. Sempre siga sua estratégia de gerenciamento de risco. Ajuste as configurações de percentual de risco para alinhar com sua tolerância pessoal ao risco e tamanho da conta. Engaje-se com recursos educacionais sobre estratégias de negociação, comportamento de mercado e análise técnica para complementar os insights do EA. Se encontrar problemas ou tiver sugestões de melhorias, considere fornecer feedback ao desenvolvedor. A contribuição dos usuários é inestimável para aprimoramentos futuros.
Seguindo essas recomendações, você pode maximizar a eficácia do EA Analytics Master e melhorar sua experiência geral de negociação.
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 | Analytics Master | Atualização Regular das métricas de mercado a cada duas horas | 1.01 | Segundo Lançamento | Terceira ferramenta no Lynnchris Tool Chest |
Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/16434
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.





- 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
Olá , Ifeanyichukwu Ikwecheghe,
Obrigado por seu feedback positivo! Fico feliz em saber que você considera a ferramenta valiosa.
Para responder às suas perguntas:
1. A ferramenta não abre negociações para você; em vez disso, ela fornece análises e sinais que você pode usar para tomar decisões de negociação informadas. Você executará manualmente as negociações com base em suas previsões.
2. Os sinais são atualizados periodicamente, aproximadamente a cada duas horas, permitindo que você se adapte às mudanças nas condições do mercado. Embora não reflitam as mudanças em tempo real durante a sessão, as atualizações o ajudarão a entender as mudanças de sentimento do mercado, seja um estado de baixa mudando para alta ou vice-versa.
Suas opiniões e outras sugestões são bem-vindas para discussão.
As duas primeiras ferramentas são independentes:
Portanto, o segundo não é uma versão atualizada do primeiro. A verdadeira continuação é o Analytics Master EA, que expande o Analytical Comment.
Esse script/EA está disponível apenas para o MT5. Não há versão para o MT4, pois o MT4 foi descontinuado e não é mais mantido, portanto, o desenvolvimento só faz sentido no MT5.