#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: