Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
Three_in_One
//+------------------------------------------------------------------+
//| Three in One.mq4 |
//| Alex-W- |
//| Alex-W-@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Alex-W-"
#property link "Alex-W-@bk.ru"
#property indicator_chart_window
//--- input parameters
extern int Period_1 = PERIOD_H1; // Ïåðèîäû äëÿ îòîáðàæåíèÿ â òåêóùåì îêíå, åñëè 0 òî äàííûé ïåðèîä áóäåò ïðîïóùåí.
extern int Period_2 = PERIOD_H4;
extern int Period_3 = PERIOD_D1;
//--- Style Period 1 ---
extern color P1_ClrLine = Black;
extern color P1_ClrDivider = Black;
extern color P1_ClrShHigh = YellowGreen;
extern color P1_ClrShLow = YellowGreen;
extern color P1_ClrBarUp = Gold;
extern color P1_ClrBarDown = C'237,147,247';
extern int P1_WidthLine = 1;
extern int P1_StyleLine = 0;
extern int P1_StyleDivider = 2;
extern int P1_WidthDivider = 1;
//--- Style Period 2 ---
extern color P2_ClrLine = Red;
extern color P2_ClrDivider = Red;
extern color P2_ClrShHigh = Moccasin;
extern color P2_ClrShLow = Moccasin;
extern color P2_ClrBarUp = Moccasin;
extern color P2_ClrBarDown = Moccasin;
extern int P2_WidthLine = 1;
extern int P2_StyleLine = 0;
extern int P2_StyleDivider = 2;
extern int P2_WidthDivider = 1;
//--- Style Period 3 ---
extern color P3_ClrLine = Blue; // Ïðÿìîóãîëüíèê èç ëèíèé áàð High->Low
extern color P3_ClrDivider = Blue; // Ëèíèÿ ðàçäåëèòåëü ìåæäó òåëîì áàðà è High,Low.
extern color P3_ClrShHigh = Lavender; // Öâåò ïðÿìîóãîëüíèêà (Òåíè) High
extern color P3_ClrShLow = Lavender; // Öâåò ïðÿìîóãîëüíèêà (Òåíè) Low
extern color P3_ClrBarUp = Lavender;
extern color P3_ClrBarDown = Lavender;
extern int P3_WidthLine = 3;
extern int P3_StyleLine = 0;
extern int P3_StyleDivider = 2;
extern int P3_WidthDivider = 1;
extern int HistoryBars = 200; // Íà ñêîëüêî äíåé ïî èñòîðèè ðàçìå÷àòü, ýòîò ïàðàìåòð ñòàðøåãî áàðà, òî åñòü åñëè ñàìû ñòàðøèé ïåðèîä âûáðàí äåíü òî áóäåò ðàçìå÷åíî äàííîå êîë âî äíåé.
//+------------------------------------------------------------------+
//| #############- indicator initialization function -############# |
//+------------------------------------------------------------------+
int init()
{
//----
Comment(GetPeriod(Period_1)+":"+GetPeriod(Period_2)+":"+GetPeriod(Period_3));
//----
return(0);
}
//+------------------------------------------------------------------+
//| ###########- indicator deinitialization function -############# |
//+------------------------------------------------------------------+
int deinit(){
//----
ObjectsDeleteAll();
Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| ##############-- indicator start function --#################### |
//+------------------------------------------------------------------+
int start()
{
//----
int iCounted, i, iCxP1, iCxP2, iP1, iP2, iWindowPeriod;
static int iCx=0;
string sOp_1, sOp_2, sOp_3, sPeriod_1, sPeriod_2, sPeriod_3;
static bool bCheck=true, Blocking=false;
//----
iWindowPeriod=Period();
if(iWindowPeriod>=Period_1 || iWindowPeriod>=Period_2 || iWindowPeriod>=Period_3){
Alert("Îøèáêà ! - îäèí èç âûáðàííûõ ïåðèîäîâ ìåíüøå èëè ðàâåí òåêóùåìó.");
Blocking=true;
}
if(Period_1 >= Period_2 || Period_2 >= Period_3){
Alert("Îøèáêà ! - Period_1 äîëæåí áûòü íèæå ÷åì Period_2 è Period_2 íèæå ÷åì Period_3.");
Blocking=true;
}
if(!Blocking){
sPeriod_1 = GetPeriod(Period_1);
sPeriod_2 = GetPeriod(Period_2);
sPeriod_3 = GetPeriod(Period_3);
if(bCheck)iCounted=HistoryBars;
else iCounted=1;
for(i=0; i<iCounted; i++){
sOp_3 = iTime(NULL, Period_3, i); // Âðåìÿ îòêðûòèÿ áàðà.
DrawBar(sPeriod_3+"_"+sOp_3, i, Period_3, P3_ClrLine, P3_StyleLine, P3_WidthLine, P3_StyleDivider, P3_WidthDivider, P3_ClrDivider);
DrawRectangle(sPeriod_3+"_"+sOp_3, i, Period_3, P3_ClrShHigh, P3_ClrShLow, P3_ClrBarUp, P3_ClrBarDown);
}
if(bCheck)iCxP2 = iCounted*(Period_3 / Period_2); // Êîëè÷åñòâî áàðîâ â ñòàðøåì áàðå.
else iCxP2 = iCounted;
for(i=0; i<iCxP2; i++){
sOp_2 = iTime(NULL, Period_2, i);
DrawBar(sPeriod_2+"_"+sOp_2, i, Period_2, P2_ClrLine, P2_StyleLine, P2_WidthLine, P2_StyleDivider, P2_WidthDivider, P2_ClrDivider);
DrawRectangle(sPeriod_2+"_"+sOp_2, i, Period_2, P2_ClrShHigh, P2_ClrShLow, P2_ClrBarUp, P2_ClrBarDown);
}
//--- 1 ÷àñîâîé áàð
if(bCheck)iCxP1 = iCounted*(Period_3 / Period_1); // Êîëè÷åñòâî áàðîâ â ñòàðøåì áàðå.
else iCxP1 = iCounted;
for(i=0; i<iCxP1; i++){
sOp_1 = iTime(NULL, Period_1, i);
DrawBar(sPeriod_1+"_"+sOp_1, i, Period_1, P1_ClrLine, P1_StyleLine, P1_WidthLine, P1_StyleDivider, P1_WidthDivider, P1_ClrDivider);
DrawRectangle(sPeriod_1+"_"+sOp_1, i, Period_1, P1_ClrShHigh, P1_ClrShLow, P1_ClrBarUp, P1_ClrBarDown);
}
bCheck=false;
}
//STYLE_SOLID 0 Ñïëîøíàÿ ëèíèÿ
//STYLE_DASH 1 Øòðèõîâàÿ ëèíèÿ
//STYLE_DOT 2 Ïóíêòèðíàÿ ëèíèÿ
//STYLE_DASHDOT 3 Øòðèõ-ïóíêòèðíàÿ ëèíèÿ
//STYLE_DASHDOTDOT 4 Øòðèõ-ïóíêòèðíàÿ ëèíèÿ ñ äâîéíûìè òî÷êàìè
//----
return(0);
}
// Âîçâðàùàåò íàçâàíèå ïåðèîäà
string GetPeriod(int per){
//---
string name;
//---
switch(per){
case 1: name="M1";
break;
case 5: name="M5";
break;
case 15: name="M15";
break;
case 30: name="M30";
break;
case 60: name="H1";
break;
case 240: name="H4";
break;
case 1440: name="D1";
break;
case 10080: name="W1";
break;
case 43200: name="MN1";
break;
}
return(name);
}
//+------------------------------------------------------------------+
//| àâòîð: Pozitif mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
//| Ðèñóåò áàð âåðòèêàëüíûìè è ãîðèçîíòàëüíûìè ëèíèÿìè. |
//+------------------------------------------------------------------+
//| ïàðàìåòðû: |
//| id - Èäåíòèôèêàòîð. |
//| i - Íîìåð áàðà. |
//| iPeriod - Ïåðèîä áàðà. |
//| clr - Öâåò ëèíèé. |
//| stLine - Ñòèëü ëèíèé. |
//| widthLine - Øèðèíà ëèíèé. |
//| stDivider - Ñòèëü ëèíèè, ðàçäåëèòåëÿ High, Low, Open-Close. |
//| widthDivider- Øèðèíà ëèíèè ðàçäåëèòåëÿ. |
//| clrDivider - Öâåò ëèíèè ðàçäåëèòåëÿ. |
//+------------------------------------------------------------------+
void DrawBar(string id, int i, int iPeriod, color clr, int stLine, int widthLine, int stDivider, int widthDivider, color clrDivider){
//---
double prOpen, prClose, prHigh, prLow;
datetime tmOpen, tmClose;
//---
prOpen = iOpen(NULL, iPeriod, i);
prClose = iClose(NULL, iPeriod, i);
prHigh = iHigh(NULL, iPeriod, i);
prLow = iLow(NULL, iPeriod, i);
tmOpen = iTime(NULL, iPeriod, i);
tmClose = tmOpen+iPeriod*60;
if(ObjectFind(id+"_LF")<0){
ObjectCreate(id+"_LF", OBJ_TREND, 0, tmOpen, prHigh, tmOpen, prLow); // Ëåâàÿ ÷àñòü áàðà.
ObjectSet(id+"_LF", OBJPROP_RAY, false);
ObjectSet(id+"_LF", OBJPROP_COLOR, clr);
ObjectSet(id+"_LF", OBJPROP_STYLE, stLine);
ObjectSet(id+"_LF", OBJPROP_WIDTH, widthLine);
}else{
ObjectSet(id+"_LF", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_LF", OBJPROP_PRICE1, prHigh);
ObjectSet(id+"_LF", OBJPROP_TIME2, tmOpen);
ObjectSet(id+"_LF", OBJPROP_PRICE2, prLow);
}
if(ObjectFind(id+"_RG")<0){
ObjectCreate(id+"_RG", OBJ_TREND, 0, tmClose, prHigh, tmClose, prLow); // Ïðàâàÿ ÷àñòü áàðà.
ObjectSet(id+"_RG", OBJPROP_RAY, false);
ObjectSet(id+"_RG", OBJPROP_COLOR, clr);
ObjectSet(id+"_RG", OBJPROP_STYLE, stLine);
ObjectSet(id+"_RG", OBJPROP_WIDTH, widthLine);
}else{
ObjectSet(id+"_RG", OBJPROP_TIME1, tmClose);
ObjectSet(id+"_RG", OBJPROP_PRICE1, prHigh);
ObjectSet(id+"_RG", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_RG", OBJPROP_PRICE2, prLow);
}
if(ObjectFind(id+"_HG")<0){
ObjectCreate(id+"_HG", OBJ_TREND, 0, tmOpen, prHigh, tmClose, prHigh); // High.
ObjectSet(id+"_HG", OBJPROP_RAY, false);
ObjectSet(id+"_HG", OBJPROP_COLOR, clr);
ObjectSet(id+"_HG", OBJPROP_STYLE, stLine);
ObjectSet(id+"_HG", OBJPROP_WIDTH, widthLine);
}else{
ObjectSet(id+"_HG", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_HG", OBJPROP_PRICE1, prHigh);
ObjectSet(id+"_HG", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_HG", OBJPROP_PRICE2, prHigh);
}
if(ObjectFind(id+"_LW")<0){
ObjectCreate(id+"_LW", OBJ_TREND, 0, tmOpen, prLow, tmClose, prLow); // Low.
ObjectSet(id+"_LW", OBJPROP_RAY, false);
ObjectSet(id+"_LW", OBJPROP_COLOR, clr);
ObjectSet(id+"_LW", OBJPROP_STYLE, stLine);
ObjectSet(id+"_LW", OBJPROP_WIDTH, widthLine);
}else{
ObjectSet(id+"_LW", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_LW", OBJPROP_PRICE1, prLow);
ObjectSet(id+"_LW", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_LW", OBJPROP_PRICE2, prLow);
}
if(ObjectFind(id+"_OP")<0){
ObjectCreate(id+"_OP", OBJ_TREND, 0, tmOpen, prOpen, tmClose, prOpen); // Open.
ObjectSet(id+"_OP", OBJPROP_RAY, false);
ObjectSet(id+"_OP", OBJPROP_COLOR, clrDivider);
ObjectSet(id+"_OP", OBJPROP_STYLE, stDivider);
ObjectSet(id+"_OP", OBJPROP_WIDTH, widthDivider);
}else{
ObjectSet(id+"_OP", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_OP", OBJPROP_PRICE1, prOpen);
ObjectSet(id+"_OP", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_OP", OBJPROP_PRICE2, prOpen);
}
if(ObjectFind(id+"_CL")<0){
ObjectCreate(id+"_CL", OBJ_TREND, 0, tmOpen, prClose, tmClose, prClose); // Close.
ObjectSet(id+"_CL", OBJPROP_RAY, false);
ObjectSet(id+"_CL", OBJPROP_COLOR, clrDivider);
ObjectSet(id+"_CL", OBJPROP_STYLE, stDivider);
ObjectSet(id+"_CL", OBJPROP_WIDTH, widthDivider);
}else{
ObjectSet(id+"_CL", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_CL", OBJPROP_PRICE1, prClose);
ObjectSet(id+"_CL", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_CL", OBJPROP_PRICE2, prClose);
}
}
//+------------------------------------------------------------------+
//| àâòîð: Pozitif mail: alex-w-@bk.ru |
//+------------------------------------------------------------------+
//| Ðèñóåò áàð èç 3-¸õ ïðÿìîóãîëüíèêîâ, High, Low, Open-Close. |
//+------------------------------------------------------------------+
//| ïàðàìåòðû: |
//| id - Èäåíòèôèêàòîð. |
//| iBar - Íîìåð áàðà. |
//| iPeriod - Ïåðèîä. |
//| shHigh - Öâåò òåíè High (ïðÿìîóãîëüíèêà) |
//| shLow - Öâåò òåíè Low |
//| barUp - Öâåò áû÷úåãî áàðà |
//| barDown - Öâåò ìåäâåæúåãî áàðà. |
//+------------------------------------------------------------------+
void DrawRectangle(string id, int iBar, int iPeriod, color shHigh, color shLow, color barUp, color barDown){
//---
double prOpen, prClose, prHigh, prLow;
datetime tmOpen, tmClose;
color clr;
//---
int i = iBar;
prOpen = iOpen(NULL, iPeriod, i);
prClose = iClose(NULL, iPeriod, i);
prHigh = iHigh(NULL, iPeriod, i);
prLow = iLow(NULL, iPeriod, i);
tmOpen = iTime(NULL, iPeriod, i);
tmClose = tmOpen+iPeriod*60;
if(prOpen < prClose)clr=barUp;
else clr=barDown;
//--- Ðèñóåì òåëî áàðà Open->Close
if(ObjectFind(id+"_Bar_")<0){
ObjectCreate(id+"_Bar_", OBJ_RECTANGLE, 0, tmOpen, prOpen, tmClose, prClose);
ObjectSet(id+"_Bar_", OBJPROP_COLOR, clr);
}else{
ObjectSet(id+"_Bar_", OBJPROP_COLOR, clr);
ObjectSet(id+"_Bar_", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_Bar_", OBJPROP_PRICE1, prOpen);
ObjectSet(id+"_Bar_", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_Bar_", OBJPROP_PRICE2, prClose);
}
//--- Áû÷èé áàð
if(prOpen<prClose){
//--- Ðèñóåì òåíü áàðà High.
if(ObjectFind(id+"_ShHigh_")<0){
ObjectCreate(id+"_ShHigh_", OBJ_RECTANGLE, 0, tmOpen, prHigh, tmClose, prClose);
ObjectSet(id+"_ShHigh_", OBJPROP_COLOR, shHigh);
}else{
ObjectSet(id+"_ShHigh_", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_ShHigh_", OBJPROP_PRICE1, prHigh);
ObjectSet(id+"_ShHigh_", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_ShHigh_", OBJPROP_PRICE2, prClose);
}
//--- Ðèñóåì òåíü áàðà Low.
if(ObjectFind(id+"_ShLow_")<0){
ObjectCreate(id+"_ShLow_", OBJ_RECTANGLE, 0, tmOpen, prLow, tmClose, prOpen);
ObjectSet(id+"_ShLow_", OBJPROP_COLOR, shLow);
}else{
ObjectSet(id+"_ShLow_", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_ShLow_", OBJPROP_PRICE1, prLow);
ObjectSet(id+"_ShLow_", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_ShLow_", OBJPROP_PRICE2, prOpen);
}
}
//--- Ìåäâåæèé áàð
if(prOpen>prClose){
//--- Ðèñóåì òåíü áàðà High.
if(ObjectFind(id+"_ShHigh_")<0){
ObjectCreate(id+"_ShHigh_", OBJ_RECTANGLE, 0, tmOpen, prHigh, tmClose, prOpen);
ObjectSet(id+"_ShHigh_", OBJPROP_COLOR, shHigh);
}else{
ObjectSet(id+"_ShHigh_", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_ShHigh_", OBJPROP_PRICE1, prHigh);
ObjectSet(id+"_ShHigh_", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_ShHigh_", OBJPROP_PRICE2, prOpen);
}
//--- Ðèñóåì òåíü áàðà Low.
if(ObjectFind(id+"_ShLow_")<0){
ObjectCreate(id+"_ShLow_", OBJ_RECTANGLE, 0, tmOpen, prLow, tmClose, prClose);
ObjectSet(id+"_ShLow_", OBJPROP_COLOR, shLow);
}else{
ObjectSet(id+"_ShLow_", OBJPROP_TIME1, tmOpen);
ObjectSet(id+"_ShLow_", OBJPROP_PRICE1, prLow);
ObjectSet(id+"_ShLow_", OBJPROP_TIME2, tmClose);
ObjectSet(id+"_ShLow_", OBJPROP_PRICE2, prClose);
}
}
}
//+------------------------------------------------------------------+
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
---