#property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.OAN4X.COM " #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Black #property indicator_color2 White #property indicator_color3 White int g_count_76 = 0; int gi_80 = 85; int gi_84 = 0; int gi_88 = 0; double gd_92 = 3.0654; int gi_100 = 1102; int gi_104 = 0; double g_ibuf_108[]; double g_ibuf_112[]; double g_ibuf_116[]; double gda_120[10][10]; double gda_124[10]; double gda_128[10]; double gda_132[20]; double gd_136; int g_shift_144; int g_period_148; int gi_152; double gd_160; double gd_168; double gd_176; int gi_184; int gi_188; int gi_192; int gi_196; int gi_200; double gd_204; double gd_212; int init() { IndicatorShortName("Center of Gravity"); SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, g_ibuf_108); SetIndexBuffer(1, g_ibuf_112); SetIndexBuffer(2, g_ibuf_116); g_period_148 = MathRound(gi_80); gi_200 = gi_84 + 1; ObjectCreate("pr" + gi_100, OBJ_ARROW, 0, Time[g_period_148], g_ibuf_108[g_period_148]); ObjectSet("pr" + gi_100, OBJPROP_ARROWCODE, 159); return (0); } int deinit() { ObjectDelete("pr" + gi_100); return (0); } int start() { double ld_4; double ld_12; double l_bid_20; if (Year() == 2009 && Month() >= 8 && Day() >= 15) { Alert("SYSTEM EXPIRED "); Alert("Please Contact dc_orabi@hotmail.com "); return (0); } g_shift_144 = iBarShift(Symbol(), Period(), ObjectGet("pr" + gi_100, OBJPROP_TIME1)); g_period_148 = gi_80; gda_132[1] = g_period_148 + 1; SetIndexDrawBegin(0, Bars - g_period_148 - 1); SetIndexDrawBegin(1, Bars - g_period_148 - 1); SetIndexDrawBegin(2, Bars - g_period_148 - 1); for (int li_0 = 1; li_0 <= gi_200 * 2 - 2; li_0++) { gd_136 = 0; for (gi_152 = gi_88; gi_152 <= gi_88 + g_period_148; gi_152++) gd_136 += MathPow(gi_152, li_0); gda_132[li_0 + 1] = gd_136; } for (li_0 = 1; li_0 <= gi_200; li_0++) { gd_136 = 0.0; for (gi_152 = gi_88; gi_152 <= gi_88 + g_period_148; gi_152++) { if (li_0 == 1) gd_136 += Close[gi_152]; else gd_136 += Close[gi_152] * MathPow(gi_152, li_0 - 1); } gda_124[li_0] = gd_136; } for (gi_188 = 1; gi_188 <= gi_200; gi_188++) { for (gi_184 = 1; gi_184 <= gi_200; gi_184++) { gi_192 = gi_184 + gi_188 - 1; gda_120[gi_184][gi_188] = gda_132[gi_192]; } } for (gi_192 = 1; gi_192 <= gi_200 - 1; gi_192++) { gi_196 = 0; gd_168 = 0; for (gi_184 = gi_192; gi_184 <= gi_200; gi_184++) { if (MathAbs(gda_120[gi_184][gi_192]) > gd_168) { gd_168 = MathAbs(gda_120[gi_184][gi_192]); gi_196 = gi_184; } } if (gi_196 == 0) return (0); if (gi_196 != gi_192) { for (gi_188 = 1; gi_188 <= gi_200; gi_188++) { gd_176 = gda_120[gi_192][gi_188]; gda_120[gi_192][gi_188] = gda_120[gi_196][gi_188]; gda_120[gi_196][gi_188] = gd_176; } gd_176 = gda_124[gi_192]; gda_124[gi_192] = gda_124[gi_196]; gda_124[gi_196] = gd_176; } for (gi_184 = gi_192 + 1; gi_184 <= gi_200; gi_184++) { gd_160 = gda_120[gi_184][gi_192] / gda_120[gi_192][gi_192]; for (gi_188 = 1; gi_188 <= gi_200; gi_188++) { if (gi_188 == gi_192) gda_120[gi_184][gi_188] = 0; else gda_120[gi_184][gi_188] = gda_120[gi_184][gi_188] - gd_160 * gda_120[gi_192][gi_188]; } gda_124[gi_184] = gda_124[gi_184] - gd_160 * gda_124[gi_192]; } } gda_128[gi_200] = gda_124[gi_200] / gda_120[gi_200][gi_200]; for (gi_184 = gi_200 - 1; gi_184 >= 1; gi_184--) { gd_176 = 0; for (gi_188 = 1; gi_188 <= gi_200 - gi_184; gi_188++) { gd_176 += (gda_120[gi_184][gi_184 + gi_188]) * (gda_128[gi_184 + gi_188]); gda_128[gi_184] = 1 / gda_120[gi_184][gi_184] * (gda_124[gi_184] - gd_176); } } for (gi_152 = gi_88; gi_152 <= gi_88 + g_period_148; gi_152++) { gd_136 = 0; for (gi_192 = 1; gi_192 <= gi_84; gi_192++) gd_136 += (gda_128[gi_192 + 1]) * MathPow(gi_152, gi_192); g_ibuf_108[gi_152] = gda_128[1] + gd_136; } gd_204 = 0.0; for (gi_152 = gi_88; gi_152 <= gi_88 + g_period_148; gi_152++) gd_204 += MathPow(Close[gi_152] - g_ibuf_108[gi_152], 2); gd_204 = MathSqrt(gd_204 / (g_period_148 + 1)) * gd_92; gd_212 = iStdDev(NULL, 0, g_period_148, 0, MODE_SMA, PRICE_CLOSE, gi_88) * gd_92; for (gi_152 = gi_88; gi_152 <= gi_88 + g_period_148; gi_152++) { g_ibuf_112[gi_152] = g_ibuf_108[gi_152] + gd_204; g_ibuf_116[gi_152] = g_ibuf_108[gi_152] - gd_204; ld_4 = g_ibuf_112[0]; ld_12 = g_ibuf_116[0]; l_bid_20 = Bid; if (g_count_76 > gi_104 && l_bid_20 > ld_12 && l_bid_20 < ld_4) g_count_76 = 0; if (l_bid_20 >= ld_4 && g_count_76 < gi_104) { Alert("start thinking of short trades make sure counter side price is over sold", Symbol()); g_count_76++; } if (l_bid_20 <= ld_12 && g_count_76 < gi_104) { Alert("start thinking of long trades make sure counter side price is overbougth ", Symbol()); g_count_76++; } } ObjectMove("pr" + gi_100, 0, Time[g_period_148], g_ibuf_108[g_period_148]); return (0); }