English Русский 中文 Español Deutsch 日本語
preview
Desenvolvimento do Kit de Ferramentas de Análise de Price Action (Parte 1): Projetor de Gráficos

Desenvolvimento do Kit de Ferramentas de Análise de Price Action (Parte 1): Projetor de Gráficos

MetaTrader 5Exemplos |
16 2
Christian Benjamin
Christian Benjamin

Introdução

Neste artigo, intitulado “O Projetor de Gráficos”, focamos no desenvolvimento de uma ferramenta projetada para simplificar a análise de mercado, especialmente para traders de price action. O Projetor de Gráficos sobrepõe o gráfico do dia anterior ao atual em uma representação no modo fantasma.

Primeiro, forneceremos uma justificativa para o Projetor de Gráficos, explicando a importância de projetar o gráfico do dia anterior sobre o gráfico atual. Em seguida, apresentaremos uma visão geral da ferramenta, seguida de uma discussão sobre a implementação do código. Por fim, concluiremos com um resumo dos nossos achados. 

Nossos subtópicos são os seguintes:

  1. Justificativa do Projetor de Gráficos
  2. Visão Geral da Ferramenta
  3. Implementação do Código
  4. Resultados
  5. Conclusão


Justificativa do Projetor de Gráficos

Redesenhar o gráfico do dia anterior sobre o gráfico do dia atual oferece várias vantagens para os traders. Veja como essa técnica os ajuda:

Vantagens
Descrição
Contexto Imediato Sobrepor os dados do dia anterior permite que os traders visualizem rapidamente os movimentos de preço e os principais níveis de suporte/resistência, ajudando-os a avaliar as condições atuais do mercado em relação a referências históricas.
Identificação Aprimorada de Níveis-Chave A sobreposição destaca níveis críticos de preço, como suporte e resistência, de forma mais clara do que linhas manuais, auxiliando os traders a prever futuros movimentos ao identificar pressões passadas de compra e venda.
Reconhecimento de Tendências Observar a interação do preço atual com a ação do dia anterior ajuda na identificação de tendências. Negociar acima da máxima anterior sugere momentum altista; negociar abaixo da mínima pode indicar sentimento baixista.
Análise Otimizada Esse método elimina a necessidade de rolagem histórica, permitindo que os traders se concentrem na análise em tempo real, economizem tempo e tomem decisões mais rápidas em mercados de alta velocidade.
Percepções Comportamentais Ao revelar como a ação do preço atual se alinha ao comportamento anterior, a sobreposição ajuda os traders a compreender a psicologia do mercado, como a força potencial em movimentos altistas quando se afasta de níveis de resistência.
Gestão de Risco Visuais claros de suportes e resistências passados ajudam os traders a definir ordens de stop-loss em níveis informados, o que auxilia na mitigação de risco.
Planejamento Simplificado de Operações Visualizar os movimentos de preço do dia anterior simplifica o planejamento de entradas e saídas, permitindo que os traders estruturem operações em torno de níveis já estabelecidos e melhorem a eficácia da estratégia.
Foco na Price Action Ao manter a integridade dos movimentos originais de preço, os traders podem focar diretamente na dinâmica da ação de preço sem a distorção que indicadores típicos podem introduzir. Essa clareza pode levar a entradas e saídas mais precisas.

Na ilustração abaixo, comparamos os gráficos de dois dias consecutivos, 19 e 20 de setembro de 2024. Tracei linhas para indicar os níveis de suporte e resistência. A comparação mostra claramente como o mercado respeita esses níveis anteriores. No entanto, existe uma limitação: os níveis de suporte identificados nem sempre são os mais significativos. A incapacidade de isolar apenas os principais níveis de suporte e resistência pode introduzir ruído nos dados, dificultando a capacidade do trader de tomar decisões informadas. Sem filtrar os níveis menos relevantes, os traders podem ter dificuldades em identificar tendências ou reversões genuínas, o que aumenta o risco de encontrar sinais falsos. Isso pode levar a entradas e saídas equivocadas, afetando negativamente o desempenho geral da negociação.

É aqui que nossa ferramenta de projeção entra em jogo. Ela pode identificar e exibir as máximas e mínimas mais relevantes, o que melhora significativamente a precisão da análise. Além disso, a ferramenta permite sobrepor o gráfico do dia anterior diretamente sobre o gráfico atual, tornando mais fácil analisar e interpretar os movimentos de preço.                                                

 

