//+------------------------------------------------------------------+ //| ATR Levels2.mq4 | //| Sergey Iljukhin | //| sergey@tibet.ru | //+------------------------------------------------------------------+ #property copyright "Sergey Iljukhin" #property link "mailto:sergey@tibet.ru" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Magenta #property indicator_color2 IndianRed #property indicator_color3 Magenta #property indicator_color4 IndianRed #define LevelMaxDeep 2000 // extern int ATRPeriod = 10; datetime PrevTime; string ShortName="ATR Levels"; double OHLC_D1[][6]; //---- buffers double UpLine1[],UpLine2[],DnLine1[],DnLine2[]; ArraySetAsSeries(UpLine1,true); ArraySetAsSeries(UpLine2,true); ArraySetAsSeries(DnLine1,true); ArraySetAsSeries(DnLine2,true); //+------------------------------------------------------------------+ //| Èíèöèàëèçàöèÿ ìàññèâîâ | //+------------------------------------------------------------------+ int InitChart() { //---- indicator line SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE,2); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_LINE,2); SetIndexBuffer(0,UpLine1); SetIndexBuffer(1,UpLine2); SetIndexBuffer(2,DnLine1); SetIndexBuffer(3,DnLine2); //---- name for DataWindow and indicator subwindow label IndicatorShortName(ShortName+" ("+ATRPeriod+")"); SetIndexLabel(0,"Up Channel 1"); SetIndexLabel(1,"Up Channel 2"); SetIndexLabel(2,"Down Channel 1"); SetIndexLabel(3,"Down Channel 2"); //---- SetIndexEmptyValue(0,0); SetIndexEmptyValue(1,0); SetIndexEmptyValue(2,0); SetIndexEmptyValue(3,0); //---- return(0); } int init() { InitChart(); return(0); } int deinit() { InitChart(); return(0); } int start() { int counted_bars=IndicatorCounted(); int lastday=0, i, j, daybar=0, chartbar=0; double LowYesterday, HighYesterday, LowToday, HighToday, fullatr; if (PrevTime==Time[0]) return(-1); if(Period() > PERIOD_H4) { Comment("ATR Levels - îøèáêà: ïåðèîä ãðàôèêà áîëåå Í4 !"); return(-1); // then exit } ArrayCopyRates(OHLC_D1, Symbol(), PERIOD_D1); lastday=TimeDay(Time[0]); for (i=0; i<Bars; i++) { if (lastday!=TimeDay(Time[i])) { // Âû÷èñëÿåì çíà÷åíèå ATR ïðåäûäóùåãî áàðà fullatr = iATR(Symbol(), PERIOD_D1, ATRPeriod, daybar+1); LowYesterday = OHLC_D1[daybar+1][3] - fullatr; HighYesterday = OHLC_D1[daybar+1][2] + fullatr; LowToday = OHLC_D1[daybar][3] - fullatr; HighToday = OHLC_D1[daybar][2] + fullatr; for (j=chartbar; j<i; j++) { UpLine1[j]=HighToday; UpLine2[j]=HighYesterday; DnLine1[j]=LowToday; DnLine2[j]=LowYesterday; } lastday=TimeDay(Time[i]); daybar++; chartbar=i; } } PrevTime=Time[0]; 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:
Indicator of the average true range
Custom Indicators Used:
Order Management characteristics:
Other Features: