Arredondamento para Tick mais próximo

Para adicionar comentários, por favor Faça o login ou registrar
Tada Silwol
15
Tada Silwol  

Existe alguma função no MT5 que arredonde um valor calculado por um indicador para o tick mais próximo?

Por exemplo: 

O índice da S&P varia de 0,25 em 0,25.

Se meu indicador gerar um valor de 2573,17 , por exemplo. 

Os ticks mais próximos serão 2573,00 e 2573,25. 

Neste caso o valor retornado pelo indicador deveria ser 2573,25.

Existe alguma função que faça este arredondamento automático?

warlleysales
508
warlleysales  
Tada Silwol:

Existe alguma função no MT5 que arredonde um valor calculado por um indicador para o tick mais próximo?

Por exemplo: 

O índice da S&P varia de 0,25 em 0,25.

Se meu indicador gerar um valor de 2573,17 , por exemplo. 

Os ticks mais próximos serão 2573,00 e 2573,25. 

Neste caso o valor retornado pelo indicador deveria ser 2573,25.

Existe alguma função que faça este arredondamento automático?

Tente o código a seguir.

// -----------------------
// NormalizePrice Function
// -----------------------
double NormalizePrice(double price)
{
   double num_of_ticks, std_price, inf_lim, sup_lim;
   double midle, range[3];
   uint index; 
   mysymbol.Name(_Symbol);
   mysymbol.Refresh();
   num_of_ticks = MathFloor(price/mysymbol.TickSize());
   midle = num_of_ticks*mysymbol.TickSize();
   inf_lim = midle - mysymbol.TickSize();
   sup_lim = midle + mysymbol.TickSize();
   if (price <= midle)
   {
      range[0] = (midle - price)/(midle - inf_lim);
      range[1] = (price - inf_lim)/(midle - inf_lim);
      range[2] = 0; 
   }
   else
   {
      range[0] = 0;
      range[1] = (sup_lim - price)/(sup_lim - midle);
      range[2] = (price - midle)/(sup_lim - midle);
   }
   index = 0;
   index = ArrayMaximum(range,0,WHOLE_ARRAY);
   std_price = 0;
   switch (index)
   {
      case 0: 
         std_price = inf_lim;
         break;
      case 1:
         std_price = midle;
         break;
      case 2:
         std_price = sup_lim;
         break;
   }
   return(std_price);
}
fksalviano
30
fksalviano  
Warlley Sales:
Tente o código a seguir.

Use esta função 

https://www.mql5.com/pt/docs/marketinformation/symbolinfodouble

Exemplo:

double tick =SymbolnfoDouble (SYMBOL_TRADE_TICK_VALUE);
Para adicionar comentários, por favor Faça o login ou registrar