Fig 1. Comparando a Ação de Preço


Desenvolvimento do código

No desenvolvimento de código usando o MetaEditor, o processo começa iniciando o MetaEditor. Uma vez aberto o aplicativo, você navega até a opção “Novo” para iniciar a criação de um novo arquivo. Após selecionar “Novo”, uma janela aparece onde você pode escolher o tipo de arquivo ou projeto que deseja criar. Neste caso, você selecionaria “Script” como a categoria do projeto, já que esse é o tipo de programa que deseja desenvolver.

A Fig 2 abaixo ilustra a janela onde é possível selecionar a opção para criar um script. Essa janela fornece as escolhas necessárias para definir o tipo de projeto em que você vai trabalhar. Ao escolher a opção “Script”, você está especificando que deseja criar um programa automatizado personalizado no MetaTrader. Esse passo é crítico, pois define a base para o ambiente de desenvolvimento, garantindo que o MetaEditor gere o modelo apropriado para escrever seu script MQL5. O layout claro e amigável dessa janela simplifica o processo de começar seu projeto de codificação.

Script

Fig 2. Iniciar Novo Script

Aqui vou guiá-lo sobre como podemos criar o efeito fantasma, bem como projetar o gráfico anterior no gráfico atual usando MQL5.

1. Propriedades:

Um dos principais aspectos que quero enfatizar é a importância das propriedades e dos direitos autorais do script. Adicionar um aviso de copyright ao seu script MQL5 é crucial para proteger seu trabalho. Isso estabelece sua propriedade e deixa claro que você é o criador original, ajudando a prevenir uso não autorizado ou reivindicações sobre o seu código. Em caso de disputas, esse aviso pode servir como prova de autoria. Sem copyright, outros podem assumir que seu script está livre para uso ou distribuição. Ao incluir uma declaração de copyright, você mantém o controle sobre como seu código é compartilhado, vendido ou modificado.

//+------------------------------------------------------------------+
//|                                              Chart Projector.mq5 |
//|                                               Christian Benjamin |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Christian Benjamin"
#property link        "http://www.mql5.com"
#property description "Script to overlay yesterday's price action with ghost effect. Projected onto current day's chart and beyond"
#property indicator_chart_window
#property strict
#property script_show_inputs
#property version "1.0"

Além disso, o copyright permite oportunidades de monetização. Você pode vender o script, oferecê-lo sob termos específicos de licença ou definir condições de uso. Isso aumenta o profissionalismo do seu trabalho, sinalizando o seu valor, além de garantir que você receba o devido reconhecimento caso outros utilizem ou expandam seu código.

2. Seção de Inputs:

Criamos variáveis de entrada para permitir que os usuários personalizem o efeito de velas fantasma. Esses inputs definem a cor, o estilo de linha e a largura do efeito fantasma. Os usuários também podem ajustar se desejam exibir os preços de máxima e mínima do dia anterior, deslocar o padrão fantasma para frente ou para trás, e projetá-lo ainda mais no futuro.

input color GhostColor = clrGray;        // Color for ghost effect (can be transparent)
input int LineStyle = STYLE_DOT;         // Line style for ghost candlesticks
input int LineWidth = 2;                 // Line width for ghost candlesticks
input bool ShowHighLow = true;           // Show high/low lines of yesterday
input int ShiftBars = 0;                 // Number of bars to shift ghost forward/backward
input int ProjectForwardBars = 100;      // Number of bars to project ghost pattern forward

Esta seção é importante porque dá flexibilidade ao usuário, permitindo que o padrão de velas fantasma seja adaptado de acordo com suas preferências.

script inputs

Fig 3. Entradas do Script

O diagrama acima ilustra como os parâmetros de entrada são apresentados no MetaTrader 5, permitindo aos usuários visualizar, modificar e personalizá-los diretamente ao abrir um gráfico. Esses parâmetros permitem que os traders ajustem aspectos-chave da ferramenta, como estilos de linha, cores e configurações de projeção das velas, garantindo que o gráfico se adapte às suas preferências e estratégias específicas. Essa flexibilidade ajuda a melhorar a experiência do usuário, oferecendo maior controle sobre como a ação de preço passada e presente é visualizada.

3. Função OnStart:

