#property copyright "Copyright ?2009, MetaClub" #property link "" extern string str_trade = "-- °Å·¡ ¼³Á¤ --"; extern double lots = 0.05; extern double slippage = 3.0; extern int take_profit = 100; extern int order_choice = 1; extern int order_choice_option = 0; extern double plus_profit = 0.0; extern string str_expert = "-- ȯ°æ ¼³Á¤ --"; extern bool display = TRUE; extern int magic_number = 20090701; extern bool alert_on = FALSE; int gi_unused_140; int g_ticket_144; int g_ticket_148; int g_count_152; int g_count_156; double gd_160; double gd_168; string g_comment_192; bool gi_200; bool gi_204; int init() { gi_unused_140 = Bars; g_comment_192 = Symbol() + " " + Period() + ": Neuro Martingail Build" + magic_number; gi_200 = TRUE; gi_204 = TRUE; gd_160 = lots; gd_168 = lots; g_count_152 = 0; g_count_156 = 0; SetLabel("setting_" + magic_number, "www.metaclub.net ¿¡¼­ Á¦À۵Ǿú½À´Ï´Ù.", 9, 3, 75, White); if (display) DisplayLabel(); return (0); } void DisplayLabel() { string ls_0; SetLabel("start_time_" + magic_number, "Neuro Martingail Build" + magic_number + " " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ½ÃÀÛ!", 9, 3, 15, Orange); SetLabel("trade_state_" + magic_number, "0°è¾à 0ÇÌ 0%", 9, 3, 30, White); SetLabel("trade_condition_" + magic_number, "°Å·¡ Á¶°ÇÀÌ ¾ø½À´Ï´Ù.", 9, 3, 45, SlateGray); SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); if (alert_on) ls_0 = "O"; else ls_0 = "X"; string ls_8 = "°è¾à¼ö:" + DoubleToStr(lots, 2) + "°³ ÀÌÀͽÇÇö:" + take_profit + "ÇÌ ½½¸³ÇÇÁö:" + DoubleToStr(slippage, 2) + "ÇÌ"; string ls_16 = "ºôµå¹øÈ£:" + magic_number + "¹ø ¾Ë¶÷»ç¿ë:" + ls_0; SetLabel("setting_1_" + magic_number, ls_8, 9, 3, 90, White); SetLabel("setting_2_" + magic_number, ls_16, 9, 3, 105, White); } int start() { if (!gi_200) { Print("¿Ã¹Ù¸¥ °èÁ°¡ ¾Æ´Õ´Ï´Ù."); return (-1); } ObjectDelete("trade_alert_" + magic_number); ProfitDisplay(); return (0); } int ProfitDisplay() { double ld_0 = 0; double ld_8 = 0; double ld_16 = 0; for (int l_pos_24 = 0; l_pos_24 < OrdersHistoryTotal(); l_pos_24++) { OrderSelect(l_pos_24, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { ld_0 += OrderProfit(); ld_8 += OrderLots(); } } } for (int l_pos_28 = 0; l_pos_28 < OrdersTotal(); l_pos_28++) { OrderSelect(l_pos_28, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { ld_0 += OrderProfit(); ld_8 += OrderLots(); } } } if (ld_0 == 0.0) ld_16 = 0; else ld_16 = NormalizeDouble(100.0 * (ld_0 / (2000.0 * lots)), 2); if (ld_16 > 0.0) { if (display) SetLabel("trade_state_" + magic_number, DoubleToStr(ld_8, 1) + "°è¾à " + DoubleToStr(ld_0, 2) + "ÇÌ " + DoubleToStr(ld_16, 1) + "%", 9, 3, 30, Crimson); } else if (display) SetLabel("trade_state_" + magic_number, DoubleToStr(ld_8, 1) + "°è¾à " + DoubleToStr(ld_0, 2) + "ÇÌ " + DoubleToStr(ld_16, 1) + "%", 9, 3, 30, DodgerBlue); if (gi_204 == TRUE) FirstOrderOpen(); else CloseCheck(); return (0); } void CloseCheck() { int li_unused_0 = 1; int l_ticket_4 = 0; for (int l_pos_8 = 0; l_pos_8 < OrdersHistoryTotal(); l_pos_8++) { OrderSelect(l_pos_8, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { if (g_ticket_144 == OrderTicket()) { g_count_152--; RefreshRates(); l_ticket_4 = OrderSend(Symbol(), OP_SELL, 2.0 * gd_168, Bid, slippage, 0, 0, g_comment_192, magic_number, 0, DodgerBlue); if (l_ticket_4 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Åµµ ", DoubleToStr(2.0 * gd_168, 1), "°è¾àÀÌ ", DoubleToStr(Bid, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Åµµ " + DoubleToStr(2.0 * gd_168, 1) + "°è¾àÀÌ " + DoubleToStr(Bid, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, DodgerBlue); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); gd_168 = 2.0 * gd_168; g_count_156++; g_ticket_144 = 0; } } if (g_ticket_148 == OrderTicket()) { g_count_156--; RefreshRates(); l_ticket_4 = OrderSend(Symbol(), OP_BUY, 2.0 * gd_160, Ask, slippage, 0, 0, g_comment_192, magic_number, 0, DodgerBlue); if (l_ticket_4 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Å¼ö ", DoubleToStr(2.0 * gd_160, 1), "°è¾àÀÌ ", DoubleToStr(Ask, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Å¼ö " + DoubleToStr(2.0 * gd_160, 1) + "°è¾àÀÌ " + DoubleToStr(Ask, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, DodgerBlue); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); gd_160 = 2.0 * gd_160; g_count_152++; g_ticket_148 = 0; } } } } } if (g_count_152 > 1) PlusBuyClose(); if (g_count_156 > 1) PlusSellClose(); if (g_count_152 + g_count_156 < 1) FirstOrderOpen(); } void PlusBuyClose() { int lia_28[2]; double lda_32[2]; double lda_36[2]; int li_52; int l_lots_56; bool l_ord_close_0 = TRUE; int l_ticket_4 = 0; double ld_unused_8 = 0; double l_lots_16 = 0; int l_index_24 = 0; int l_pos_40 = g_count_152 - 1; while (true) { if (l_index_24 > 1) break; OrderSelect(l_pos_40, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { if (OrderType() == OP_BUY) { lia_28[l_index_24] = OrderTicket(); lda_32[l_index_24] = OrderProfit(); lda_36[l_index_24] = OrderLots(); l_index_24++; } } } l_pos_40--; } if (lda_32[0] + lda_32[1] >= plus_profit) { for (int l_index_44 = 0; l_index_44 < 2; l_index_44++) { RefreshRates(); l_ord_close_0 = OrderClose(lia_28[l_index_44], lda_36[l_index_44], Bid, slippage, Green); if (!l_ord_close_0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Å¼ö ", DoubleToStr(lda_36[l_index_44], 1), "°è¾àÀÌ ", DoubleToStr(Bid, Digits), " ¿¡ û»êÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Å¼ö " + DoubleToStr(lda_36[l_index_44], 1) + "°è¾àÀÌ " + DoubleToStr(Bid, Digits) + "¿¡ û»êÇÕ´Ï´Ù.", 18, 300, 300, LimeGreen); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_152--; } } Print(g_count_152); if (g_count_152 >= 1) { switch (order_choice) { case 1: l_lots_16 = lda_36[1]; break; case 2: l_lots_16 = lda_36[0]; break; case 3: if (lda_36[0] / lda_36[1] <= 2.0) l_lots_16 = lda_36[0]; else l_lots_16 = lda_36[1]; break; case 4: li_52 = lots; l_lots_56 = lots; for (int l_count_60 = 0; l_count_60 < order_choice_option - 1; l_count_60++) li_52 *= l_lots_56; if (lda_36[0] + lda_36[1] > li_52) l_lots_16 = lda_36[1]; else l_lots_16 = lda_36[0]; } RefreshRates(); l_ticket_4 = OrderSend(Symbol(), OP_BUY, l_lots_16, Ask, slippage, 0, 0, g_comment_192, magic_number, 0, Crimson); if (l_ticket_4 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Å¼ö ", DoubleToStr(l_lots_16, 1), "°è¾àÀÌ ", DoubleToStr(Ask, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Å¼ö " + DoubleToStr(l_lots_16, 1) + "°è¾àÀÌ " + DoubleToStr(Ask, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, Crimson); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_152++; gd_160 = l_lots_16; } } } if (g_count_152 > 1) BuyOrderOpen(); } void PlusSellClose() { int lia_28[2]; double lda_32[2]; double lda_36[2]; int li_52; int l_lots_56; bool l_ord_close_0 = TRUE; int l_ticket_4 = 0; double ld_unused_8 = 0; double l_lots_16 = 0; int l_index_24 = 0; int l_pos_40 = OrdersTotal() - 1; while (true) { if (l_index_24 > 1) break; OrderSelect(l_pos_40, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { if (OrderType() == OP_SELL) { lia_28[l_index_24] = OrderTicket(); lda_32[l_index_24] = OrderProfit(); lda_36[l_index_24] = OrderLots(); l_index_24++; } } } l_pos_40--; } if (lda_32[0] + lda_32[1] >= plus_profit) { for (int l_index_44 = 0; l_index_44 < 2; l_index_44++) { RefreshRates(); l_ord_close_0 = OrderClose(lia_28[l_index_44], lda_36[l_index_44], Ask, slippage, Green); if (!l_ord_close_0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Åµµ ", DoubleToStr(lda_36[l_index_44], 1), "°è¾àÀÌ ", DoubleToStr(Ask, Digits), " ¿¡ û»êÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Åµµ " + DoubleToStr(lda_36[l_index_44], 1) + "°è¾àÀÌ " + DoubleToStr(Ask, Digits) + "¿¡ û»êÇÕ´Ï´Ù.", 18, 300, 300, LimeGreen); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_156--; } } if (g_count_156 >= 1) { switch (order_choice) { case 1: l_lots_16 = lda_36[1]; break; case 2: l_lots_16 = lda_36[0]; break; case 3: if (lda_36[0] / lda_36[1] <= 2.0) l_lots_16 = lda_36[0]; else l_lots_16 = lda_36[1]; break; case 4: li_52 = lots; l_lots_56 = lots; for (int l_count_60 = 0; l_count_60 < order_choice_option - 1; l_count_60++) li_52 *= l_lots_56; if (lda_36[0] + lda_36[1] > li_52) l_lots_16 = lda_36[1]; else l_lots_16 = lda_36[0]; } RefreshRates(); l_ticket_4 = OrderSend(Symbol(), OP_SELL, l_lots_16, Bid, slippage, 0, 0, g_comment_192, magic_number, 0, DodgerBlue); if (l_ticket_4 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Åµµ ", DoubleToStr(l_lots_16, 1), "°è¾àÀÌ ", DoubleToStr(Bid, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Åµµ " + DoubleToStr(l_lots_16, 1) + "°è¾àÀÌ " + DoubleToStr(Bid, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, DodgerBlue); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_156++; gd_168 = l_lots_16; } } } if (g_count_156 > 1) SellOrderOpen(); } void BuyOrderOpen() { double lda_4[2]; int l_ticket_0 = 0; int l_index_8 = 0; int l_pos_12 = OrdersTotal() - 1; while (true) { if (l_index_8 > 1) break; OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { if (OrderType() == OP_BUY) { lda_4[l_index_8] = OrderOpenPrice(); l_index_8++; } } } l_pos_12--; } if (MathAbs(lda_4[0] - lda_4[1]) <= MathAbs(Ask - lda_4[0])) { RefreshRates(); l_ticket_0 = OrderSend(Symbol(), OP_BUY, 2.0 * gd_160, Ask, slippage, 0, 0, g_comment_192, magic_number, 0, Crimson); if (l_ticket_0 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Å¼ö ", DoubleToStr(gd_160, 1), "°è¾àÀÌ ", DoubleToStr(Ask, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Å¼ö " + DoubleToStr(gd_160, 1) + "°è¾àÀÌ " + DoubleToStr(Ask, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, Crimson); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_152++; gd_160 = 2.0 * gd_160; } } } void SellOrderOpen() { double lda_4[2]; Print(g_count_156); int l_ticket_0 = 0; int l_index_8 = 0; int l_pos_12 = OrdersTotal() - 1; while (true) { if (l_index_8 > 1) break; OrderSelect(l_pos_12, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderMagicNumber() == magic_number) { if (OrderType() == OP_SELL) { lda_4[l_index_8] = OrderOpenPrice(); l_index_8++; } } } l_pos_12--; } if (MathAbs(lda_4[0] - lda_4[1]) <= MathAbs(Bid - lda_4[0])) { RefreshRates(); l_ticket_0 = OrderSend(Symbol(), OP_SELL, 2.0 * gd_168, Bid, slippage, 0, 0, g_comment_192, magic_number, 0, Crimson); if (l_ticket_0 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Åµµ ", DoubleToStr(gd_168, 1), "°è¾àÀÌ ", DoubleToStr(Bid, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Åµµ " + DoubleToStr(gd_168, 1) + "°è¾àÀÌ " + DoubleToStr(Bid, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, Crimson); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_156++; gd_168 = 2.0 * gd_168; } } } void FirstOrderOpen() { gd_160 = lots; gd_168 = lots; RefreshRates(); g_ticket_144 = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, 0, Ask + take_profit * Point, g_comment_192, magic_number, 0, Crimson); if (g_ticket_144 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Å¼ö ", DoubleToStr(lots, 1), "°è¾àÀÌ ", DoubleToStr(Ask, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Å¼ö " + DoubleToStr(lots, 1) + "°è¾àÀÌ " + DoubleToStr(Ask, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, Crimson); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_152++; } RefreshRates(); g_ticket_148 = OrderSend(Symbol(), OP_SELL, lots, Bid, slippage, 0, Bid - take_profit * Point, g_comment_192, magic_number, 0, DodgerBlue); if (g_ticket_148 <= 0) { if (display) SetLabel("error_state_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " " + ErrorDescription(GetLastError()), 9, 3, 60, SlateGray); } else { if (alert_on) Alert("Neuro Martingail Build", magic_number, " ", Symbol(), " ", Period(), "/n¸Åµµ ÁÖ¹® ", DoubleToStr(lots, 1), " °è¾àÀÌ ", DoubleToStr(Bid, Digits), " ¿¡ ÁøÀÔÇÕ´Ï´Ù."); else { SetLabel("trade_alert_" + magic_number, TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS) + " ¸Åµµ " + DoubleToStr(lots, 1) + "°è¾àÀÌ " + DoubleToStr(Bid, Digits) + "¿¡ ÁøÀÔÇÕ´Ï´Ù.", 18, 300, 300, DodgerBlue); } if (display) SetLabel("error_state_" + magic_number, "ÁÖ¹® ¿À·ù°¡ ¾ø½À´Ï´Ù.", 9, 3, 60, SlateGray); g_count_156++; } gi_204 = FALSE; } int SetLabel(string a_name_0, string a_text_8, int a_fontsize_16, int a_x_20, int a_y_24, color a_color_28) { if (ObjectFind(a_name_0) == -1) ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0); ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_20); ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_24); ObjectSetText(a_name_0, a_text_8, a_fontsize_16, "Tahoma", a_color_28); return (0); } string ErrorDescription(int ai_0) { string ls_ret_4; switch (ai_0) { case 0: case 1: ls_ret_4 = "no error."; break; case 2: ls_ret_4 = "common error."; break; case 3: ls_ret_4 = "invalid trade parameters"; break; case 4: ls_ret_4 = "trade server is busy"; break; case 5: ls_ret_4 = "old version of the client terminal"; break; case 6: ls_ret_4 = "no connection with trade server"; break; case 7: ls_ret_4 = "not enough rights"; break; case 8: ls_ret_4 = "too frequent requests"; break; case 9: ls_ret_4 = "malfunctional trade operation"; break; case 64: ls_ret_4 = "account disabled"; break; case 65: ls_ret_4 = "invalid account"; break; case 128: ls_ret_4 = "trade timeout"; break; case 129: ls_ret_4 = "invalid price"; break; case 130: ls_ret_4 = "invalid stops"; break; case 131: ls_ret_4 = "invalid trade volume"; break; case 132: ls_ret_4 = "market is closed"; break; case 133: ls_ret_4 = "trade is disabled"; break; case 134: ls_ret_4 = "not enough money"; break; case 135: ls_ret_4 = "price changed"; break; case 136: ls_ret_4 = "off quotes"; break; case 137: ls_ret_4 = "broker is busy"; break; case 138: ls_ret_4 = "requote"; break; case 139: ls_ret_4 = "order is locked"; break; case 140: ls_ret_4 = "long positions only allowed"; break; case 141: ls_ret_4 = "too many requests"; break; case 145: ls_ret_4 = "modification denied because order too close to market"; break; case 146: ls_ret_4 = "trade context is busy"; break; case 4000: ls_ret_4 = "no error"; break; case 4001: ls_ret_4 = "wrong function pointer"; break; case 4002: ls_ret_4 = "array index is out of range"; break; case 4003: ls_ret_4 = "no memory for function call stack"; break; case 4004: ls_ret_4 = "recursive stack overflow"; break; case 4005: ls_ret_4 = "not enough stack for parameter"; break; case 4006: ls_ret_4 = "no memory for parameter string"; break; case 4007: ls_ret_4 = "no memory for temp string"; break; case 4008: ls_ret_4 = "not initialized string"; break; case 4009: ls_ret_4 = "not initialized string in array"; break; case 4010: ls_ret_4 = "no memory for array\' string"; break; case 4011: ls_ret_4 = "too long string"; break; case 4012: ls_ret_4 = "remainder from zero divide"; break; case 4013: ls_ret_4 = "zero divide"; break; case 4014: ls_ret_4 = "unknown command"; break; case 4015: ls_ret_4 = "wrong jump (never generated error)"; break; case 4016: ls_ret_4 = "not initialized array"; break; case 4017: ls_ret_4 = "dll calls are not allowed"; break; case 4018: ls_ret_4 = "cannot load library"; break; case 4019: ls_ret_4 = "cannot call function"; break; case 4020: ls_ret_4 = "expert function calls are not allowed"; break; case 4021: ls_ret_4 = "not enough memory for temp string returned from function"; break; case 4022: ls_ret_4 = "system is busy (never generated error)"; break; case 4050: ls_ret_4 = "invalid function parameters count"; break; case 4051: ls_ret_4 = "invalid function parameter value"; break; case 4052: ls_ret_4 = "string function internal error"; break; case 4053: ls_ret_4 = "some array error"; break; case 4054: ls_ret_4 = "incorrect series array using"; break; case 4055: ls_ret_4 = "custom indicator error"; break; case 4056: ls_ret_4 = "arrays are incompatible"; break; case 4057: ls_ret_4 = "global variables processing error"; break; case 4058: ls_ret_4 = "global variable not found"; break; case 4059: ls_ret_4 = "function is not allowed in testing mode"; break; case 4060: ls_ret_4 = "function is not confirmed"; break; case 4061: ls_ret_4 = "send mail error"; break; case 4062: ls_ret_4 = "string parameter expected"; break; case 4063: ls_ret_4 = "integer parameter expected"; break; case 4064: ls_ret_4 = "double parameter expected"; break; case 4065: ls_ret_4 = "array as parameter expected"; break; case 4066: ls_ret_4 = "requested history data in update state"; break; case 4099: ls_ret_4 = "end of file"; break; case 4100: ls_ret_4 = "some file error"; break; case 4101: ls_ret_4 = "wrong file name"; break; case 4102: ls_ret_4 = "too many opened files"; break; case 4103: ls_ret_4 = "cannot open file"; break; case 4104: ls_ret_4 = "incompatible access to a file"; break; case 4105: ls_ret_4 = "no order selected"; break; case 4106: ls_ret_4 = "unknown symbol"; break; case 4107: ls_ret_4 = "invalid price parameter for trade function"; break; case 4108: ls_ret_4 = "invalid ticket"; break; case 4109: ls_ret_4 = "trade is not allowed"; break; case 4110: ls_ret_4 = "longs are not allowed"; break; case 4111: ls_ret_4 = "shorts are not allowed"; break; case 4200: ls_ret_4 = "object is already exist"; break; case 4201: ls_ret_4 = "unknown object property"; break; case 4202: ls_ret_4 = "object is not exist"; break; case 4203: ls_ret_4 = "unknown object type"; break; case 4204: ls_ret_4 = "no object name"; break; case 4205: ls_ret_4 = "object coordinates error"; break; case 4206: ls_ret_4 = "no specified subwindow"; break; default: ls_ret_4 = "unknown error"; } return (ls_ret_4); } int deinit() { return (0); }