ChartWindowFind

Devuelve el número de una subventana en la que se encuentra el indicador. Existen 2 variantes de la función.

1. La función busca en el gráfico especificado la subventana con el "nombre breve" del indicador (el nombre breve se muestra en la parte superior izquierda de la subventana), y en caso del éxito devuelve el número de subventana.

int  ChartWindowFind(
   long     chart_id,                  // identificador del gráfico
   string   indicator_shortname        // nombre breve del indicador, véase INDICATOR_SHORTNAME

2. La función debe invocarse desde el indicador personalizado y devuelve el número de la subventana en la que este indicador trabaja.

int  ChartWindowFind();

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

indicator_shortname

[in]  Nombre breve del indicador.

Valor devuelto

Devuelve el número de subventana en caso del éxito. Cero significa la ventana principal del gráfico. En caso de fallo devuelve -1.

Nota

Si se llama a la segunda variante de la función (sin parámetros) desde un script o Asesor Experto, devuelve -1.

No se debe confundir el nombre breve del indicador con el nombre del archivo que se indica durante la creación del indicador por las funciones iCustom() y IndicatorCreate(). Si el nombre breve del indicador no se especifica de manera explícita, entonces durante la compilación ahí se indica el nombre del archivo con el código fuente del indicador.

Hay que formar correctamente el nombre breve del indicador que se escribe en la propiedad INDICATOR_SHORTNAME mediante la función IndicatorSetString(). Es recomendable que el nombre breve contenga los valores de los parámetros de entrada del indicador, puesto que en la función ChartIndicatorDelete() la identificación del indicador que se quita del gráfico se realiza precisamente por el nombre breve.

Ejemplo:

#property script_show_inputs
//--- input parameters
input string   shortName="MACD(12,26,9)";
//+------------------------------------------------------------------+
//|  devuelve el número de la ventana del gráfico con este indicador |
//+------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
  {
   int window=-1;
//--- 
   if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      //--- la función ha sido invocada desde el indicador, no hace falta el nombre
      window=ChartWindowFind();
     }
   else
     {
      //--- la función ha sido invocada desde el Asesor Experto o script
      window=ChartWindowFind(0,short_name);
      if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
     }
//---
   return(window);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int window=GetIndicatorSubWindowNumber(0,shortName);
   if(window!=-1)
      Print("Indicador "+shortName+" se encuentra en la ventana #"+(string)window);
   else
      Print("Indicador "+shortName+" no ha sido encontrado. window = "+(string)window);
  }

Véase también

ObjectCreate(), ObjectFind()