ChartWindowFind

Gibt die Nummer des Subfensters zurück, in dem sich Indikator befindet. Es gibt zwei Varianten der Funktion.

1. Funktion sucht auf dem angegebenen Chart das Subfenster mit dem angegebenen "kurzen Namen" des Indikatoren (kurzer Name wird im oberen linke Teil des Subfensters ausgegeben) und im Erfolgsfall gibt die Nummer des Subfensters zurück.  

int  ChartWindowFind(
   long     chart_id,                  // Identifikator des Charts
   string   indicator_shortname        // kurzer Name des Indikatoren, s. INDICATOR_SHORTNAME

2. Funktion muss vom Benutzerindikator aufgerufen werden und sie gibt die Nummer des Subfensters, wo Indikator arbeitet, zurück.

int  ChartWindowFind();

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet den laufenden Chart.  

indicator_shortname

[in]  Kurzer Name des Anzeigers.

Rückgabewert

Nummer des Subfensters im Erfolgsfall. Null bedeutet Hauptfenster des Charts. Im Fall des Misserfolges gibt -1 zurück.  

Hinweis

Wenn die zweite Variante der Funktion (ohne Parameter) aus Script oder Experten aufgerufen wird, gibt sie -1 zurück.

Mann sollte nicht Indikators Kurzname mit dem Dateinamen der beim Erstellen des Indikators mit den Funktionen iCustom() und IndicatorCreate() gezeigt wird verwechseln. Wenn der Kurzname des Indikators nicht explizit festgelegt wird, dann bei der Kompilation wird den Namen der Quelldatei des Indikators angegeben.

Sie sollen richtig einen kurzen Namen des Indikators formen, der in der Eigenschaft INDICATOR_SHORTNAME mit Hilfe der FunktionIndicatorSetString() geschrieben wird. Wir empfehlen, dass der Kurzname die Werte der Eingabeparameter des Indikators enthält, da der Indikator, der aus dem Chart gelöscht wird, in der Funktion ChartIndicatorDelete() beim Kurzname identifiziert wird.

Beispiel:

#property script_show_inputs
//--- input parameters
input string   shortName="MACD(12,26,9)";
//+------------------------------------------------------------------+
//| Gibt Nummer des Charts mit dem angegebenen Indikator zurück      |
//+------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
  {
   int window=-1;
//--- 
   if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      //--- Funktion wird vom Indikator aufgerufen, der Name ist nicht erforderlich.  
      window=ChartWindowFind();
     }
   else
     {
      //--- Funktion wird vom Experten oder Script aufgerufen 
      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("Anzeiger "+shortName+" befindet sich im Fenster #"+(string)window);
   else
      Print("Anzeiger "+shortName+" ist nicht gefunden. window = "+(string)window);
  }

Sehen Sie auch

ObjectCreate(), ObjectFind()