Watch how to download trading robots for free
Find us on Facebook!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Views:
4894
Rating:
(28)
Published:
2012.11.14 15:57
Updated:
2016.11.22 07:32
\MQL5\Include\
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance

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;
};


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");
}
//----

Translated from Russian by MetaQuotes Ltd.
Original code: https://www.mql5.com/ru/code/1052

gpfTCPivotStop gpfTCPivotStop

The Expert Advisor based on daily Pivot support.

gpfTCPivotLimit gpfTCPivotLimit

The trading system operating based on the bounce off the support/resistance levels of the Pivot indicator

SinTick SinTick

The sine and tick indicator

3rd Generation XMA 3rd Generation XMA

3rd Generation XMA is the 3rd generation moving average. This is an advanced version of the standard moving average indicator (МА) that follows a fairly simple procedure to reduce the time lag based on the increase in the moving average period.