Author: Trofimov Pavel
0 Views
0 Downloads
0 Favorites
keyfinder2
ÿþ//+------------------------------------------------------------------+

//|                                                   KeyFinder2.mq5 |

//|                                                   Trofimov Pavel |

//|                                               trofimovpp@mail.ru |

//+------------------------------------------------------------------+

#property copyright "Trofimov Pavel"

#property link      "trofimovpp@mail.ru"

#property version   "2.00"

#property description "Warning! This algorithm uses loops for calculations!"

#property description "It is recommended so set not more than 1000 to process!"

#property script_show_inputs

//--- input parameters

input int      MinDimesion=5; //Minimum dimension of points

input int      MaxBars=300;   //The number of bars to process

#include       "KeyFinder.mqh"

#include       <ChartObjects\ChartObjectsTxtControls.mqh>

//+------------------------------------------------------------------+

//| Script variables                                                 |

//+------------------------------------------------------------------+

CKeyFinder           m_keyfinder;      //Declaring !KeyFinder class variable

CChartObjectButton   m_button_close;   //Declaring CChartObjectButton class variable

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

//-Initializing variables

   MqlRates  rates_array[];

   string Com="\n\n\n";

   int iCod=CopyRates(Symbol(),Period(),0,MaxBars,rates_array);// The number of elements in MqlRates array that we were able to copy

   int sy=10;//Button position

   if(ChartGetInteger(0,CHART_SHOW_OHLC))

      sy+=16;

//-Setting the necessary parameters   

   m_keyfinder.SetMaxBars(MaxBars);

   m_keyfinder.SetMinDimension(MinDimesion);

   m_keyfinder.CleanChart();//Clearing the chart from objects in case of a second use 

   iCod=iCod-1;//An index of the maximum element in rates_array[]

   Com+="Working...Please, wait!";

//-Creating the button and setting its properties

   m_button_close.Create(0,"ButtonClose",0,10,sy,100,20);

   m_button_close.Description("Close Script");

   m_button_close.Color(Blue);

   m_button_close.FontSize(8);

   Comment(Com);

//-Processing the bars using the CKeyFinder class methods   

   if(iCod>0)

     {

      m_keyfinder.FindUpKeyPoints(iCod,rates_array);//Searching for upper key points

      Com+="\nUpper points have been processed.\n";

      Comment(Com);

      m_keyfinder.FindLowKeyPoints(iCod,rates_array);//Searching for lower key points

      Comment("\n\n\nProcessing is complete");

     }

   else Comment("\n\n\nNo bars to process!!!");

   m_button_close.State(false);

//-Looping the script until the button is pressed

   while(!(m_button_close.State()))

     {

      //--- redraw chart

      ChartRedraw();

      Sleep(250);

     };

//-Clearing the chart by a press of the button

   m_keyfinder.CleanChart();

   Comment("");

  }

//+------------------------------------------------------------------+

Comments