# Ayuda, rango percentil.

Saludos, compañeros.

El resultado debe de estar entre 0 y 100 pero por alguna razon el resultado es un valor negativo.

En realidad lo que busco graficar es una linea con esta formula:   PercentRank1(iATR(17),23)   Donde 23 es el numero de las barras historicas.

```//+------------------------------------------------------------------+
//|                                                  CCP PRUEBAS.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot ATR
#property indicator_label1  "ATR"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         ATRBuffer[];
double         tmpArray[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

double PercentRank1(double r_period, int shift)
{
double pcrank, rank;
//int i;

ArrayCopy(tmpArray, High, 0, shift, r_period);
ArrayCopy(tmpArray, Low, r_period, shift, r_period);
ArrayCopy(tmpArray, Close, r_period * 2, shift, r_period);
ArraySort(tmpArray, r_period * 3);
rank = ArrayBsearch(tmpArray, Close[shift], r_period * 3);
pcrank = rank /(r_period * 3 - 1);

return (pcrank);
}

int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,ATRBuffer);

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
{
//---
int limit = rates_total-prev_calculated;

for(int i=0; i<limit; i++)
{
ATRBuffer[i] = PercentRank1(iATR(NULL,0,17,i),23)
}

//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+```

Andres452:
Saludos, compañeros.

El resultado debe de estar entre 0 y 100 pero por alguna razon el resultado es un valor negativo.

En realidad lo que busco graficar es una linea con esta formula:   PercentRank1(iATR(17),23)   Donde 23 es el numero de las barras historicas.

Quizas si pones el nombre exacto del indicador en trading view, alguien lo quiera intentar copiar y pasarlo aqui

Aunque, finalmente, es dificil que alguien lo haga gratis

Te recomiendo usar la seccion freelance y pagar por dicho trabajo

Saludos!!!