MQL Illetirate needs help

 

Hi guys,

My first post here and looking for some help

I found this tool, it basicly draw up or down arrows when the market is about to go up or down. It is intended for the eur/usd 1hr currency and tf. I have not really put it to the test.

I have it in code, but the problem is i have no idea what the code is so i have no idea how or why the arrows are generated when they are generated. I thought it is MAs crossovers but it was not. I will post the code here hoping that someone can actually explain it to me. And plz dumb it down as possible

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

extern int RISK = 3;
extern int CountBars = 13501;
int gi_84 = 9;
double g_ibuf_88[];
double g_ibuf_92[];

int init() {
string ls_unused_0;
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 233);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 234);
SetIndexBuffer(0, g_ibuf_88);
SetIndexBuffer(1, g_ibuf_92);
return (0);
}

int start() {
double ld_24;
double ld_32;
double ld_40;
double ld_48;
double ld_56;
double ld_64;
double ld_72;
bool li_80;
int li_84;
if (CountBars >= Bars) CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + gi_84);
SetIndexDrawBegin(1, Bars - CountBars + gi_84);
int l_ind_counted_8 = IndicatorCounted();
if (Bars <= gi_84 + 1) return (0);
if (l_ind_counted_8 < gi_84 + 1) {
for (int li_0 = 1; li_0 <= gi_84; li_0++) g_ibuf_88[CountBars - li_0] = 0.0;
for (li_0 = 1; li_0 <= gi_84; li_0++) g_ibuf_92[CountBars - li_0] = 0.0;
}
int li_20 = 33 - RISK;
for (int li_4 = CountBars - gi_84; li_4 >= 0; li_4--) {
ld_24 = 0;
ld_32 = 0;
for (int li_12 = li_4; li_12 <= li_4 + gi_84; li_12++) ld_32 += MathAbs(High[li_12] - Low[li_12]);
ld_24 = ld_32 / (gi_84 + 1);
ld_56 = High[li_4];
ld_64 = Low[li_4];
for (int li_16 = li_4; li_16 <= li_4 + gi_84 - 1; li_16++) {
ld_72 = High[li_16];
if (ld_56 < ld_72) ld_56 = ld_72;
ld_72 = Low[li_16];
if (ld_64 >= ld_72) ld_64 = ld_72;
}
ld_40 = ld_64 + (ld_56 - ld_64) * li_20 / 100.0;
ld_48 = ld_56 - (ld_56 - ld_64) * li_20 / 100.0;
g_ibuf_88[li_4] = 0;
g_ibuf_92[li_4] = 0;
if (Close[li_4] < ld_40) li_80 = FALSE;
if (Close[li_4] > ld_48) li_80 = TRUE;
if (li_80 != li_84 && li_80 == TRUE) g_ibuf_88[li_4] = Low[li_4] - ld_24 / 2.0;
if (li_80 != li_84 && li_80 == FALSE) g_ibuf_92[li_4] = High[li_4] + ld_24 / 2.0;
li_84 = li_80;
}
return (0);
}

Plz any help explaining this is greatly appreciated