Price Data Components
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---