ChartWindowFind

La funzione restituisce il numero di una sottofinestra dove un indicatore viene disegnato. Ci sono due varianti della funzione.

1. La funzione ricerca nel grafico indicato per la sottofinestra con il "nome breve" specificato dell' indicatore (il nome breve è mostrato nella parta superiore sinistra della sottofinestra) e restitusce il numero della sottofinestra in caso di sucesso.

int  ChartWindowFind(
   long     chart_id,                  // identificatore del grafico
   string   indicator_shortname        // nome breve dell'indicatore, vedere INDICATOR_SHORTNAME

2. La funzione dev'essere chiamata dall'indicatore personalizzato. Restituisce il numero della sottofinestra dove l'indicatore sta lavorando.

int  ChartWindowFind();

Parametri

chart_id

[in] ID del Grafico. 0 indica il grafico corrente.

indicator_shortname

[in]  Nome breve dell'indicatore.

Valore restituito

Numero della sottofinestra in caso di successo. In caso di fallimento, la funzione restituisce -1In case of failure the function returns -1.

Nota

Se la seconda variante della funzione (senza parametri) è chiamata da uno Script o Expert Advisor, la funzione restituisce -1.

Non mischiare il nome breve dell'indicatore ed il nome del file, che viene specificato quando un indicatore viene creato usando le funzioni iCustom() ed IndicatorCreate(). Se il nome breve dell'indicatore non è impostato esplicitamente, allora il nome del file contenente il codice sorgente dell'indicatore è specificato in esso durante la compilazione.

E' importante formare correttamente il nome breve dell'indicatore, che è registrato nella proprietà INDICATOR_SHORTNAME usando la funzione IndicatorSetString(). E' raccomandabile che il nome breve contenga valori dei parametri di input dell'indicatore, perchè l'indicatore cancellato dal grafico nella funzione ChartIndicatorDelete() viene identificato dal suo nome breve.

Esempio:

#property script_show_inputs
//--- parametri di input
input string   shortname="MACD(12,26,9)";
//+--------------------------------------------------------------------------------+
//| Restituisce il numero delle finestra del chart con questo indicatore           |
//+--------------------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
  {
   int window=-1;
//--- 
   if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      //--- la funzione viene chiamata dall'inicatore, il nome non è richiesto
      window=ChartWindowFind();
     }
   else
     {
      //--- la funzione viene chiamata dall'Expert Advisor o Script
      window=ChartWindowFind(0,short_name);
      if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
     }
//---
   return(window);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//---
   int window=GetIndicatorSubWindowNumber(0,shortname);
   if(window!=-1)
      Print("Indicator "+shortname+" is in the window #"+(string)window);
   else
      Print("Indicator "+shortname+" is not found. window = "+(string)window);
  }

Vedi anche

ObjectCreate(), ObjectFind()