A função OnStart() serve como o ponto de entrada do script. Quando o script é executado, essa função chama a função principal DrawGhostCandles().

void OnStart()
{
    DrawGhostCandles(); // Call the function to draw ghost candles
}

Este método mantém a estrutura limpa, garantindo que o script prossiga imediatamente para a função central ao iniciar. Ao chamar uma função dedicada, asseguramos que a tarefa de desenhar velas fantasma seja tratada de forma separada e mais eficiente.

4. Função DrawGhostCandles:

Essa função contém a lógica para sobrepor o padrão de velas fantasma do dia anterior ao gráfico atual. Primeiro, obtemos o timeframe atual, depois calculamos o início e o fim tanto do dia anterior quanto do dia atual. Também determinamos o número de barras de ontem e de hoje usando a função iBarShift().

void DrawGhostCandles()
{
    ENUM_TIMEFRAMES timeFrame = Period(); // Get the current timeframe
    
    datetime yesterdayStart = iTime(_Symbol, PERIOD_D1, 1); // Start of yesterday
    datetime todayStart = iTime(_Symbol, PERIOD_D1, 0); // Start of today
    datetime todayEnd = todayStart + PeriodSeconds(PERIOD_D1); // Expected end of today (24 hours)

    int startBarYesterday = iBarShift(_Symbol, timeFrame, yesterdayStart); // Yesterday's first bar
    int endBarYesterday = iBarShift(_Symbol, timeFrame, todayStart) - 1; // Yesterday's last bar

    if (startBarYesterday == -1 || endBarYesterday == -1)
    {
        Print("No data for yesterday.");
        return;
    }

    int barsToday = Bars(_Symbol, timeFrame, todayStart, todayEnd); // Total number of bars today

    for (int i = 0; i < barsToday; i++) // Loop through yesterday's bars
    {
        int yesterdayIndex = startBarYesterday - i % (endBarYesterday - startBarYesterday + 1);

        datetime timeYesterday = iTime(_Symbol, timeFrame, yesterdayIndex); 
        double openYesterday = iOpen(_Symbol, timeFrame, yesterdayIndex);
        double highYesterday = iHigh(_Symbol, timeFrame, yesterdayIndex);
        double lowYesterday = iLow(_Symbol, timeFrame, yesterdayIndex);
        double closeYesterday = iClose(_Symbol, timeFrame, yesterdayIndex);

        datetime projectedTime = todayStart + i * PeriodSeconds() + ShiftBars * PeriodSeconds(); 

        if (projectedTime >= todayEnd) break; // Stop projection if today's end is reached

        DrawGhostBar(projectedTime, openYesterday, highYesterday, lowYesterday, closeYesterday); // Draw ghost bar
    }

    if (ShowHighLow)
    {
        double yesterdayHigh = iHigh(_Symbol, PERIOD_D1, 1); // Yesterday's high
        double yesterdayLow = iLow(_Symbol, PERIOD_D1, 1);   // Yesterday's low

        DrawHorizontalLine("YesterdayHigh", yesterdayHigh);  // Draw high
        DrawHorizontalLine("YesterdayLow", yesterdayLow);    // Draw low
    }
}

A função percorre cada barra do dia anterior, recupera seus preços de abertura, máxima, mínima e fechamento, e projeta esses valores no gráfico de hoje. O loop garante que cada vela de ontem seja espelhada como um “fantasma” no gráfico atual. Isso ajuda a visualizar como a ação de preço do dia anterior se compara aos movimentos de preço de hoje.

5. Função DrawGhostBar:

Essa função lida com o desenho de cada vela fantasma individual no gráfico. Uma linha é criada para representar a faixa entre máxima e mínima, e um retângulo é desenhado para representar a faixa entre abertura e fechamento de cada vela.

void DrawGhostBar(datetime time, double open, double high, double low, double close)
{
    string lineName = "GhostLine" + IntegerToString(time);  // Line name for high-low
    ObjectCreate(0, lineName, OBJ_TREND, 0, time, low, time, high); // Create the line
    ObjectSetInteger(0, lineName, OBJPROP_COLOR, GhostColor); // Set color
    ObjectSetInteger(0, lineName, OBJPROP_STYLE, LineStyle);  // Set style
    ObjectSetInteger(0, lineName, OBJPROP_WIDTH, LineWidth);  // Set width

    string ocName = "GhostOC" + IntegerToString(time);  // Rectangle name for open-close
    ObjectCreate(0, ocName, OBJ_RECTANGLE, 0, time, open, time + PeriodSeconds(), close); // Create rectangle
    ObjectSetInteger(0, ocName, OBJPROP_COLOR, GhostColor); // Set color
    ObjectSetInteger(0, ocName, OBJPROP_STYLE, LineStyle);  // Set style
    ObjectSetInteger(0, ocName, OBJPROP_WIDTH, LineWidth);  // Set width
}

Ao separar essa funcionalidade em sua própria função, simplificamos o processo de desenhar cada vela fantasma. Essa abordagem modular torna mais fácil gerenciar, atualizar e personalizar a forma como essas velas aparecem.

6. Função DrawHorizontalLine:

Essa função desenha linhas horizontais no gráfico, marcando os preços de máxima e mínima do dia anterior. Essas linhas atuam como indicadores visuais de níveis-chave de preço que os traders frequentemente observam.

void DrawHorizontalLine(string name, double price)
{
    if (!ObjectCreate(0, name, OBJ_HLINE, 0, TimeCurrent(), price))
    {
        Print("Failed to create horizontal line."); // Error handling
    }
    ObjectSetInteger(0, name, OBJPROP_COLOR, GhostColor); // Set color
    ObjectSetInteger(0, name, OBJPROP_STYLE, LineStyle);  // Set style
    ObjectSetInteger(0, name, OBJPROP_WIDTH, LineWidth);  // Set width
}

Incluir essa funcionalidade aprimora o script ao adicionar pontos de referência importantes, ajudando os traders a identificar facilmente níveis de suporte e resistência do dia anterior. A função garante que essas linhas sejam desenhadas com as mesmas opções de personalização das velas fantasma.


Resultados

O resultado do código do Projetor de Gráficos é uma representação visual da ação de preço do dia anterior sobreposta ao gráfico do dia atual, fornecendo aos traders percepções valiosas sobre o comportamento do mercado. Isso é alcançado por meio da geração de velas fantasmas do dia anterior, que são projetadas no gráfico atual, permitindo que os traders observem como o mercado se movimentou em relação ao desempenho do dia anterior. Ao visualizar as máximas, mínimas, abertura e fechamento do dia anterior, os traders podem obter uma compreensão mais clara do sentimento do mercado e das tendências de preço.

Além disso, o script opcionalmente desenha linhas horizontais para a máxima e a mínima do dia anterior, servindo como potenciais níveis de suporte e resistência para o dia atual. Os traders podem utilizar esses níveis para tomar decisões informadas sobre pontos de entrada e saída com base no comportamento do mercado em relação a esses marcos históricos. O script também oferece várias entradas personalizáveis, como cor, estilo de linha, largura de linha e a capacidade de deslocar a projeção fantasma para frente ou para trás, permitindo que os traders ajustem a visualização de acordo com suas estratégias e preferências. Isso melhora a experiência do usuário e possibilita ferramentas de análise personalizadas.

Com a sobreposição de velas fantasmas, os traders podem avaliar rapidamente se a ação de preço atual espelha, diverge ou reage aos movimentos anteriores, informando suas estratégias de negociação. O efeito fantasma simplifica a análise de mercado ao eliminar a desordem de indicadores excessivos, focando exclusivamente na ação do dia anterior e fornecendo percepções mais claras sobre a dinâmica do preço. Essa clareza auxilia na identificação de possíveis tendências e reversões, levando a decisões de negociação mais estratégicas. Veja a Fig 4 abaixo.

Resultados do Projetor de Gráficos

Fig 4. Resultado da Projeção de Gráficos

Olhando para a Fig 4 acima, há uma apresentação clara dos resultados de acordo com o teste de código no MetaTrader 5. O sistema parece excelente, já que o gráfico do dia atual respeita os níveis de suporte e resistência. É evidente que o preço rompeu abaixo da mínima do dia anterior, como indicado pelas linhas horizontais, antes de recuar e continuar sua tendência de baixa.

Resultado da Projeção de Gráficos

Fig 5. Resultado da Projeção de Gráficos

A Figura 5 ilustra os resultados do nosso projetor de gráficos, destacando como a dinâmica atual do mercado está respeitando as máximas e mínimas do dia anterior.


Conclusão

