Author: Crazy_Fox [UA]
BorChan
3 Views
0 Downloads
0 Favorites
BorChan
#property copyright "Crazy_Fox [UA]"
#property link      "http://finlist.ru"
#property library

double x1=0.0, y1=0.0, x2=0.0, y2=0.0,
       x_l=0.0, y_l=0.0, x_f=0.0, y_f=0.0, x_m=0.0, y_m=0.0,
       step=0.0, l_border=0.0, h_border=0.0;

bool main_is_up=true;

int Extremum[3], f_bar=0, m_bar=0, l_bar=0;

//--------------------------------------- min_ext -----------------------------------------------
int min_ext(int bar)
{
	int i=bar, result=0;
	bool find=false;
	while (!find)
	{ // Åñëè i ìåíüøå ëèáî ðàâíî äâóì áëèçñòîÿùèì ñâå÷àì è ñîñåäÿì ýòèõ ñâå÷åé - ýòî íàø ìèíèìóì
		if ((Low[i-2]>=Low[i])&&(Low[i-1]>=Low[i])&&(Low[i]<=Low[i+1])&&(Low[i]<=Low[i+2]))
		{  result=i; find=true; }
		i++;
	}
	return(result);
}

//--------------------------------------- max_ext -----------------------------------------------
int max_ext(int bar)
{
	int i=bar, result=0;
	bool find=false;

	while (!find)
	{ // Åñëè i áîëüøå ëèáî ðàâíî äâóì áëèçñòîÿùèì ñâå÷àì è ñîñåäÿì ýòèõ ñâå÷åé - ýòî íàø ìàêñèìóì
		if ((High[i-2]<=High[i])&&(High[i-1]<=High[i])&&(High[i]>=High[i+1])&&(High[i]>=High[i+2]))
		{  result=i; find=true; }
	 	i++;
	}
	return(result);
}

//--------------------------------------- find_extremums ----------------------------------------
void find_extremums(int i)
{
	ArrayInitialize(Extremum,0);
 
	Extremum[0]=min_ext(i); y1=Low[Extremum[0]];  x1=Time[Extremum[0]]; // Èùåì ïåðâûé ìèíèìóì, îïðåäåëÿåì êîîðäèíàòû
	Extremum[1]=max_ext(i); y2=High[Extremum[1]]; x2=Time[Extremum[1]]; // Èùåì ïåðâûé ìàêñèìóì, îïðåäåëÿåì êîîðäèíàòû
           
	if (Extremum[0]<Extremum[1])  // Åñëè ìèíèìóì âñòðå÷àåòñÿ ðàíüøå ìàêñèìóìà - òðåòèé ýêñòðåìóì èùåì âíèçó
	{
		Extremum[2]=min_ext(Extremum[1]);  // Ôóíêöèÿ min_ext âîçâðàùàåò íîìåð ïåðâîãî ìèíèìóìà, ïîèñê íà÷èíàåòñÿ ñ
		y_l=Low[Extremum[2]]; x_l=Time[Extremum[2]];
		y_f=y1; x_f=x1; y_m=y2; x_m=x2;
		f_bar=Extremum[0]; m_bar=Extremum[1]; l_bar=Extremum[2];
		main_is_up=false;
	}
	if (Extremum[0]>Extremum[1])
	{
		Extremum[2]=max_ext(Extremum[0]);
		y_l=High[Extremum[2]]; x_l=Time[Extremum[2]];
		y_f=y2; x_f=x2; y_m=y1; x_m=x1;
		f_bar=Extremum[1]; m_bar=Extremum[0]; l_bar=Extremum[2];
		main_is_up=true;
	}

	if (Extremum[0]==Extremum[1])
		if (min_ext(Extremum[0]+1)<max_ext(Extremum[0]+2))
		{
			Extremum[2]=min_ext(Extremum[0]+2);
			y_l=Low[Extremum[2]]; x_l=Time[Extremum[2]];
			y_f=y1; x_f=x1; y_m=y2; x_m=x2;
			f_bar=Extremum[0]; m_bar=Extremum[1]; l_bar=Extremum[2];
			main_is_up=false;
		}
		else
		{
			Extremum[2]=max_ext(Extremum[0]+2);
			y_l=High[Extremum[2]]; x_l=Time[Extremum[2]];
			y_f=y2; x_f=x2; y_m=y1; x_m=x1;
			f_bar=Extremum[0]; m_bar=Extremum[1]; l_bar=Extremum[2];
			main_is_up=true;
		}
}

Comments