Discussão do artigo "Traçando linhas de tendência baseadas em fractais usando MQL4 e MQL5"

 

Novo artigo Traçando linhas de tendência baseadas em fractais usando MQL4 e MQL5 foi publicado:

O artigo descreve a automação da plotagem de linhas de tendência com base no indicador Fractals usando MQL4 e MQL5. A estrutura do artigo fornece uma visão comparativa da solução para as duas linguagens. As linhas de tendência são plotados usando os dois últimos fractais conhecidos.

Recentemente, eu estive pensando sobre o uso de linhas de tendência. Houve uma questão sobre a escolha do método para determinar os pontos para a plotagem das linhas, e também sobre a precisão da plotagem. Eu decidi usar os fractais como base.

Eu costumo analisar os mercados em meu trabalho principal, onde eu posso passar algum tempo nas negociações. Além disso, você não pode simplesmente desenhar as linhas em um período de tempo grande - a linha deve ser traçada pelos pontos extremos com uma precisão de até 15 minutos. A razão para isto é que o tempo do fractal em um período de tempo maior nem sempre coincide com o tempo do mesmo ponto extremo no M15. Em suma, isto é onde a automação vem para ajudar. Aconteceu que eu comecei a escrever o código usando MQL5 e, em seguida, eu mudei para MQL4, porque eu precisava este programa para o MetaTrader 4.

Neste artigo eu apresentei a minha solução do problema usando MQL4 e MQL5. O artigo fornece uma visão comparativa, mas seria inadequado comparar aqui a eficiência da MQL4 e MQL5. Além disso, eu entendo que provavelmente há outras soluções, mais eficaz do que a minha. O artigo pode ser útil para iniciantes que escrevem scripts usando tanto o MQL4 quanto o MQL5, especialmente para aqueles que planejam usar fractais e linhas de tendência.

3. Determinando os valores de preço e de tempo dos fractais

Para traçar a linha que precisamos para determinar o tempo e o preço de um fractal. Claro que, em MQL4 poderíamos simplesmente usar as séries de tempo predefinidas High[] e Alta Low[], e a função iTime(), no entanto, também precisamos obter as coordenadas de tempo com maior precisão para garantir a plotagem correta da linha de tendência.

Figo. 1-2 mostram a diferença entre os valores de tempo dos pontos de extremos nos períodos de tempo H4 e M15.

Fig.1. O valor de tempo do ponto extremo em H4

Fig.1. O valor de tempo do ponto extremo em H4

Fig.2. O valor de tempo do ponto extremo em M15

Fig.2. O valor de tempo do ponto extremo em M15

Autor: Almat Kaldybay

 
Tarde. Crítica. Um dia nem sempre é um número fixo de velas. No seu caso, nem sempre é correto verificar os dados de 96 candles para M15. Às vezes, você pode entrar nos dados de outro dia.
 
Tapochun:
Tarde. Crítica. Um dia nem sempre é um número fixo de velas. No seu caso, nem sempre é correto verificar os dados de 96 candles para M15. Às vezes, você pode entrar nos dados de outro dia.
Obrigado pela observação. Eu mesmo não me deparei com isso, pois desisti da TL diária em favor da negociação intradiária (olho para 4 horas, hora e m15). Mas, em geral, terei que examinar melhor a situação.
 
Almat Kaldybay:
Obrigado pelo comentário. Eu realmente não me deparei com isso, pois desisti da TL diária em favor da negociação intradiária (olho para 4 horas, hora e m15). Mas, em geral, teremos que analisar melhor a situação.
Isso se aplica a qualquer TF, não necessariamente ao M15. A questão é que, se você estiver procurando topos/raízes em um dia, por exemplo, no dia anterior, não deve se basear em um número fixo de candles, é melhor se basear no tempo: da abertura do dia anterior, nesse caso, até a abertura (o primeiro candle, que pode ter um horário diferente de 00h00) do dia atual.
 
Tapochun:
Isso é válido para qualquer TF, não necessariamente para o M15. A questão é que, se você estiver procurando topos/raízes em um dia, por exemplo, no dia anterior, não deve confiar em um número fixo de velas, é melhor confiar no tempo: da abertura do dia anterior, nesse caso, até a abertura (a primeira vela, que pode ter um horário diferente de 00h00) do dia atual.

Agora mesmo estou escrevendo um EA no mql4 e me lembrei de sua crítica. Embora não tenha me deparado com essa situação na prática, decidi excluí-la. A solução é a seguinte:

//1.2 Determine a barra que segue o extremo
int UpperFractal_1_base_next=UpperFractal_1_base-1;
int UpperFractal_2_base_next=UpperFractal_2_base-1;
int LowerFractal_1_base_next=LowerFractal_1_base-1;
int LowerFractal_2_base_next=LowerFractal_2_base-1;
//1.3 Determinar o tempo de formação do fractal
datetime UpFractalTime_1_base=iTime(NULL,base_tf,UpperFractal_1_base);
datetime UpFractalTime_2_base=iTime(NULL,base_tf,UpperFractal_2_base);
datetime LowFractalTime_1_base=iTime(NULL,base_tf,LowerFractal_1_base);
datetime LowFractalTime_2_base=iTime(NULL,base_tf,LowerFractal_2_base);
//1.4 Determine o tempo da barra após o extremo
datetime UpFractalTime_1_base_next=iTime(NULL,base_tf,UpperFractal_1_base_next);
datetime UpFractalTime_2_base_next=iTime(NULL,base_tf,UpperFractal_2_base_next);
datetime LowFractalTime_1_base_next=iTime(NULL,base_tf,LowerFractal_1_base_next);
datetime LowFractalTime_2_base_next=iTime(NULL,base_tf,LowerFractal_2_base_next);
//1.5 Determine os índices de barra em m15 para o tempo de abertura da barra fractal
int UpperFractal_1_m15_base=iBarShift(NULL, 15, UpFractalTime_1_base,true);
int UpperFractal_2_m15_base=iBarShift(NULL, 15, UpFractalTime_2_base,true);
int LowerFractal_1_m15_base=iBarShift(NULL, 15, LowFractalTime_1_base,true);
int LowerFractal_2_m15_base=iBarShift(NULL, 15, LowFractalTime_2_base,true);
//1.6 Determine os índices de barra em m15 para a barra após o extremo
int UpperFractal_1_m15_base_next=iBarShift(NULL, 15, UpFractalTime_1_base_next,true);
int UpperFractal_2_m15_base_next=iBarShift(NULL, 15, UpFractalTime_2_base_next,true);
int LowerFractal_1_m15_base_next=iBarShift(NULL, 15, LowFractalTime_1_base_next,true);
int LowerFractal_2_m15_base_next=iBarShift(NULL, 15, LowFractalTime_2_base_next,true);
//1.7 Encontre o número de barras em m15 entre a barra - fractal e a próxima barra
int UpperFractal_1_m15_NumBars_base=(UpperFractal_1_m15_base-UpperFractal_1_m15_base_next);
int UpperFractal_2_m15_NumBars_base=(UpperFractal_2_m15_base-UpperFractal_2_m15_base_next);
int LowerFractal_1_m15_NumBars_base=(LowerFractal_1_m15_base-LowerFractal_1_m15_base_next);
int LowerFractal_2_m15_NumBars_base=(LowerFractal_2_m15_base-LowerFractal_2_m15_base_next);
// --- Estágio 2 - - refinamento de extremos
//2.1 Para o primeiro menor fractal
int Bar_1_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_1_m15_NumBars_base,LowerFractal_1_m15_base_next);
datetime Time_1_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Lowest_m15_base);
double Price_1_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_1_Lowest_m15_base);
//2.2 Para o segundo menor fractal
int Bar_2_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_2_m15_NumBars_base,LowerFractal_2_m15_base_next);
datetime Time_2_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Lowest_m15_base);
double Price_2_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_2_Lowest_m15_base);
//2.3 Para o primeiro maior fractal
int Bar_1_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_1_m15_NumBars_base,UpperFractal_1_m15_base_next);
datetime Time_1_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Highest_m15_base);
double Price_1_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_1_Highest_m15_base);
//2.4 Para o segundo maior fractal
int Bar_2_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_2_m15_NumBars_base,UpperFractal_2_m15_base_next);
datetime Time_2_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Highest_m15_base);
double Price_2_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_2_Highest_m15_base);

	          
 
Almat Kaldybay:

Embora eu não tenha me deparado com essa situação na prática, decidi excluí-la mesmo assim

Hoje, por exemplo, ao abrir o par GBPUSD/EURUSD M5, a primeira vela foi aberta às 00:05. Se tomarmos 288 candlesticks por analogia com M15, entraremos nos dados de outro dia.

É verdade que isso é para o MT5... no MT4 (servidor MetaQuotes-Demo) - também, em outra corretora a partir das 00:00, portanto... tudo é individual e você ainda precisa verificar.

 
MetaQuotes Software Corp.:

Foi publicado o novo artigo Plotting trend lines based on fractals using MQL4 and MQL5:

Autor: Almat Kaldybay

Hi,

Não consigo obter a linha de tendência conforme ilustrado acima.
Alguma configuração especial?

 
Hairi Baba:

Hi,

Não consigo obter a linha de tendência conforme ilustrado acima.
Alguma configuração especial?

Olá, talvez você não tenha dados históricos do M15
 

Olá, Almat,

Não estou recebendo linhas de tendência no gráfico, mas estou recebendo alertas móveis contínuos. Por favor, me ajude se eu estiver perdendo alguma coisa.

Obrigado,
Prakash.R

 
prakki79:

Olá, Almat,

Não estou recebendo linhas de tendência no gráfico, mas estou recebendo alertas móveis contínuos. Por favor, me ajude se eu estiver perdendo alguma coisa.

Obrigado,
Prakash.R

Hi,

1. Você precisa compilar o arquivo mq4 no metaeditor;

2. acho que você tem linhas de tendência no gráfico, mas não as vê por causa da escala do gráfico

 
Saudações, por favor, me diga como colocar um Expert Advisor no MT4. Baixei o arquivo trendlines.mq4, compilei-o e enviei-o junto com o código-fonte para a pasta mql4/Indicators, recarreguei o terminal e tentei anexar o indicador ao gráfico - sem reação. O que estou fazendo de errado?