Em conclusão, o desenvolvimento e a implementação do Projetor de Gráficos para análise de price action representam um avanço significativo para traders que buscam aprimorar suas habilidades de interpretação de mercado. Ao sobrepor a ação de preço do dia anterior ao gráfico atual, fornecemos uma poderosa ferramenta visual que facilita o entendimento da dinâmica de mercado sem a desordem de indicadores tradicionais. Essa abordagem permite que os traders identifiquem rapidamente níveis-chave de suporte e resistência, auxiliando significativamente nos processos de tomada de decisão. Os insights obtidos com esse método refletem não apenas o comportamento dos movimentos de preço, mas também o sentimento coletivo dos participantes do mercado, oferecendo uma perspectiva mais profunda sobre possíveis tendências futuras.

Recomendo que todos usem isso apenas para fins educacionais. Por favor, não experimentem com dinheiro real!

Proponho nomear nosso kit de ferramentas como “Lynnchris Tools Chest”, e registrarei cada ferramenta que desenvolvermos, bem como atualizarei o registro sempre que publicarmos uma nova versão. Veja a tabela abaixo.
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

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/16014

Arquivos anexados |
Últimos Comentários | Ir para discussão (2)
Pat Patel
Pat Patel | 12 nov. 2024 em 04:10

Parabéns por um dos maiores eventos de sua vida. Indicador bem feito, mas podemos conseguir isso criando uma SMA do Período 1, deslocada pelo número de períodos do período de tempo em um dia. Para 1H tF, deslocamento por 24, para m15, deslocamento por 1440/15=96. Aguardo ansiosamente sua incursão nos estudos de gráficos.

Christian Benjamin
Christian Benjamin | 20 nov. 2024 em 12:43
Pat Patel #:

Parabéns por um dos maiores eventos de sua vida. Indicador muito bem feito, mas podemos conseguir isso criando uma SMA do Período 1, deslocada pelo número de períodos do período de tempo em um dia. Para 1H tF, deslocamento por 24, para m15, deslocamento por 1440/15=96. Aguardo ansiosamente sua incursão nos estudos de mercado.

Muito obrigado

Otimização com Jogo do Caos — Chaos Game Optimization (CGO) Otimização com Jogo do Caos — Chaos Game Optimization (CGO)
Apresentamos o novo algoritmo meta-heurístico Chaos Game Optimization (CGO), que demonstra capacidade única de manter alta eficiência em tarefas de grande dimensionalidade. Ao contrário da maioria dos algoritmos de otimização, o CGO não apenas não perde desempenho, como também às vezes melhora sua performance quando a complexidade do problema aumenta, o que constitui sua principal característica.
Simulação de mercado: Position View (VIII) Simulação de mercado: Position View (VIII)
No artigo anterior vimos como poderíamos implementar o indicador de posição, para que pudéssemos fechar uma posição aberta diretamente via gráfico. Isto interagindo com um objeto que estaria a nossa disposição no gráfico. Depois que o primeiro mecanismo estava concluído e funcionando. Começamos a fazer algumas modificações para que também fosse possível remover as linhas de take profit e stop loss. Isto de uma posição que estivesse aberta. Porém como as mudanças a serem feitas precisariam de uma explicação adequada. Naquele mesmo artigo, apenas mostrei as mudanças que deveriam ocorrer no âmbito do Expert Advisor. Sendo necessário mostrar ainda as mudanças que deveriam ocorrer no Indicador de posição.
Desenvolvendo um EA multimoeda (Parte 24): Conectando uma nova estratégia (I) Desenvolvendo um EA multimoeda (Parte 24): Conectando uma nova estratégia (I)
Neste artigo, vamos analisar como conectar uma nova estratégia ao sistema de otimização automática criado. Vamos ver quais EAs precisaremos criar e se será possível evitar alterações nos arquivos da biblioteca Advisor, ou pelo menos reduzi-las ao mínimo.
Do básico ao intermediário: Como bolhas de sabão Do básico ao intermediário: Como bolhas de sabão
Neste artigo, será explicado um mecanismo muito simples e fácil de entender, cujo proposito seria o de gerar a ordenação de uma array, qualquer. Nele veremos que nem sempre o resultado apresentado é aquele que realmente esperamos obter. Sendo assim necessário adaptar a própria implementação a fim de conseguir obter os resultados adequado.