//+------------------------------------------------------------------+ //| rvmGann_sv2.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| rvm_fam íà fromru òî÷êà êîì | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "rvm_fam íà fromru òî÷êà êîì" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 DodgerBlue #property indicator_color2 DodgerBlue //---- input parameters extern int GSv_tend=2; //---- buffers double GSv_sl[]; double GSv_Up[]; bool initfl,draw_up,draw_dn; bool curH,curL; int sH,sL,lb,lhi,lli,fpoint,spoint; int idFile; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_SECTION,STYLE_DOT); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID); SetIndexBuffer(0,GSv_sl); SetIndexBuffer(1,GSv_Up); SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0); SetIndexLabel(0,"Dawn trend"); SetIndexLabel(1,"Up trend"); //FileDelete("GSv.txt"); //idFile=FileOpen("GSv.txt",FILE_WRITE); //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int cb,ai,i,limit,index; //---- if( initfl!=1 ) { myInit(); if( initfl!=1 ) { Alert("Ñáîé èíèöèàëèçàöèè èíäèêàòîðà!"); return(-1); } } index=Bars-1; if( counted_bars>=0 ) { if( index-counted_bars<=0 ) { limit=0; } else { limit=index-counted_bars; if( limit>index-GSv_tend ) { limit=index-GSv_tend; } } } else { Alert("Ñáîé ðàñ÷åòà èíäèêàòîðà!"); return(-1); } //FileWrite(idFile," Bars="+Bars+" index="+index+" limit="+limit+" counted_bars="+counted_bars); //-------------------->> íà÷àëî öèêëà ïî áàðàì ------------------------------- for( cb=limit;cb>=0;cb-- ) { ai=index-cb; //-------------------->> äåéñòâèÿ ïðèçâîäèìûå åñëè ïîÿâèëñÿ íîâûé áàð -------- if( lb!=ai ) { //FileWrite(idFile,"**Íîâûé áàð, ai="+ai+" "+TimeToStr(Time[cb])); lb=ai; //åñëè ïðåäûäóùèé áàð âíóòðåíèèé - îáíóëÿåì ñ÷åò÷èêè if( High[cb+1]<=High[cb+2] && Low[cb+1]>=Low[cb+2] ) { sH=0; sL=0; //FileWrite(idFile," Ïðåäûäóùèé áàð âíóòðåííèé, ñ÷åò÷èêè îáíóëåíû "+sH+" "+sL); } else { //åñëè ïðåäûäóùèé òîëüêî ìàêñèìóì if( High[cb+1]>High[cb+2] && Low[cb+1]>=Low[cb+2] ) { sL=0; //FileWrite(idFile," Ïðåäûäóùèé-òîëüêî ìàêñèìóì, ñ÷åò÷èê ìèíèìóìîâ îáíóëåí "+sL); } else { //åñëè ïðåäûäóùèé òîëüêî ìèíèìóì if( High[cb+1]<=High[cb+2] && Low[cb+1]<Low[cb+2] ) { sH=0; //FileWrite(idFile," Ïðåäûäóùèé-òîëüêî ìèíèìóì, ñ÷åò÷èê ìàêñèìóìîâ îáíóëåí "+sH); } } } //åñëè èíäèêàòîð ðèñîâàëñÿ ââåðõ if( draw_up==1 ) { //FileWrite(idFile," èíäèêàòîð ðèñîâàëñÿ ââåðõ"); //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ if( sL==GSv_tend ) { //FileWrite(idFile," ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ"); // è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ if( curL==1 || sH!=GSv_tend ) { draw_up=0; draw_dn=1; fpoint=spoint; spoint=ai-1; //FileWrite(idFile," ïîñëåäíèì áûë ìèíèìóì, draw_up="+draw_up+" draw_dn="+draw_dn+" fpoint="+fpoint+" spoint="+spoint+" èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ"); } } else { //èíà÷å åñëè ñ÷åò÷èê ìèíèìóìîâ íå äîñòèã íóæíîãî çíà÷åíèÿ //åñëè íà ïðåäûäóùåé ñâå÷êå áûë ìàêñèìóì è îí âûøå ïðåäûäóùåãî îòðèñîâàííîãî if( High[cb+1]>High[cb+2] && High[cb+1]>High[index-spoint] ) { spoint=ai-1; //FileWrite(idFile," ìàêñèìóì íà ïðåä.ñâå÷êå âûøå ïðåäûäóùåãî îòðèñîâàííîãî, ìåíÿåì spoint="+spoint); } } } else { //èíà÷å åñëè èíäèêàòîð ðèñîâàëñÿ âíèç if( draw_dn==1 ) { //FileWrite(idFile," èíäèêàòîð ðèñîâàëñÿ âíèç"); //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ if( sH==GSv_tend ) { //FileWrite(idFile," ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ"); //è ïîñëåäíèé - ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ if( curH==1 || sL!=GSv_tend ) { draw_up=1; draw_dn=0; fpoint=spoint; spoint=ai-1; //FileWrite(idFile," ïîñëåäíèì áûë ìàêñèìóì, draw_up="+draw_up+" draw_dn="+draw_dn+" fpoint="+fpoint+" spoint="+spoint+" èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ"); } } else { //èíà÷å åñëè ñ÷åò÷èê ìàêñèìóìîâ íå äîñòèã íóæíîãî çíà÷åíèÿ //åñëè íà ïðåäûäóùåé ñâå÷êå áûë ìèíèìóì è îí íèæå ïðåäûäóùåãî îòðèñîâàííîãî if( Low[cb+1]<Low[cb+2] && Low[cb+1]<Low[index-spoint] ) { spoint=ai-1; //FileWrite(idFile," ìèíèìóì íà ïðåä.ñâå÷êå íèæå ïðåäûäóùåãî îòðèñîâàííîãî, ìåíÿåì spoint="+spoint); } } } } //FileWrite(idFile," íîâàÿ ñâå÷à, îáíóëÿåì íàëè÷èå ìàêñèìóìà, ìèíèìóìà"); curH=0; curL=0; } //--------------------<< êîíåö äåéñòâèé ïðèçâîäèìûå åñëè ïîÿâèëñÿ íîâûé áàð -- //åñëè òåêóùèé áàð "âíóòðåííèé" ïåðåõîäèì ê ñëåäóþùåìó öèêëó if( High[cb]<=High[cb+1] && Low[cb]>=Low[cb+1] ) { //FileWrite(idFile," áàð âíóòðåííèé, ïåðåõîäèì ê ñëåäóþùåé ñâå÷å"); continue; } //-------------------->> âûÿñíåíèå òåêóùåãî ñîñòîÿíèÿ áàðà ------------------- //åñëè ýòî èñòîðèÿ if( cb!=0 || counted_bars==0 ) { //FileWrite(idFile," ïî èñòîðèè..."); if( High[cb]>High[cb+1] ) { if( sH<GSv_tend ) sH++; curH=1; //FileWrite(idFile," ñ÷åò÷èê ìàêñèìóìîâ óâåëè÷åí, ïîñëåäíèé ìàêñèìóì "+sH); } if( Low[cb]<Low[cb+1] ) { if( sH<GSv_tend ) sL++; curL=1; //FileWrite(idFile," ñ÷åò÷èê ìèíèìóìîâ óâåëè÷åí, ïîñëåäíèé ìèíèìóì "+sL); } if( curH==curL && curH==1 ) { if( Close[cb]>=(High[cb]+Low[cb])/2 ) { curL=0; //FileWrite(idFile," âíåøíèé áàð, óòî÷íåíèå, ïîñëåäíèé ìàêñèìóì"); } else { curH=0; //FileWrite(idFile," âíåøíèé áàð, óòî÷íåíèå, ïîñëåäíèé ìèíèìóì"); } } } else { //FileWrite(idFile," ðåàë-òàéì..."); if( Close[cb]==High[cb] ) { if( sH<GSv_tend && lhi!=ai ) { lhi=ai; sH++; } curH=1; curL=0; //FileWrite(idFile," ïîñëåäíèé ìàêñèìóì"); } else { if( Close[cb]==Low[cb] ) { if( sL<GSv_tend && lli!=ai ) { lli=ai; sL++; } curH=0; curL=1; //FileWrite(idFile," ïîñëåäíèé ìèíèìóì"); } } } //--------------------<< êîíåö âûÿñíåíèÿ òåêóùåãî ñîñòîÿíèÿ áàðà ------------- //FileWrite(idFile," îòðèñîâêà èíäèêàòîðà..."); //åñëè èíäèêàòîð óæå ðèñóåòñÿ if( draw_up!=draw_dn ) { //FileWrite(idFile," èíäèêàòîð óæå ðèñóåòñÿ "+draw_up+" "+draw_dn); //åñëè èíäèêàòîð îòðèñîâûâàåòñÿ ââåðõ if( draw_dn!=1 ) { //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ if( (sL==GSv_tend && curL==1) || (sL==GSv_tend && sH!=GSv_tend) ) { //FileWrite(idFile," ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ"); GSv_sl[cb]=Low[cb]; } else { //åñëè ïîñëåäíèé ìàêñèìóì âûøå ïîñëåäíåãî îòðèñîâàííîãî if( High[cb]>High[index-spoint] ) { GSv_sl[cb]=High[cb]; for( i=cb+1;i<index-fpoint;i++ ) { GSv_sl[i]=0; } } } } else { //èíà÷å åñëè îòðèñîâûâàåòñÿ âíèç //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ìàêñèìóì ïîñëåäíèé èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ if( (sH==GSv_tend && curH==1) || (sH==GSv_tend && sL!=GSv_tend) ) { //FileWrite(idFile," ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ è ïîñëåäíèé ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ íå èìååò íóæíîãî çíà÷åíèÿ"); GSv_sl[cb]=High[cb]; } else { //åñëè ïîñëåäíèé ìèíèìóì íèæå ïîñëåäíåãî îòðèñîâàííîãî if( Low[cb]<Low[index-spoint] ) { GSv_sl[cb]=Low[cb]; for( i=cb+1;i<index-fpoint;i++ ) { GSv_sl[i]=0; } } } } } else { //FileWrite(idFile," èíäèêàòîð ïîêà íå îòðèñîâûâàëñÿ "+draw_up+" "+draw_dn); //èíà÷å åñëè èíäèêàòîð åùå íå ðèñóåòñÿ //åñëè ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ if( sH==GSv_tend ) { //FileWrite(idFile," ñ÷åò÷èê ìàêñèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ"); if( sL!=GSv_tend || curH==1 ) { //FileWrite(idFile," ïîñëåäíèé ìàêñèìóì èëè ñ÷åò÷èê ìèíèìóìîâ ìåíüøå íóæíîãî"); GSv_sl[index-fpoint]=Low[index-fpoint]; GSv_sl[cb]=High[cb]; draw_up=1; draw_dn=0; //FileWrite(idFile," íà÷àëüíàÿ òî÷êà "+fpoint+" "+GSv_sl[index-fpoint]+" êîíå÷íàÿ òî÷êà "+ai+" "+GSv_sl[cb]); } } //åñëè ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ if( sL==GSv_tend ) { //FileWrite(idFile," ñ÷åò÷èê ìèíèìóìîâ äîñòèã íóæíîãî çíà÷åíèÿ"); if( sH!=GSv_tend || curL==1 ) { //FileWrite(idFile," ïîñëåäíèé ìèíèìóì èëè ñ÷åò÷èê ìàêñèìóìîâ ìåíüøå íóæíîãî"); GSv_sl[index-fpoint]=High[index-fpoint]; GSv_sl[cb]=Low[cb]; draw_up=0; draw_dn=1; //FileWrite(idFile," íà÷àëüíàÿ òî÷êà "+fpoint+" "+GSv_sl[index-fpoint]+" êîíå÷íàÿ òî÷êà "+ai+" "+GSv_sl[cb]); } } } //--------------------<< êîíåö öèêëà ïî áàðàì -------------------------------- } return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //FileClose(idFile); //---- return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Ôóíêöèÿ íà÷àëüíîé èíèöèàëèçàöèè èíäèêàòîðà | //+------------------------------------------------------------------+ int myInit() { //---- //åñëè íåäîñòàòî÷íî äàííûõ if( Bars<GSv_tend+1 ) { Alert("Íåäîñòàòî÷íî äàííûõ íà ãðàôèêå!"); return(-1); } if( GSv_tend<1 ) { Alert("Íåâåðíûé ïàðàìåòð èíäèêàòîðà!"); return(-1); } if( High[Bars-2]>High[Bars-1] ) sH++; if( Low[Bars-2]<Low[Bars-1] ) sL++; initfl=1; //FileWrite(idFile,TimeToStr(CurTime())+" èíäèêàòîð èíèöèàëèçèðîâàí"); //FileWrite(idFile," áàðîâ íà ãðàôèêå = "+Bars+", âðåìÿ ïåðâîãî áàðà = "+TimeToStr(Time[Bars-1])); //FileWrite(idFile," ñ÷åò÷èê ìàêñèìóìîâ = "+sH+", ñ÷åò÷èê ìèíèìóìîâ = "+sL); //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_SECTION
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen