Apparently this is the official code under
metatrader
========================================
#property
indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Blue
#property
indicator_color2 DimGray
#property indicator_color3 Red
#property indicator_color4 Red
#property
indicator_color5 DimGray
#property indicator_color6
LimeGreen
#property indicator_color7 LimeGreen
extern int Nmbr_Bars = 180;
extern int Order = 3;
extern double Ecart =
1.61803399;
double g_ibuf_92[];
double
g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
double
g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
double
gda_120[20][20];
double gda_124[20];
double gda_128[20];
double gda_132[20];
int gi_136;
int gi_140;
int
gi_144;
int gi_148;
int gi_152;
int gi_156;
int gi_160;
double gd_164;
double gd_172;
double gd_180;
double gd_188;
double gd_196;
int init() {
Comment("BARYCENTRE");
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, g_ibuf_92);
SetIndexBuffer(1, g_ibuf_96);
SetIndexBuffer(2, g_ibuf_100);
SetIndexBuffer(3, g_ibuf_104);
SetIndexBuffer(4, g_ibuf_108);
SetIndexBuffer(5, g_ibuf_112);
SetIndexBuffer(6, g_ibuf_116);
return
(0);
}
int deinit() {
Comment("");
ObjectDelete("REG");
ObjectDelete("X1");
ObjectDelete("X2");
ObjectDelete("X3");
ObjectDelete("Z1");
ObjectDelete("Z2");
ObjectDelete("Z3");
return (0);
}
int start() {
if (Year() >= 2010) return (0);
datetime
l_time_0 = 0;
SetIndexDrawBegin(0, Bars - Nmbr_Bars -
1);
SetIndexDrawBegin(1, Bars - Nmbr_Bars - 1);
SetIndexDrawBegin(2, Bars - Nmbr_Bars - 1);
SetIndexDrawBegin(3, Bars - Nmbr_Bars - 1);
SetIndexDrawBegin(4, Bars - Nmbr_Bars - 1);
SetIndexDrawBegin(5, Bars - Nmbr_Bars - 1);
SetIndexDrawBegin(6, Bars - Nmbr_Bars - 1);
if (l_time_0 != Time[0]) {
ObjectDelete("REG");
ObjectDelete("X1");
ObjectDelete("X2");
ObjectDelete("X3");
ObjectDelete("Z1");
ObjectDelete("Z2");
ObjectDelete("Z3");
l_time_0 = Time[0];
}
gi_152 = Order + 1;
gda_124[1] = Nmbr_Bars + 1;
for (gi_160 = 1;
gi_160 <= gi_152 << 1 - 2; gi_160++) {
gd_164 = 0;
for (gi_156 = 0; gi_156 <= Nmbr_Bars; gi_156++) gd_164 +=
MathPow(gi_156, gi_160);
gda_124[gi_160 + 1] = gd_164;
}
for (gi_160 = 1; gi_160 <= gi_152;
gi_160++) {
gd_164 = 0;
for (gi_156 = 0;
gi_156 <= Nmbr_Bars; gi_156++) {
if (gi_160 == 1) gd_164
+= (High[gi_156] + Low[gi_156]) / 2.0;
else gd_164 +=
(High[gi_156] + Low[gi_156]) / 2.0 * MathPow(gi_156, gi_160 - 1);
}
gda_128[gi_160] = gd_164;
}
for (gi_140 = 1; gi_140 <= gi_152;
gi_140++) {
for (gi_136 = 1; gi_136 <= gi_152; gi_136++)
{
gi_144 = gi_136 + gi_140 - 1;
gda_120[gi_136][gi_140] = gda_124[gi_144];
}
}
for (gi_144 = 1; gi_144
<= gi_152 - 1; gi_144++) {
gi_148 = 0;
gd_188 = 0;
for (gi_136 = gi_144; gi_136 <=
gi_152; gi_136++) {
if
(MathAbs(gda_120[gi_136][gi_144]) > gd_188) {
gd_188 = MathAbs(gda_120[gi_136][gi_144]);
gi_148 = gi_136;
}
}
if (gi_148 == 0) return (0);
if (gi_148 !=
gi_144) {
for (gi_140 = 1; gi_140 <= gi_152; gi_140++) {
gd_196 = gda_120[gi_144][gi_140];
gda_120[gi_144][gi_140] = gda_120[gi_148][gi_140];
gda_120[gi_148][gi_140] = gd_196;
}
gd_196 = gda_128[gi_144];
gda_128[gi_144]
= gda_128[gi_148];
gda_128[gi_148] = gd_196;
}
for (gi_136 = gi_144 + 1; gi_136 <=
gi_152; gi_136++) {
gd_180 = gda_120[gi_136][gi_144] /
gda_120[gi_144][gi_144];
for (gi_140 = 1; gi_140 <=
gi_152; gi_140++) {
if (gi_140 == gi_144)
gda_120[gi_136][gi_140] = 0;
else
gda_120[gi_136][gi_140] = gda_120[gi_136][gi_140] - gd_180 *
gda_120[gi_144][gi_140];
}
gda_128[gi_136] = gda_128[gi_136] - gd_180 *
gda_128[gi_144];
}
}
gda_132[gi_152] = gda_128[gi_152] /
gda_120[gi_152][gi_152];
for (gi_136 = gi_152 - 1;
gi_136 >= 1; gi_136--) {
gd_196 = 0;
for (gi_140 = 1; gi_140 <= gi_152 - gi_136; gi_140++) {
gd_196 += (gda_120[gi_136][gi_136 + gi_140]) *
(gda_132[gi_136 + gi_140]);
gda_132[gi_136] = 1 /
gda_120[gi_136][gi_136] * (gda_128[gi_136] - gd_196);
}
}
for (gi_156 = 0; gi_156
<= Nmbr_Bars; gi_156++) {
gd_164 = 0;
for (gi_144 = 1; gi_144 <= Order; gi_144++) gd_164 +=
(gda_132[gi_144 + 1]) * MathPow(gi_156, gi_144);
g_ibuf_92[gi_156] = gda_132[1] + gd_164;
}
gd_172 = iStdDev(NULL, 0, Nmbr_Bars, 0,
MODE_SMA, PRICE_HIGH, 0) * Ecart;
for (gi_156 = 0; gi_156
<= Nmbr_Bars; gi_156++) {
g_ibuf_104[gi_156] =
g_ibuf_92[gi_156] + gd_172;
g_ibuf_100[gi_156] =
g_ibuf_92[gi_156] + (g_ibuf_104[gi_156] - g_ibuf_92[gi_156]) /
1.382;
g_ibuf_96[gi_156] = g_ibuf_92[gi_156] +
(g_ibuf_100[gi_156] - g_ibuf_92[gi_156]) / 1.618;
g_ibuf_116[gi_156] = g_ibuf_92[gi_156] - gd_172;
g_ibuf_112[gi_156] = g_ibuf_92[gi_156] -
(g_ibuf_92[gi_156] - g_ibuf_116[gi_156]) / 1.382;
g_ibuf_108[gi_156] = g_ibuf_92[gi_156] -
(g_ibuf_92[gi_156] - g_ibuf_112[gi_156]) / 1.618;
}
ObjectCreate("REG", OBJ_ARROW, 0,
Time[0], g_ibuf_92[0]);
ObjectSet("REG",
OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
ObjectSet("REG", OBJPROP_COLOR, Blue);
ObjectCreate("X1", OBJ_ARROW, 0, Time[0],
g_ibuf_96[0]);
ObjectSet("X1", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("X1", OBJPROP_COLOR,
DimGray);
ObjectCreate("X2", OBJ_ARROW, 0, Time[0],
g_ibuf_100[0]);
ObjectSet("X2", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("X2", OBJPROP_COLOR,
Red);
ObjectCreate("X3", OBJ_ARROW, 0, Time[0],
g_ibuf_104[0]);
ObjectSet("X3", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("X3", OBJPROP_COLOR,
Red);
ObjectCreate("Z1", OBJ_ARROW, 0, Time[0],
g_ibuf_108[0]);
ObjectSet("Z1", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("Z1", OBJPROP_COLOR,
DimGray);
ObjectCreate("Z2", OBJ_ARROW, 0, Time[0],
g_ibuf_112[0]);
ObjectSet("Z2", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("Z2", OBJPROP_COLOR,
LimeGreen);
ObjectCreate("Z3", OBJ_ARROW, 0, Time[0],
g_ibuf_116[0]);
ObjectSet("Z3", OBJPROP_ARROWCODE,
SYMBOL_RIGHTPRICE);
ObjectSet("Z3", OBJPROP_COLOR,
LimeGreen);
return (0);
}
Windows Live Messenger makes it easier to stay in touch - learn how!