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



Sample





Analysis



Market Information Used:

Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: