Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each bar
0 Views
0 Downloads
0 Favorites
XLines
//+------------------------------------------------------------------+
//|                                                        XLines.mq4|
//|                                   excelf@gmail.com, skype: excelf|
//+------------------------------------------------------------------+
#property indicator_chart_window

double Buffer0[];
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
double Buffer7[];

int myPeriod=PERIOD_D1;
extern int days=90;

double avgDayRange;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   double summ=0;
   for(int i=days-1; i>=0; i--) 
     {
      summ+=MathAbs(iClose(NULL,myPeriod,i)-iOpen(NULL,myPeriod,i));
     }
   avgDayRange=summ/days;

   Print("avgDayRange: "+DoubleToStr(avgDayRange/Point,0));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit() 
  {
   string name;
   for(int i=ObjectsTotal(); i>=0;i--) 
     {
      name=ObjectName(i);
      if(StringFind(name,"level",0)==0) 
        {
         ObjectDelete(name);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,dayi;

   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)   counted_bars--;
   int limit = Bars - counted_bars;
   if(counted_bars==0) limit-=1+1;
   
   double PP;
   for(i=limit; i>=0; i--)
     {
      dayi=iBarShift(NULL,myPeriod,Time[i],false);
      PP=iOpen(NULL,myPeriod,dayi);
      if(dayi!=iBarShift(NULL,myPeriod,Time[i+1],false)) 
        {
         createLevel("level",PP,Time[i],Time[i]+86400,0,Black);

         createLevel("levelUpDarkViolet",   PP + (avgDayRange * 0.33), Time[i], Time[i] + 86400, 3, DarkViolet);
         createLevel("levelDownDarkViolet", PP - (avgDayRange * 0.33), Time[i], Time[i] + 86400, 3, DarkViolet);

         createLevel("levelUpDodgerBlue",   PP + (avgDayRange * 0.66), Time[i], Time[i] + 86400, 3, DodgerBlue);
         createLevel("levelDownDodgerBlue", PP - (avgDayRange * 0.66), Time[i], Time[i] + 86400, 3, DodgerBlue);

         createLevel("levelUpBlue",PP+(avgDayRange*1),Time[i],Time[i]+86400,3,Blue);
         createLevel("levelDownBlue",PP -(avgDayRange*1),Time[i],Time[i]+86400,3,Blue);

         createLevel("levelUpGreen",   PP + (avgDayRange * 1.5), Time[i], Time[i] + 86400, 3, Green);
         createLevel("levelDownGreen", PP - (avgDayRange * 1.5), Time[i], Time[i] + 86400, 3, Green);

         createLevel("levelUpGold",PP+(avgDayRange*2),Time[i],Time[i]+86400,3,Gold);
         createLevel("levelDownGold",PP -(avgDayRange*2),Time[i],Time[i]+86400,3,Gold);

         createLevel("levelUpOrange",    PP + (avgDayRange * 2.5), Time[i], Time[i] + 86400, 2, Orange);
         createLevel("levelDownOrange",  PP - (avgDayRange * 2.5), Time[i], Time[i] + 86400, 2, Orange);

         createLevel("levelUpRed",PP+(avgDayRange*3),Time[i],Time[i]+86400,3,Red);
         createLevel("levelDownRed",PP -(avgDayRange*3),Time[i],Time[i]+86400,3,Red);


        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void createLevel(string name,double level,datetime openTime,datetime closeTime,int width,color lineColor) 
  {
   name=name+TimeDayOfYear(openTime);
   if(ObjectFind(name)!=-1) 
     {
      ObjectDelete(name);
     }
   if(TimeDayOfWeek(closeTime)==0 || TimeDayOfWeek(closeTime)==6) 
     {
      closeTime=closeTime+60*60*24*2;
     }
   ObjectCreate(name,OBJ_TREND,0,openTime,level,closeTime,level);
   ObjectSet(name,OBJPROP_COLOR,lineColor);
   ObjectSet(name,OBJPROP_WIDTH,width);
   ObjectSet(name,OBJPROP_BACK,true);
   ObjectSet(name,OBJPROP_RAY,false);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---