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.