Price Data Components
2
Views
0
Downloads
0
Favorites
ABLine_HL
//+------------------------------------------------------------------+
//| Andre Boyka Lines ABL.mq4 |
//| Swan © 2010-2011 |
//| |
//| Èäåÿ - renee (Romania) |
//| - http://www.onix-trade.net/forum/index.php?showtopic=81964 |
//| òåõçàäàíèå - ïîðó÷èê - http://www.onix-trade.net/forum |
//| ïàìÿòè Áîéêè Andre |
//| îïòèìèçàöèÿ ForexGrail |
//+------------------------------------------------------------------+
#property copyright "Swan © 2010" // êîïèðàéò àâòîðà èíäèêàòîðà
#property link "http://forum.mql4.com/ru" // ëèíê
#property indicator_chart_window // èíäèêàòîð âûâîäèòñÿ â îêíå ãðàôèêà
// Ïàðàìåòðû èíäèêàòîðà
extern string TimeFrame="H1"; //ïåðèîä ãðàôèêà "M5", "M15", "M30", "H1" ...
extern color Pitchfork_1=Red; // öâåò 1 âèë Ýíäðþñà
extern color Pitchfork_2=Blue; // öâåò 2 âèë Ýíäðþñà
extern color Boyka_Line=Gold; // öâåò âèë Ýíäðþñà ñ íàçâàíèåì Boyka_Line
extern color HLine=Red; // öâåò 1 âèë Ýíäðþñà
extern color LLine=Blue; // öâåò 2 âèë Ýíäðþñà
extern int Line_Width=2; // òîëùèíà ëèíèé âèë Ýíäðþñà ñ íàçâàíèåì Boyka_Line
extern int Boyka_Line_Width=2; // òîëùèíà ëèíèé âèë Ýíäðþñà ñ íàçâàíèåì Boyka_Line
extern bool DrawVLine=true; // ñòèëü true - îòîáðàæàòü â ôîíîâîì ðåæèìå âåðòèêàëüíûå ëèíèè
extern color VLine=Green; // öâåò âåðòèêàëüíûõ ëèíèé
int TF;
int nTF = 1; // äåñÿòè÷íûå ÷èñëîâûå ïåðåìåííûå TF - êîëè÷åñòâî ìèíóòíûõ áàðîâ â ñâå÷å, nTF - õç... òîæå ñàìîå âðîäè
string sTF, PeriodName; // ñòðîêîâàÿ ïåðåìåííàÿ
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- Ïðèñâàèâàåì çíà÷åíèÿ ïåðåìåííûì èñõîäÿ èç óñòàíîâëåííîãî TimeFrame
if(StringSubstr(TimeFrame,0,2)=="M5"){sTF="M5"; TF=5;}
if(StringSubstr(TimeFrame,0,3)=="M15"){sTF="M15"; TF=15;}
if(StringSubstr(TimeFrame,0,3)=="M30"){sTF="M30"; TF=30;}
if(StringSubstr(TimeFrame,0,2)=="H1"){sTF="H1"; TF=60;}
if(StringSubstr(TimeFrame,0,2)=="H4"){sTF="H4"; TF=240;}
if(StringSubstr(TimeFrame,0,2)=="D1"){sTF="D1"; TF=1440;}
if(StringSubstr(TimeFrame,0,2)=="W1") {sTF="W1"; TF=10080;}
if(StringSubstr(TimeFrame,0,2)=="MN") {sTF="MN"; TF=43200;}
if(StringSubstr(TimeFrame,0,1)=="Y") {sTF="Y"; TF=120960;}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- Ïðè óäàëåíèè èíäèêàòîðà ñ ãðàôèêà óäàëÿåì ãðàôè÷åñêèå îáúåêòû êîòîðûå îí íàëîæèë íà ãðàôèê
ObjectDelete(TimeFrame+"_b0");
ObjectDelete(TimeFrame+"_b1");
ObjectDelete(TimeFrame+"_b2");
ObjectDelete(TimeFrame+"_b3");
ObjectDelete(TimeFrame+"_Pitchfork_1");
ObjectDelete(TimeFrame+"_Pitchfork_2");
ObjectDelete(TimeFrame+"_Boyka_Line");
ObjectDelete(TimeFrame+"_H1");
ObjectDelete(TimeFrame+"_L1");
Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
if(TF<Period()) return(0); // åñëè çàäàííûé â ïàðàìåòðàõ ïåðèîä ìåíüøå èëè ðàâåí òîìó ÷òî íà ãðàôèêå, òî ïðåêðàùàåì äàëüíåéøóþ ðàáîòó
int b0,b1,b2,b3;
double H1,H2,L1,L2;
int iH1,iH2,iL1,iL2;
if(sTF=="Y")// ðàñ÷åò áàðîâ äëÿ ãîäà
{
int Y=TimeYear(iTime(NULL,0,0));
b0=iBarShift(NULL,0,StrToTime(Y+".0.0 00:00"));Y-=nTF;
b1=iBarShift(NULL,0,StrToTime(Y+".0.0 00:00"));Y-=nTF;
b2=iBarShift(NULL,0,StrToTime(Y+".0.0 00:00"));Y-=nTF;
b3=iBarShift(NULL,0,StrToTime(Y+".0.0 00:00"));
}
else if(sTF=="MN")// ðàñ÷åò áàðîâ äëÿ ìåñÿöà
{
b0=iBarShift(NULL,0,iTime(NULL,TF,0));
if(TimeDay(Time[b0])!=1) b0--;
b1=iBarShift(NULL,0,iTime(NULL,TF,nTF));
if(TimeDay(Time[b1])!=1) b1--;
b2=iBarShift(NULL,0,iTime(NULL,TF,2*nTF));
if(TimeDay(Time[b2])!=1) b2--;
b3=iBarShift(NULL,0,iTime(NULL,TF,3*nTF));
if(TimeDay(Time[b3])!=1) b3--;
}
else if(sTF=="W1")// ðàñ÷åò áàðîâ äëÿ íåäåëè
{
b0=iBarShift(NULL,0,iTime(NULL,TF,0));
if(TimeHour(Time[b0])!=0) b0--;
b1=iBarShift(NULL,0,iTime(NULL,TF,nTF));
if(TimeHour(Time[b1])!=0) b1--;
b2=iBarShift(NULL,0,iTime(NULL,TF,2*nTF));
if(TimeHour(Time[b2])!=0) b2--;
b3=iBarShift(NULL,0,iTime(NULL,TF,3*nTF));
if(TimeMinute(Time[b3])!=0) b3--;
}
else
{
// îïðåäåëÿåì áàðû âåðòèêàëüíûõ ëèíèé äëÿ îñòàëüíûõ òàéìôðåéìîâ
b0=iBarShift(NULL,0,iTime(NULL,TF,0));
// if(TimeMinute(Time[b0])!=0) b0--;
b1=iBarShift(NULL,0,iTime(NULL,TF,nTF));
// if(TimeMinute(Time[b1])!=0) b1--;
b2=iBarShift(NULL,0,iTime(NULL,TF,2*nTF));
// if(TimeMinute(Time[b2])!=0) b2--;
b3=iBarShift(NULL,0,iTime(NULL,TF,3*nTF));
// if(TimeMinute(Time[b3])!=0) b3--;
}
//Âûâîäèì äàííûå íà ýêðàí
if(Period()==1)PeriodName ="Ì1";
if(Period()==5)PeriodName ="Ì5";
if(Period() == 15)PeriodName ="Ì15";
if(Period() == 30)PeriodName ="Ì30";
if(Period()==60) PeriodName ="H1";
if(Period() == 240)PeriodName ="H4";
if(Period()==1440)PeriodName ="D1";
if(Period()==10080)PeriodName ="W1";
if(Period()==43200)PeriodName ="MN";
Comment("\nÂòîðàÿ ëèíèÿ ñìåùåíà îò ïåðâîé íà - " + (b1-b0)+ " áàðîâ íàçàä, ïîòîìó ÷òî â îäíîì áàðå ãðàôèêà " + TimeFrame + " ñîäåðæèòñÿ " + (TF/Period())+ " áàðîâ ãðàôèêà "+ PeriodName +"\nÒðåòüÿ ëèíèÿ ñìåùåíà îò âòîðîé íà - " + (b2-b1) + " áàðîâ íàçàä, ïîòîìó ÷òî â îäíîì áàðå ãðàôèêà " + TimeFrame + " ñîäåðæèòñÿ " + (TF/Period())+ " áàðîâ ãðàôèêà "+ PeriodName +"\n \nÑëåäóþùåå ïåðåñòðîåíèå ãðàôè÷åñêèõ îáúåêòîâ áóäåò ÷åðåç " + ((b1-b0)-b0) +" áàð(îâ)");
//----Ðèñóåì âåðòèêàëüíûå ëèíèè
if(DrawVLine){
ObjectDelete(TimeFrame+"_b0");
ObjectDelete(TimeFrame+"_b1");
ObjectDelete(TimeFrame+"_b2");
ObjectDelete(TimeFrame+"_b3");
ObjectCreate(TimeFrame+"_b0",OBJ_VLINE,0,Time[b0],1.0);
ObjectCreate(TimeFrame+"_b1",OBJ_VLINE,0,Time[b1],1.0);
ObjectCreate(TimeFrame+"_b2",OBJ_VLINE,0,Time[b2],1.0);
ObjectCreate(TimeFrame+"_b3",OBJ_VLINE,0,Time[b3],1.0);
ObjectSet(TimeFrame+"_b0",OBJPROP_COLOR,VLine);
ObjectSet(TimeFrame+"_b1",OBJPROP_COLOR,VLine);
ObjectSet(TimeFrame+"_b2",OBJPROP_COLOR,VLine);
ObjectSet(TimeFrame+"_b3",OBJPROP_COLOR,VLine);
ObjectSet(TimeFrame+"_b0",OBJPROP_BACK,true);
ObjectSet(TimeFrame+"_b1",OBJPROP_BACK,true);
ObjectSet(TimeFrame+"_b2",OBJPROP_BACK,true);
ObjectSet(TimeFrame+"_b3",OBJPROP_BACK,true);
}
iH1=iHighest(NULL,0,MODE_HIGH,b1-b0,b0+1); H1=High[iH1];// ñ 1-5 áàð ïîèñê õàÿ
iL1=iLowest(NULL,0,MODE_LOW,b1-b0,b0+1); L1=Low[iL1];
iH2=iHighest(NULL,0,MODE_HIGH,b2-b1,b1+1); H2=High[iH2]; // ñ 6-10 áàð ïîèñê õàÿ
iL2=iLowest(NULL,0,MODE_LOW,b2-b1,b1+1); L2=Low[iL2];
ObjectDelete(TimeFrame+"_Pitchfork_1");
ObjectCreate(TimeFrame+"_Pitchfork_1",OBJ_PITCHFORK,0,Time[iL2],L2,Time[iH1],H1,Time[iL1],L1);
ObjectSet(TimeFrame+"_Pitchfork_1",OBJPROP_COLOR,Pitchfork_1);
ObjectDelete(TimeFrame+"_Pitchfork_2");
ObjectCreate(TimeFrame+"_Pitchfork_2",OBJ_PITCHFORK,0,Time[iH2],H2,Time[iH1],H1,Time[iL1],L1);
ObjectSet(TimeFrame+"_Pitchfork_2",OBJPROP_COLOR,Pitchfork_2);
ObjectDelete(TimeFrame+"_Boyka_Line");
ObjectCreate(TimeFrame+"_Boyka_Line",OBJ_PITCHFORK,0,Time[(b1+b2)/2],(H2+L2)/2,Time[iH1],H1,Time[iL1],L1);
ObjectSet(TimeFrame+"_Boyka_Line",OBJPROP_COLOR,Boyka_Line);
ObjectSet(TimeFrame+"_Boyka_Line",OBJPROP_WIDTH,Boyka_Line_Width);
ObjectDelete(TimeFrame+"_H1");
ObjectCreate(TimeFrame+"_H1",OBJ_TREND,0,Time[b1],H1,Time[0],H1);
ObjectSet(TimeFrame+"_H1",OBJPROP_COLOR,HLine);
ObjectSet(TimeFrame+"_H1",OBJPROP_RAY,false);
ObjectDelete(TimeFrame+"_L1");
ObjectCreate(TimeFrame+"_L1",OBJ_TREND,0,Time[b1],L1,Time[0],L1);
ObjectSet(TimeFrame+"_L1",OBJPROP_COLOR,LLine);
ObjectSet(TimeFrame+"_L1",OBJPROP_RAY,false);
WindowRedraw();
return(0);
}
//+------------------------------------------------------------------+
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
---