Encontrar os valores máxima e mínima

 

Bom dia pessoal tudo bem? 


Estou em fase de aprendizagem do mql5, estou tentando obter o valor máximo e mínimo dos fechamentos das velas do dia.

Ocorre que não estou conseguindo obter os valores correto quando é adicionado uma condição após o "for".

Exemplo do código: somente considerar os closes da de barra de alta).

Alguma alma caridosa poderia me ajudar neste código? F

Ficarei eternamente agradecido.

void MaximasMinimas()
                   
   {                
             datetime horaatual= TimeCurrent();
             datetime horaabertura = (TimeCurrent()/86400)*86400;
             CopyRates(_Symbol,PERIOD_M1,horaabertura,horaatual,candle);
             ArraySetAsSeries(candle,true);                                                                        

               ArrayResize(closes,ArraySize(candle));
                 
                for(int i=0;i<ArraySize(candle);i++)   
                  {      
                    if(candle[i].open<candle[i].close) // quando tiro esta condição funciona normalmente
                      
                        {
                          closes[i] = candle[i].close;
                          Print("VelasCloses: ",closes[i]);
                        }                                 
                  }
                                     
 
                       int ind_max = ArrayMaximum(closes);
                       int ind_min = ArrayMinimum(closes);
                       double max = closes[ind_max];
                       double min = closes[ind_min];
                       
                       Print("IndiceMaximaDia: ",ind_max);
                       Print("IndiceinimaDia: ",ind_min); 
                       Print("BarraMaximaDia: ",max);
                       Print("BarraMinimaDia: ",min);
 
LuisOrtin:

Bom dia pessoal tudo bem? 


Estou em fase de aprendizagem do mql5, estou tentando obter o valor máximo e mínimo dos fechamentos das velas do dia.

Ocorre que não estou conseguindo obter os valores correto quando é adicionado uma condição após o "for".

Exemplo do código: somente considerar os closes da de barra de alta).

Alguma alma caridosa poderia me ajudar neste código? F

Ficarei eternamente agradecido.

Por que você não usa iHigh() e iLow()?

Se forem mais dias põe em um loop...

(Lembrando que tem que usar a checagem de retorno das funções pois elas requisitam dados à corretora, que  podem não estar disponíveis ainda no momento da chamada - lea a documentação)...

;)


https://www.mql5.com/en/docs/series/ihigh

Documentation on MQL5: Timeseries and Indicators Access / iHigh
Documentation on MQL5: Timeseries and Indicators Access / iHigh
  • www.mql5.com
iHigh - Timeseries and Indicators Access - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Flavio Jarabeck #:

Por que você não usa iHigh() e iLow()?

Se forem mais dias põe em um loop...

(Lembrando que tem que usar a checagem de retorno das funções pois elas requisitam dados à corretora, que  podem não estar disponíveis ainda no momento da chamada - lea a documentação)...

;)


https://www.mql5.com/en/docs/series/ihigh

Boa tarde.


Desculpe sou bem amador, talvez não fui claro na minha necessidade ou até mesmo não estou entendendo a sua resposta:


A logica que fiz tem como objetivo: 


1ª etapa: filtrar certas características de barra durante um período (exemplo:  barras de baixa, barras de alta, barras que possuem gaps, , doji, etc);

Exemplo: No código estou utilizando a condição "i if(candle[i].open<=candle[i].close ) "  para as barras de alta.


2ª etapa: Localizar a máxima das barras obtidas na etapa 1ª ( não deve levar em consideração as demais barras do gráfico que não atende a condição da etapa 1ª).


Agradeço caso tenha um alma caridosa que possa me ajudar.