ChartIndicatorGet

Gibt das Handle des Indikators mit dem angegebenen Kurznamen im angegebenen Chart-Fenster zurück.

int  ChartIndicatorGet(
   long           chart_id,              // ID des Charts
   int            sub_window             // Nummer des Unterfensters
   const string   indicator_shortname    // Kurzname des Indikators
   );

Parameter

chart_id

[in]  ID des Charts. 0 bedeutet den aktuellen Chart.

sub_window

[in]  Nummer des Unterfensters. 0 bedeutet das Hauptfenster des Charts.

const indicator_shortname

[in]  Kurzname des Indikators, der in der Eigenschaft INDICATOR_SHORTNAME durch Funktion IndicatorSetString() angegeben wird. Ein Kurzname des Indikators kann durch Funktion ChartIndicatorName() erhalten werden.

Rückgabewert

Gibt Indikator-Handle beim Erfolg zurück, ansonsten INVALID_HANDLE. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() an.

Hinweis

Das mit der Funktion ChartIndicatorGet() erhaltene Indikator-Handle erhöht den internen Zähler der verwendeten Indikatoren. Das Laufzeitsystem des Terminals hält alle Indikatoren, deren Zähler größer als Null ist, geladen. Daher sollte das Indikatorhandle, das nicht mehr benötigt wird, sofort und explizit mit IndicatorRelease() im gleichen Programm, das es empfangen hat, freigegeben werden, wie das folgende Beispiel zeigt. Andernfalls wird es unmöglich sein, das "herrenlose" Handle zu finden und es von einem anderen Programm korrekt freizugeben.

Sie müssen richtig den Kurzamen des Indikators währen seiner Erstellung generieren. Der Name wird durch die Funktion IndicatorSetString() in der Eigenschaft INDICATOR_SHORTNAME geschrieben werden. Es wird empfohlen, dass ein Kurznamen die Werte der Input-Parameter des Indikators enthält, da dein Indikators in der Funktion ChartIndicatorGet() nach dem Kurznamen indentifiziert wird.

Ein anderer Weg, um den Indikator zu identifizieren - eine Liste seiner Parameter für einen bestimmten Handle durch der Funktion IndicatorParameters() zu erhalten und dann die erhaltenen Werte zu analysieren.

Beispiel:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   //--- Anzahl der Fenster auf dem Chart (es gibt immer mindestens ein Hauptfenster)
   int windows=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);
   //--- für alle Fenster machen
   for(int w=0;w<windows;w++)
     {
      //--- Anzahl der Indikatoren in diesem Fenster/Untenfenster
      int total=ChartIndicatorsTotal(0,w);
      //--- für alle Fenster machen
      for(int i=0;i<total;i++)
        {
         //--- erhalten wir den kurzen Namen des Indikators
         string name=ChartIndicatorName(0,w,i);
         //--- erhalten wir Indikator-Handle
         int handle=ChartIndicatorGet(0,w,name);
         //--- In Log schreiben
         PrintFormat("Window=%d,  index=%d,  Name=%s,  handle=%d",w,i,name,handle);
         //--- sicherlich befreien wir den Indikatorhandle, wenn er nicht mehr benötigt wird
         IndicatorRelease(handle);
        }
     }
  }

Sehen Sie auch

ChartIndicatorAdd(), ChartIndicatorName(), ChartIndicatorsTotal(), IndicatorParameters()