#property copyright "Copyright © 2009 Mechanics Trade" #property link "http://mechanics-trade.com" #import "wininet.dll" int InternetAttemptConnect(int a0); int InternetOpenA(string a0, int a1, string a2, string a3, int a4); int InternetOpenUrlA(int a0, string a1, string a2, int a3, int a4, int a5); int InternetReadFile(int a0, int& a1[], int a2, int& a3[]); int InternetCloseHandle(int a0); #import string gs_76; string gs_84; extern string Serial = "demo"; double g_slippage_100 = 3.0; double gda_108[] = {1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6, 1.6}; double gda_112[] = {2.6, 2.0, 2.0, 1.6, 1.3, 1.3, 1.0, 1.0, 1.0, 1.0, 1.0}; int g_datetime_116; int g_magic_120 = 123; int g_magic_124 = 1234; string gsa_128[10000]; int g_index_132 = 0; int g_timeframe_136 = 0; string gs_140 = ""; string gs_148 = ""; double gda_156[100][7]; int g_index_160 = 0; string gs_164; string gsa_172[20]; bool gi_176 = TRUE; int gi_180 = -1; double g_str2dbl_184; double g_str2dbl_192; double g_str2dbl_200; double g_str2dbl_208; double g_str2dbl_216; double g_str2dbl_224; double g_str2dbl_232; int gi_240 = 0; int init() { gs_84 = "3" + ".00"; gs_76 = "ht" + "tp" + ":/" + "/m" + "ech" + "a" + "ni" + "cs" + "-t" + "rad" + "e." + "c" + "om"; if (Digits == 5) g_slippage_100 = 30; if (Digits == 4) g_slippage_100 = 3; MathSrand(TimeLocal()); return (0); } int deinit() { for (int l_index_0 = 0; l_index_0 < g_index_132; l_index_0++) ObjectDelete(gsa_128[l_index_0]); g_index_132 = 0; return (0); } int start() { int li_16; string ls_20; string ls_32; string ls_40; string ls_48; bool li_60; int li_64; int l_index_68; int li_72; string ls_76; double ld_0 = MathRand(); DrawTextLabel("vlabel", 3, 4, 4, gs_84, 7, Brown); if (!IsConnected()) return (0); string ls_8 = DoubleToStr(TimeYear(g_datetime_116), 0) + "." + DoubleToStr(TimeMonth(g_datetime_116), 0) + "." + DoubleToStr(TimeDay(g_datetime_116), 0) + " " + DoubleToStr(TimeHour(g_datetime_116), 0) + ":" + DoubleToStr(TimeMinute(g_datetime_116), 0) + ":" + DoubleToStr(TimeSeconds(g_datetime_116), 0); if (g_datetime_116 == 0 || gs_164 == "") ls_8 = "offline"; gi_176 = FALSE; if (!IsExpertEnabled()) g_datetime_116 = 0; if (IsStopped()) g_datetime_116 = 0; if (gs_140 != Symbol() || g_timeframe_136 != Period() || gs_148 != Serial) { MathSrand(TimeLocal()); g_datetime_116 = 0; } UpdateArrayOrders(); if (gs_164 == "" || TimeCurrent() - g_datetime_116 > 30 || SummTikets() != gi_180) gi_176 = TRUE; DrawTextLabel("NameExp", 1, 10, 17, "Mechanics Trade", 14, LightCoral); DrawTextLabel("Copyright", 1, 3, 39, "Copyright © 2009 Mechanics Trade", 7, Brown); if (ls_8 == "offline") li_16 = 255; else li_16 = 32768; DrawTextLabel("timeupdate", 1, 4, 55, ls_8, 7, li_16); if (gi_176 && DoubleToStr(TimeSeconds(TimeCurrent()), 0) != "0") { ls_20 = ""; for (int l_index_28 = 0; l_index_28 < g_index_160 + 1; l_index_28++) ls_20 = ls_20 + DoubleToStr(gda_156[l_index_28][0], 0) + ":" + DoubleToStr(gda_156[l_index_28][3], 3) + "::"; ls_32 = ""; if (IsDemo()) ls_40 = "0"; else ls_40 = "1"; if (IsTesting()) ls_48 = "0"; else ls_48 = "1"; ls_32 = Symbol() + "|" + Period() + "|" + DoubleToStr(MarketInfo(Symbol(), MODE_DIGITS), 4) + "|" + Serial + "|" + gs_84 + "|" + DoubleToStr(MarketInfo(Symbol(), MODE_MINLOT), 4) + "|" + DoubleToStr(MarketInfo(Symbol(), MODE_LOTSTEP), 4) + "|" + DoubleToStr(3 * AccountNumber(), 0) + "|" + DoubleToStr(10000.0 * (AccountBalance() / 17.0), 0) + "|" + DoubleToStr(10000.0 * (AccountEquity() / 23.0), 0) + "|" + AccountName() + "|" + AccountCompany() + "|" + ls_40 + "|" + ls_48 + "|" + DoubleToStr(TimeCurrent(), 0) + "|" + DoubleToStr(Time[0], 0); gs_164 = GetUrlData(gs_76 + "/robot/getdata3.php?" + "r=" + DoubleToStr(ld_0, 0) + "&rd=" + DoubleToStr(gda_156[0][2], 0) + "|" + ls_20 + "|" + SummTikets() + "&nf=" + ls_32); if (gs_164 == "error") return (0); for (int li_56 = 1; li_56 < 20; li_56++) gsa_172[li_56] = ""; li_60 = FALSE; li_64 = 0; l_index_68 = 0; while (!li_60) { li_72 = StringFind(gs_164, "~", li_64); if (li_72 == -1) li_60 = TRUE; else { ls_76 = StringSubstr(gs_164, li_64, li_72 - li_64); gsa_172[l_index_68] = ls_76; li_64 = li_72 + 1; l_index_68++; } } gi_180 = StrToDouble(gsa_172[0]); g_str2dbl_184 = StrToDouble(gsa_172[1]); g_str2dbl_192 = StrToDouble(gsa_172[2]); g_str2dbl_200 = StrToDouble(gsa_172[3]); g_str2dbl_208 = StrToDouble(gsa_172[4]); g_str2dbl_216 = StrToDouble(gsa_172[5]); g_str2dbl_232 = StrToDouble(gsa_172[6]); g_str2dbl_224 = StrToDouble(gsa_172[7]); gi_240++; g_datetime_116 = TimeCurrent(); gs_140 = Symbol(); g_timeframe_136 = Period(); gs_148 = Serial; if (gi_180 != SummTikets()) gs_164 = ""; } if (gs_164 != "") for (int li_84 = 8; li_84 <= 20; li_84++) DrawTextLabel("text_data_" + li_84, 1, 4, 15 * (li_84 - 7) + 70, gsa_172[li_84], 7, DimGray); else for (li_84 = 8; li_84 <= 20; li_84++) DrawTextLabel("text_data_" + li_84, 1, 4, 15 * (li_84 - 7) + 70, " ", 7, DimGray); if (g_str2dbl_184 == 3.0) { CloseAll(); return (0); } if (gi_180 == SummTikets() || SummTikets() > 0) Poser(); return (0); } int CloseAll() { int l_ticket_0; double l_price_4; UpdateArrayOrders(); for (int l_index_12 = 1; l_index_12 < g_index_160 + 1; l_index_12++) { l_ticket_0 = gda_156[l_index_12][1]; if (OrderSelect(l_ticket_0, SELECT_BY_TICKET, MODE_TRADES) != FALSE) { if (OrderType() == OP_BUY) l_price_4 = Bid; if (OrderType() == OP_SELL) l_price_4 = Ask; OrderClose(l_ticket_0, OrderLots(), l_price_4, g_slippage_100, ColorEnter(gda_156[l_index_12][2])); } } l_index_12 = 0; l_ticket_0 = gda_156[l_index_12][1]; if (OrderSelect(l_ticket_0, SELECT_BY_TICKET, MODE_TRADES) == FALSE) return (0); if (OrderType() == OP_BUY) l_price_4 = Bid; if (OrderType() == OP_SELL) l_price_4 = Ask; OrderClose(l_ticket_0, OrderLots(), l_price_4, g_slippage_100, ColorEnter(gda_156[l_index_12][2])); return (1); } int UpdateArrayOrders() { int l_ord_total_0 = OrdersTotal(); int l_pos_4 = 0; g_index_160 = 0; gda_156[0][1] = 0; gda_156[0][2] = 0; gda_156[0][3] = 0; for (l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) != FALSE) { if (OrderMagicNumber() == g_magic_120) { gda_156[0][0] = OrderOpenPrice() / MarketInfo(Symbol(), MODE_POINT); gda_156[0][1] = OrderTicket(); if (OrderType() == OP_BUY) gda_156[0][2] = 1; if (OrderType() == OP_SELL) gda_156[0][2] = -1; gda_156[0][3] = OrderLots(); gda_156[0][4] = OrderStopLoss(); gda_156[0][5] = OrderProfit(); gda_156[0][6] = OrderMagicNumber(); } } } if (gda_156[0][2] == 1.0 || gda_156[0][2] == -1.0) { for (l_pos_4 = 0; l_pos_4 < l_ord_total_0; l_pos_4++) { if (OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES) != FALSE) { if (OrderMagicNumber() == g_magic_124) { g_index_160++; gda_156[g_index_160][0] = OrderOpenPrice() / MarketInfo(Symbol(), MODE_POINT); gda_156[g_index_160][1] = OrderTicket(); if (OrderType() == OP_BUY) gda_156[g_index_160][2] = 1; if (OrderType() == OP_SELL) gda_156[g_index_160][2] = -1; gda_156[g_index_160][3] = OrderLots(); gda_156[g_index_160][4] = OrderStopLoss(); gda_156[g_index_160][5] = OrderProfit(); gda_156[g_index_160][6] = OrderMagicNumber(); } } } } return (1); } int Poser() { double ld_36; double ld_44; double l_str2dbl_52; int l_arr_size_60; double ld_64; double ld_72; int l_ticket_80; double l_lots_84; double l_pips_92; double ld_100; double ld_108; double ld_116; double ld_124; double l_price_132; int l_ticket_140; int li_144; double l_price_148; double l_price_156; double l_price_164; double ld_0 = 10; double ld_unused_8 = 0; double ld_unused_16 = 0; int l_ord_total_24 = OrdersTotal(); int l_pos_28 = 0; int l_index_32 = 0; gda_156[0][1] = 0; gda_156[0][2] = 0; gda_156[0][3] = 0; for (l_pos_28 = 0; l_pos_28 < l_ord_total_24; l_pos_28++) { if (OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES) != FALSE) { if (OrderMagicNumber() == g_magic_120) { gda_156[l_index_32][0] = OrderOpenPrice() / MarketInfo(Symbol(), MODE_POINT); gda_156[l_index_32][1] = OrderTicket(); if (OrderType() == OP_BUY) gda_156[l_index_32][2] = 1; if (OrderType() == OP_SELL) gda_156[l_index_32][2] = -1; gda_156[l_index_32][3] = OrderLots(); gda_156[l_index_32][4] = OrderStopLoss(); gda_156[l_index_32][5] = OrderProfit(); gda_156[l_index_32][6] = OrderMagicNumber(); } } } if (gda_156[l_index_32][2] == 1.0 || gda_156[l_index_32][2] == -1.0) { for (l_pos_28 = 0; l_pos_28 < l_ord_total_24; l_pos_28++) { if (OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES) != FALSE) { if (OrderMagicNumber() == g_magic_124) { l_index_32++; gda_156[l_index_32][0] = OrderOpenPrice() / MarketInfo(Symbol(), MODE_POINT); gda_156[l_index_32][1] = OrderTicket(); if (OrderType() == OP_BUY) gda_156[l_index_32][2] = 1; if (OrderType() == OP_SELL) gda_156[l_index_32][2] = -1; gda_156[l_index_32][3] = OrderLots(); gda_156[l_index_32][4] = OrderStopLoss(); gda_156[l_index_32][5] = OrderProfit(); gda_156[l_index_32][6] = OrderMagicNumber(); } } } ld_36 = 0; l_str2dbl_52 = g_str2dbl_232; l_arr_size_60 = ArraySize(gda_156); for (l_pos_28 = 0; l_pos_28 < l_index_32 + 1; l_pos_28++) { ld_44 = (gda_156[0][0] - gda_156[l_pos_28][0]) * gda_156[0][2]; if (ld_44 > ld_36) { ld_36 = ld_44; l_str2dbl_52 = gda_156[l_pos_28][3]; } } if (ld_36 == 0.0) ld_72 = g_str2dbl_224; else ld_72 = ld_36 * gda_108[l_index_32]; ld_64 = gda_156[0][0] - ld_72 * gda_156[0][2]; if ((CurentPriceInPipsNextLevel(gda_156[0][2]) - ld_64) * gda_156[0][2] < 0.0 && l_index_32 < ld_0 - 1.0) { l_lots_84 = MathRound(l_str2dbl_52 * gda_112[l_index_32] / MarketInfo(Symbol(), MODE_LOTSTEP)) * MarketInfo(Symbol(), MODE_LOTSTEP); l_pips_92 = CurentPriceInPips(gda_156[0][2]); l_ticket_80 = OrderSend(Symbol(), typeOrder(gda_156[0][2]), l_lots_84, l_pips_92 * MarketInfo(Symbol(), MODE_POINT), g_slippage_100, 0, 0, "Add from #" + gda_156[l_index_32][1], g_magic_124, 0, ColorEnter(gda_156[0][2])); if (l_ticket_80 >= 0) { l_index_32++; gda_156[l_index_32][0] = l_pips_92; gda_156[l_index_32][1] = l_ticket_80; gda_156[l_index_32][2] = gda_156[0][2]; gda_156[l_index_32][3] = l_lots_84; gda_156[l_index_32][4] = gda_156[0][4]; gda_156[l_index_32][5] = 0; gda_156[l_index_32][6] = g_magic_124; ld_36 = (gda_156[0][0] - gda_156[l_index_32][0]) * gda_156[0][2]; } } if (l_index_32 > 0) { ld_100 = 0; ld_108 = 0; for (l_pos_28 = 0; l_pos_28 < l_index_32 + 1; l_pos_28++) { ld_100 += gda_156[l_pos_28][0] * gda_156[l_pos_28][3]; ld_108 += gda_156[l_pos_28][3]; } ld_116 = MathFloor(ld_100 / ld_108); if (l_index_32 > 150) ld_124 = ld_116; else ld_124 = ld_116 + gda_156[l_index_32][2] * g_str2dbl_216; l_price_132 = ld_124 * MarketInfo(Symbol(), MODE_POINT); for (l_pos_28 = 0; l_pos_28 < l_index_32 + 1; l_pos_28++) { l_ticket_140 = gda_156[l_pos_28][1]; OrderModify(l_ticket_140, OrderOpenPrice(), OrderStopLoss(), l_price_132, 0, ColorEnter(gda_156[l_pos_28][2])); } } } else { li_144 = Trend(); if (li_144 == 1 || li_144 == -1) { l_price_148 = CurentPriceInPips(li_144) * MarketInfo(Symbol(), MODE_POINT); l_price_156 = (CurentPriceInPips(li_144) + g_str2dbl_216 * li_144) * MarketInfo(Symbol(), MODE_POINT); l_price_164 = 0; if (StringFind(AccountCompany(), "Bro") == -1) l_ticket_80 = OrderSend(Symbol(), typeOrder(li_144), g_str2dbl_208, l_price_148, g_slippage_100, l_price_164, l_price_156, "Add from #" + gda_156[l_index_32][1], g_magic_120, 0, ColorEnter(gda_156[0][2])); else { l_ticket_80 = OrderSend(Symbol(), typeOrder(li_144), g_str2dbl_208, l_price_148, g_slippage_100, 0, 0, "Add from #" + gda_156[l_index_32][1], g_magic_120, 0, ColorEnter(gda_156[0][2])); OrderModify(l_ticket_80, OrderOpenPrice(), OrderStopLoss(), l_price_156, 0, Red); } if (l_ticket_80 >= 0) l_index_32++; } } return (0); } double Trend() { return (g_str2dbl_184); } int typeOrder(int ai_0) { if (ai_0 > 0) return (0); if (ai_0 < 0) return (1); return (0); } double CurentPriceInPips(int ai_0) { if (ai_0 > 0) return (Ask / MarketInfo(Symbol(), MODE_POINT)); if (ai_0 < 0) return (Bid / MarketInfo(Symbol(), MODE_POINT)); return (0); } double CurentPriceInPipsNextLevel(int ai_0) { if (ai_0 > 0) return (Ask / MarketInfo(Symbol(), MODE_POINT)); if (ai_0 < 0) return (Bid / MarketInfo(Symbol(), MODE_POINT)); return (0); } double ColorEnter(int ai_0) { if (ai_0 > 0) return (14772545); if (ai_0 < 0) return (255); return (0); } int AddObject(string as_0) { gsa_128[g_index_132] = as_0; g_index_132++; return (0); } int SummTikets() { int li_4; int li_ret_0 = 0; for (int l_index_8 = 0; l_index_8 < g_index_160 + 1; l_index_8++) { li_4 = gda_156[l_index_8][1]; li_ret_0 += li_4; } return (li_ret_0); } int DrawTextLabel(string a_name_0, int a_corner_8, int a_x_12, int a_y_16, string a_text_20, int a_fontsize_28, color a_color_32) { if (ObjectFind(a_name_0) == -1) { ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0); AddObject(a_name_0); } ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_8); ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_12); ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_16); ObjectSetText(a_name_0, a_text_20, a_fontsize_28, "Tahoma", a_color_32); return (0); } string GetUrlData(string as_0) { int lia_20[256]; int lia_24[1]; int li_36; string ls_40; if (!IsDllsAllowed()) { Comment("Необходимо в настройках разрешить использование DLL"); return ("error"); } int li_8 = InternetAttemptConnect(0); if (li_8 != 0) { Print("Ошибка при вызове соединения"); return ("error"); } int li_12 = InternetOpenA("Microsoft Internet Explorer", 0, "", "", 0); if (li_12 <= 0) { Print("Ошибка при вызове соединения"); return ("error"); } int li_16 = InternetOpenUrlA(li_12, as_0, "", 0, 0, 0); if (li_16 <= 0) { Print("Ошибка при вызове соединения"); InternetCloseHandle(li_12); return ("error"); } string ls_ret_28 = ""; while (!IsStopped()) { li_36 = InternetReadFile(li_16, lia_20, 1024, lia_24); if (lia_24[0] == 0) break; ls_40 = ""; for (int l_index_48 = 0; l_index_48 < 256; l_index_48++) { ls_40 = ls_40 + CharToStr(lia_20[l_index_48] & 255); if (StringLen(ls_40) == lia_24[0]) break; ls_40 = ls_40 + CharToStr(lia_20[l_index_48] >> 8 & 255); if (StringLen(ls_40) == lia_24[0]) break; ls_40 = ls_40 + CharToStr(lia_20[l_index_48] >> 16 & 255); if (StringLen(ls_40) == lia_24[0]) break; ls_40 = ls_40 + CharToStr(lia_20[l_index_48] >> 24 & 255); } ls_ret_28 = ls_ret_28 + ls_40; Sleep(1); } if (ls_ret_28 != "") return (ls_ret_28); Print("Ошибка соединения"); InternetCloseHandle(li_12); return ("error"); }