//+------------------------------------------------------------------------------+ //| MTF_PriceChannel_FiboLevels.mq4 mod. | //+------------------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 DodgerBlue #property indicator_color2 RoyalBlue #property indicator_color3 Blue #property indicator_color4 DodgerBlue #property indicator_color5 Blue #property indicator_color6 RoyalBlue #property indicator_color7 DodgerBlue extern int Range=1; extern int TimeFrame=1440; extern int Shift=0; extern int xShift=0; double UpBuffer[]; double MdBuffer[]; double DnBuffer[]; double Up23.6Buffer[]; double Up61.8Buffer[]; double Dn23.6Buffer[]; double Dn61.8Buffer[]; int i; //ñ÷åò÷èê //string PeriodName; //õðàíèò èìÿ òàéìôðåéìà int init() { string short_name; SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,UpBuffer); SetIndexDrawBegin(0,0); if(TimeFrame==0) TimeFrame = Period(); SetIndexShift(0,Shift+xShift*TimeFrame/Period()); SetIndexLabel(0,"ChannelHi0 ("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,Dn23.6Buffer); SetIndexDrawBegin(1,0); SetIndexShift(1,Shift+xShift*TimeFrame/Period()); SetIndexLabel(1,"ChannelDn23.6/Up76.4("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,Up61.8Buffer); SetIndexDrawBegin(2,0); SetIndexShift(2,Shift+xShift*TimeFrame/Period()); SetIndexLabel(2,"ChannelDn38.2/Up61.8("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,MdBuffer); SetIndexDrawBegin(3,0); SetIndexShift(3, Shift+xShift*TimeFrame/Period()); SetIndexLabel(3,"MidChannel50 ("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,Dn61.8Buffer); SetIndexDrawBegin(4,0); SetIndexShift(4, Shift+xShift*TimeFrame/Period()); SetIndexLabel(4,"ChannelDn61.8/Up38.2("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,Up23.6Buffer); SetIndexDrawBegin(5,0); SetIndexShift(5, Shift+xShift*TimeFrame/Period()); SetIndexLabel(5,"ChannelDn76.4/Up23.6("+Range+"),TF"+TimeFrame+",xS"+xShift+""); SetIndexStyle(6,DRAW_LINE); SetIndexBuffer(6,DnBuffer); SetIndexDrawBegin(6,0); SetIndexShift(6, Shift+xShift*TimeFrame/Period()); SetIndexLabel(6,"ChannelLo100 ("+Range+"),TF"+TimeFrame+",xS"+xShift+""); IndicatorShortName(short_name); switch(TimeFrame) // ïðèñâîåíèå çíà÷åíèÿ TimeFrame â çàâèñèìîñòè îò âûáðàííîãî â ïàðàìåòðàõ { case 1 : TimeFrame=PERIOD_M1; break; //â òîì æå ïîðÿäêå, ÷òî è êíîïêè íà ïàíåëè case 5 : TimeFrame=PERIOD_M5; break; case 15 : TimeFrame=PERIOD_M15; break; case 30 : TimeFrame=PERIOD_M30; break; case 60 : TimeFrame=PERIOD_H1; break; case 240 : TimeFrame=PERIOD_H4; break; case 1440 : TimeFrame=PERIOD_D1; break; case 10080: TimeFrame=PERIOD_W1; break; case 43200: TimeFrame=PERIOD_MN1; break; default : TimeFrame=Period(); break; } /* switch(TimeFrame) // ïîëó÷åíèå èìåíè òàéìôðåéìà { case PERIOD_M1 : PeriodName="M1"; break; case PERIOD_M5 : PeriodName="M5"; break; case PERIOD_M15 : PeriodName="M15"; break; case PERIOD_M30 : PeriodName="M30"; break; case PERIOD_H1 : PeriodName="H1"; break; case PERIOD_H4 : PeriodName="H4"; break; case PERIOD_D1 : PeriodName="D1"; break; case PERIOD_W1 : PeriodName="W1"; break; case PERIOD_MN1 : PeriodName="MN1"; break; } */ short_name="PriceChannel_FiboLevels_MTF"; return(0); } int start() { int i,counted_bars=IndicatorCounted(); //---- initial zero if(counted_bars<1) for(i=1;i<Bars;i++) { UpBuffer[i]=0.0; DnBuffer[i]=0.0; MdBuffer[i]=0.0; Dn23.6Buffer[i]=0.0; Up23.6Buffer[i]=0.0; Dn61.8Buffer[i]=0.0; Up61.8Buffer[i]=0.0; } //---- datetime TimeArray[]; double LowArray[],HighArray[]; int y=0; //ñ÷åò÷èê áàðîâ äðóãîãî òàéìôðåéìà if (TimeFrame<Period()) //íåëüçÿ ïðîðèñîâàòü èíäèêàòîð ìåíüøåãî òàéìôðåéìà íà áîëüøåì { SetIndexDrawBegin(0,Bars); //î÷èñòêà îò ìóñîðà SetIndexDrawBegin(1,Bars); SetIndexDrawBegin(2,Bars); SetIndexDrawBegin(3,Bars); SetIndexDrawBegin(4,Bars); SetIndexDrawBegin(5,Bars); SetIndexDrawBegin(6,Bars); SetIndexDrawBegin(7,Bars); return(0); } //ïîëó÷åíèå âðåìåíè íà÷àëà êàæäîãî áàðà ñ äðóãîãî òàéìôðåéìà ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); //ïîëó÷åíèå âñåõ Low îòòóäà æå ArrayCopySeries(LowArray,MODE_LOW,Symbol(),TimeFrame); //àíàëîãè÷íî High ArrayCopySeries(HighArray,MODE_HIGH,Symbol(),TimeFrame); for(i=0,y=0;i<Bars-counted_bars+TimeFrame/Period();i++) { //åñëè âðåìÿ íà÷àëà áàðà íàøåãî òàéìôðåéìà ìåíüøå âðåìåíè íà÷àëà áàðà äðóãîãî òàéìôðåéìà, //òî ïåðåõîäèì ê ñëåäóþùåìó áàðó íà äðóãîì òàéìôðåéìå (îòñ÷åò â îáðàòíîì ïîðÿäêå) if (Time[i]<TimeArray[y]) y++; //|âûáèðàåò áàð ñ ìèíèìàëüíûì/ìàêñèìàëüíûì çíà÷åíèåì ñ äðóãîãî òàéìôðåéìà, DnBuffer[i]=LowArray[Lowest(NULL,TimeFrame,MODE_LOW,Range,y)]; //|è ïî íîìåðó áàðà âûòàñêèâàåò ñîîòâåòñòâóþùåå çíà÷åíèå èç ìàññèâîâ UpBuffer[i]=HighArray[Highest(NULL,TimeFrame,MODE_HIGH,Range,y)]; //|LowArray è HighArray MdBuffer[i]=(UpBuffer[i]+DnBuffer[i])/2; Up23.6Buffer[i] = DnBuffer[i]+((UpBuffer[i]-DnBuffer[i])*23.6/100); Dn23.6Buffer[i] = UpBuffer[i]-((UpBuffer[i]-DnBuffer[i])*23.6/100); Up61.8Buffer[i] = DnBuffer[i]+((UpBuffer[i]-DnBuffer[i])*61.8/100); Dn61.8Buffer[i] = UpBuffer[i]-((UpBuffer[i]-DnBuffer[i])*61.8/100); } return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- Comment(""); //---- return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: