Expert Advisors • Indicators • Scripts • Libraries

MQL.RobotFX.org is the biggest collection of MetaTrader expert advisors (MT5 & MT4), indicators, scripts and libraries that can be used to improve trading results, minimize risks or simply automate trading tasks

Metatrader 5 Libraries | GetExtremums | MQL5 Release

Explore the latest free tools from the MQL5 community. Here's a new indicator, expert advisor, or script for MetaTrader.

Image for GetExtremums

The GetExtremums() function is designed to identify extremums over a given period of history. The search algorithm is similar to that used in the FastZZ indicator and uses only one parameter - the minimum price change - to identify an extremum.

int GetExtremums(double range,      //minimum price change
                 MqlRates &rates[], //array of history quotes
                 dextremum &ge[],  //returned array of extremums
                 int total=0)      //required number of extremums or zero for all extremums        
Parameters:
  • double range - minimum price change required to identify an extremum;
  • MqlRates &rates[] - array of quotes;
  • dextremum &ge[] - array that stores identified extremums in consecutive order, the extremum closest in time being stored in the first element (0 index).
  • int total - limit for the total number of extremums to be found. All extremums are searched for by default (total==0).
Returned value:
  • Number of elements in the array of extremums.

The following structure is used for the description of extremums.

struct dextremum         //description of extremum
{
   int        type;      //1 - peak, -1 - trough
   datetime   time;
   double      value;
};


Trade the powerful Traders Dynamic Index strategy automatically with this dedicated TDI Expert Advisor. More details.

An example of using GetExtremums().

#include <GetExtremums.mqh>
//----
void OnStart()
{
   MqlRates rt[];
   dextremum zz[];
   CopyRates(_Symbol,_Period,TimeCurrent(),100,rt);
   //the first variant - to get 10 extremums
   int cnt=GetExtremums(100*_Point,rt,zz,10);
   for(int i=0; i<cnt; i++)
        Print(i,") ",zz[i].time," >> ",zz[i].type==1?"Peak":"Trough","=",zz[i].value);
   //the second variant - to get all extremums 
   cnt=GetExtremums(100*_Point,rt,zz);
   Print("Found ",cnt," extremums");
}
//----

Build better strategies with RobotFX professional tools – check them out.

1052

Best MetaTrader Indicators + Profitable Expert Advisors