iMAOnArray undeclared identifier Error

 

Why is this happening? do I need to re-install Metatrader/MetaEditor completely from scratch? Am I supposed to add an #include file? What's going on here? I searched the internet and I can't seem to find a similar issue anywhere.

I'm using it in the OnCalculate area. I've tried typing it in other areas, but it won't autosuggest iMAOnArray like it does with all other indicators.

 
Nicholas C Weber: Why is this happening? do I need to re-install Metatrader/MetaEditor completely from scratch? Am I supposed to add an #include file? What's going on here? I searched the internet and I can't seem to find a similar issue anywhere. I'm using it in the OnCalculate area. I've tried typing it in other areas, but it won't autosuggest iMAOnArray like it does with all other indicators.

iMAOnArray is not a valid internal MQL5 function. It is only part of MQL4.

For MQL5 use the functionality present in the "MovingAverages.mqh" include file, and one of the function there (e.g. SimpleMAOnBuffer).

 
Fernando Carreiro #:

iMAOnArray is not a valid internal MQL5 function. It is only part of MQL4.

For MQL5 use the functionality present in the "MovingAverages.mqh" include file, and one of the function there (e.g. SimpleMAOnBuffer).

Okay, cool. Thanks.

Next problem.. Might you give some advice on what I'm doing wrong here? Syntax isn't my strong-suit yet. ^^; I'm hoping to learn how this is screwed up.

   switch (TRIXMAmethod)
{
case Exponential:       return(ExponentialMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
                               ExponentialMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
                               ExponentialMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA););
case Smoothed:          return(SmoothedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
                               SmoothedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
                               SmoothedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);); 
case Simple:            return(SimpleMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
                               SimpleMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
                               SimpleMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA););                                      
case LinearWeighted:    return(LinearWeightedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
                               LinearWeightedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
                               LinearWeightedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);); 
};


I'm trying to change how TRIX is calculated and using a switching menu in the inputs instead of manually changing the MAOnBuffer prefix and repeatedly compiling. Any help would be greatly appreciated.


This also failed:

double SmoothedWork
{
SmoothedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
SmoothedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
SmoothedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);
};
double ExponentialWork
{
ExponentialMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
ExponentialMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
ExponentialMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);
};
double SimpleWork
{
SimpleMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
SimpleMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
SimpleMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);
};
double LinearWeightedWork
{
LinearWeightedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA);
LinearWeightedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA);
LinearWeightedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA);
};


       switch (TRIXMAmethod)
{
case Exponential:       return (ExponentialWork);
case Smoothed:          return (SmoothedWork); 
case Simple:            return (SimpleWork);                                      
case LinearWeighted:    return (LinearWeightedWork); 
}; 
The errors I'm getting are:

';' - unexpected token TRIX test.mq5 92 71
right after the first ***MAOnBuffer line.

and

'SmoothedMAOnBuffer' - some operator expected TRIX test.mq5 93 1


 

Never you mind, citizens. I fixed it. I forgot I needed to use "&&" and not ";".

fixed code:

       switch (TRIXMAmethod)
{
case Exponential:       return(ExponentialMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA)&&
                               ExponentialMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA)&&
                               ExponentialMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA));
case Smoothed:          return(SmoothedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA)&&
                               SmoothedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA)&&
                               SmoothedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA)); 
case Simple:            return(SimpleMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA)&&
                               SimpleMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA)&&
                               SimpleMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA));                                      
case LinearWeighted:    return(LinearWeightedMAOnBuffer(rates_total,prev_calculated,0,TRIXperiod,price,EMA)&&
                               LinearWeightedMAOnBuffer(rates_total,prev_calculated,TRIXperiod-1,TRIXperiod,EMA,SecondEMA)&&
                               LinearWeightedMAOnBuffer(rates_total,prev_calculated,2*TRIXperiod-2,TRIXperiod,SecondEMA,ThirdEMA)); 
};