Localizar linha mais próxima superior e inferior em relação ao preço atual

 

Boa noite.


O código em anexo possibilita localizar a linha mais próxima do preço, porém necessito de um código que me informe:

1 - A linha mais próxima superior ao preço;

2 - A linha mais próxima inferior ao preço.

3 - Se possível filtrar os nomes que começar com .... Exemplo "LinhaAlta"

Estou fazendo os  meus primeiros códigos, agradeço toda ajuda que possam dar, muito obrigado!

int OnInit()
{
EventSetTimer(5);
return(INIT_SUCCEEDED);
}

void OnTimer()
{
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   int x= ObjectsTotal(0,-1,OBJ_HLINE)-1;                  // conta o numero de linhas no grafico (colocar +1 da quantidade exata de linhas)
   string obname=ObjectName(0,x,-1,OBJ_HLINE);             // busca o nome do objeto sendo que a sequencia é por ordem alfabetica
   double level=ObjectGetDouble(0,obname,OBJPROP_PRICE);   // retorna o valor do objeto
   double difference=MathAbs(Bid-level);                   // resultado da diferença do valor atual menos valor do objeto      
   string closest=obname;
   x--;
   string closestvr=level;                                 //eu que inseri closest = inseri o mais proximo, nao importa se e positivo e negativo
    
     for(;x>=0;x--)
     {
     obname=ObjectName(0,x,-1,OBJ_HLINE);
     level=ObjectGetDouble(0,obname,OBJPROP_PRICE);
     double diff=MathAbs(Bid-level);
     if(diff<difference)                                   // mais proximo
   //if(diff>difference)                                   // mais distante
       {
        closest=obname;
        difference=diff;
        closestvr=level;     // eu que inseri
        }
      
     }
 Print("Nome:",closest,"  Valor:",DoubleToString(closestvr,2),"  Diferença: ",DoubleToString(difference*100,2) );
 
 
}

meus primeiros códigos, agradeço toda ajuda que possam dar, muito obrigado!

 
TdNutricula:

Boa noite.


O código em anexo possibilita localizar a linha mais próxima do preço, porém necessito de um código que me informe:

1 - A linha mais próxima superior ao preço;

2 - A linha mais próxima inferior ao preço.

3 - Se possível filtrar os nomes que começar com .... Exemplo "LinhaAlta"

Estou fazendo os  meus primeiros códigos, agradeço toda ajuda que possam dar, muito obrigado!

meus primeiros códigos, agradeço toda ajuda que possam dar, muito obrigado!

Boa tarde!


Esse código pode ajudar com o que você quer:

string name;
double price;
double nearest_up_price=EMPTY_VALUE,nearest_down_price=0;
string nearest_up_name,nearest_down_name;

for (int i =ObjectsTotal()-1; i>=0; i--)
   {
      name  = ObjectName(0,i);
      if(ObjectGetInteger(0,name,OBJPROP_TYPE)!=OBJ_HLINE) continue;
      price = ObjectGetDouble(0,name,OBJPROP_PRICE);
  
    //up
     if(price>Bid && price<nearest_up_price)
     {
     nearest_up_price=price;
     nearest_up_name=name;
     }
      //down
     if(price<Bid && price>nearest_down_price)
     {
     nearest_down_price=price;
     nearest_down_name=name;
     }
   }
How to loop over chart objects?
How to loop over chart objects?
  • 2016.11.02
  • www.mql5.com
I've created an indicator that will plot horizontal lines on each tick...
 
Vinicius de Oliveira:

Boa tarde!


Esse código pode ajudar com o que você quer:

Boa tarde!

Inenarrável sua ajuda, caiu como uma luva.


Muito obrigado mesmo, sem palavras!

 
TdNutricula:

Boa tarde!

Inenarrável sua ajuda, caiu como uma luva.


Muito obrigado mesmo, sem palavras!

Beleza! Abraço!