Código:
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 MediumBlue
#property indicator_color3 Red
#property indicator_color4 MediumBlue
#property indicator_color5 Blue
#property indicator_color6 Red
extern int MaMetod = 3;
extern int MaPeriod = 20;
double g84[];
double g88[];
double g92[];
double g96[];
double g100[];
double g104[];
int g108 = 0;
int init() {
SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 1, Red);
SetIndexBuffer(0, g84);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1, MediumBlue);
SetIndexBuffer(1, g88);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 2, Red);
SetIndexBuffer(2, g92);
SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 2, MediumBlue);
SetIndexBuffer(3, g96);
SetIndexStyle(4, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexBuffer(4, g100);
SetIndexArrow(4, 233);
SetIndexStyle(5, DRAW_ARROW, STYLE_SOLID, 3);
SetIndexBuffer(5, g104);
SetIndexArrow(5, 234);
SetIndexDrawBegin(0, 5);
SetIndexBuffer(0, g84);
SetIndexBuffer(1, g88);
SetIndexBuffer(2, g92);
SetIndexBuffer(3, g96);
return (0);
}
int deinit() {
return (0);
}
int start() {
double l_ima_0;
double l_ima_8;
double l_ima_16;
double l_ima_24;
double ld_32;
double ld_40;
double ld_48;
double ld_56;
if (Bars <= 10) return (0);
g108 = IndicatorCounted();
if (g108 < 0) return (-1);
if (g108 > 0) g108--;
for (int li_80 = Bars - g108 - 1; li_80 >= 0; li_80--) {
l_ima_0 = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_CLOSE, li_80);
l_ima_8 = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_LOW, li_80);
l_ima_16 = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_OPEN, li_80);
l_ima_24 = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_HIGH, li_80);
ld_32 = (g92[li_80 + 1] + (g96[li_80 + 1])) / 2.0;
ld_56 = (l_ima_0 + l_ima_24 + l_ima_16 + l_ima_8) / 4.0;
ld_40 = MathMax(l_ima_24, MathMax(ld_32, ld_56));
ld_48 = MathMin(l_ima_16, MathMin(ld_32, ld_56));
if (ld_32 < ld_56) {
g84[li_80] = ld_48;
if (g84[li_80] < g88[li_80] && g84[li_80 + 1] < g88[li_80 + 1] && g84[li_80 + 2] > g88[li_80 + 2] && g84[li_80 + 3] > g88[li_80 +
3]) g100[li_80] = ld_48 - 10.0 * Point;
g88[li_80] = ld_40;
} else {
g84[li_80] = ld_40;
g88[li_80] = ld_48;
if (g84[li_80] > g88[li_80] && g84[li_80 + 1] > g88[li_80 + 1] && g84[li_80 + 2] < g88[li_80 + 2] && g84[li_80 + 3] < g88[li_80 +
3]) g104[li_80] = ld_48 + 10.0 * Point;
}
g92[li_80] = ld_32;
g96[li_80] = ld_56;
SendMail("[Signal Alert]", " [ " + Symbol() + " ] " + DoubleToStr(Bid, Digits) + " Open Sell");
}
return (0);
}