Ayuda, rango percentil.

 
Saludos, compañeros.

Le he dado la vuelta al foro y no encuentro un indicador de rango percentil para metatrader 4 (mql4), soy nuevo en mql4, yo vengo de tradingview y alli tengo un indicador  de rango percentil en pine script que es el lenguaje de programación de tradingview y tiene una funcion llamada percentrank, pero no encuentro ninguna funcion o indicador parecida en metatrader4 (mql4) que muestre solamante el rango percentil, estaria muy agradecido si me ayudan o me dan una idea de como hacerlo, adjunto el codigo que tengo hasta el momento.

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 copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "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[],
                const int &spread[])
  {
//---
   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.

Le he dado la vuelta al foro y no encuentro un indicador de rango percentil para metatrader 4 (mql4), soy nuevo en mql4, yo vengo de tradingview y alli tengo un indicador  de rango percentil en pine script que es el lenguaje de programación de tradingview y tiene una funcion llamada percentrank, pero no encuentro ninguna funcion o indicador parecida en metatrader4 (mql4) que muestre solamante el rango percentil, estaria muy agradecido si me ayudan o me dan una idea de como hacerlo, adjunto el codigo que tengo hasta el momento.

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!!!