Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 16.04.17
Kronenchakra Kronenchakra ist offline
Gesperrter Benutzer
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 313
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Hi Marquez,

das Handling der Indikatoren ist tatsächlich einer der großen Unterschiede von MQL4 zu MQL5.
In MQL5 muss zuerst ein Handle für einen Indikator erstellt werden, sinnvollerweise in der OnInit().
Also nur EIN mal wegen der Performance.
Ein Array von doubles erstellen und als Series definieren. Das ist wichtig.
Die Werte des Indis kopierst du dann mit CopyBuffer(...) in dieses Array.
Wenn du den Code siehst wird das klarer:
Code:
input int                  inpMA_Period      = 14;             // MA Period
input ENUM_TIMEFRAMES      inpMA_Timeframe   = PERIOD_M5;      // MA Timeframe
input ENUM_APPLIED_PRICE   inpMA_ApplPrice   = PRICE_TYPICAL;  // MA Applied Price
input ENUM_MA_METHOD       inpMA_Methode     = MODE_EMA;       // MA Method

int      maShift=0;
int      maHandle;
double   maBuffer[];

int OnInit()
{
   maHandle = iMA(_Symbol,inpMA_Timeframe,inpMA_Period,maShift,inpMA_Methode,inpMA_ApplPrice);  // Handle erstellen
   if(maHandle==INVALID_HANDLE)                             // Handle prüfen
      {
         Alert("*ERROR* creating MA-Handle");
         return(INIT_FAILED);
      }
   ArraySetAsSeries(maBuffer,true);                         // Buffer als Series definieren
   return(INIT_SUCCEEDED);
}

void OnTick()
{
   int to_copy=1;                                           // wir wollen hier nur den letzten Wert
   if(CopyBuffer(maHandle,0,0,to_copy,maBuffer)<to_copy)    // Daten aus dem Indi in den Buffer kopieren und prüfen
      {
         Alert("*ERROR* copy MA-Data");
         return;
      }
   Comment(DoubleToString(maBuffer[0],_Digits));            // Wert anzeigen oder was sinnvolleres damit anstellen
}
Ich hoffe das ist es was du gesucht hast.