#property copyright "NULL" #property link "http://" string gs_76 = "1.9.0"; extern double lots = 0.4; extern double i_slip = 3.0; extern int maxVTTrades = 6; extern int maxSpread = 9; extern bool volAlert = FALSE; extern bool buySellLines = TRUE; extern bool moveNewsText = TRUE; extern bool spikeAlert = TRUE; extern int EURUSDSpike = 20; extern int GBSPUSDSpike = 25; extern int USDCADSpike = 20; extern int USDJPYSpike = 25; extern int YMSpike = 60; extern int QMSpike = 400; extern int DXSpike = 29000; extern int ZGSpike = 80; double gd_156; double gd_164; int g_magic_172 = 1111; int g_cmd_176; int gi_180; int gi_188; int g_datetime_192; int g_datetime_196; int g_period_200 = 14; bool gi_204 = FALSE; int g_window_208; string gs_212; string gs_220; bool gi_228; bool gi_232; string gs_236; string gs_244; bool gi_252; bool gi_256; int gi_260; int gi_264; int gi_268; int gi_272; int g_ivolume_280; int gi_284; int g_ivolume_288; int g_count_316; int g_count_320; int g_count_324; int g_count_328; int gi_332; int gi_336; int g_ticket_340; int g_ticket_344; int g_ticket_348; int g_ticket_352; double g_ord_open_price_356; double g_ord_open_price_364; double g_ord_open_price_372; double g_ord_open_price_380; double g_price_388; double g_price_396; double g_price_404; double g_price_412; double g_price_420; double g_price_428; double gd_436; double gd_444; double gd_452; double gd_460; double gd_468; double gd_476; double g_timeframe_484; bool gi_492; bool gi_496; bool gi_500; bool gi_504; bool gi_508; bool gi_512; bool gi_516; bool gi_520; bool gi_524; bool gi_528; int gi_unused_532 = 0; int g_count_536; double g_icci_540; double gd_580; double gd_588; double gd_596; double gd_604; double gd_612; double gd_620; double gd_628; double gd_636; double gd_644; double gd_652; double gd_660; double gd_668; double gd_676; double g_ticksize_684; int init() { g_ticksize_684 = MarketInfo(Symbol(), MODE_TICKSIZE); if (g_ticksize_684 == 0.00001 || g_ticksize_684 == 0.001) gd_676 = 10.0 * Point; else gd_676 = Point; if ((ObjectFind("hlSellAt") != 0 && buySellLines) || ObjectDescription("tlPrice1") == "") { if (buySellLines) { DrawBuyandSellLevels(); DrawBuyandSellCCI(); DrawTextAreas(); } } DrawMeanEntry(); return (0); } int deinit() { Comment(""); ResetCCILines(); return (0); } void DrawTextAreas() { ObjectCreate("tradeAlert", OBJ_LABEL, 0, 0, 0, 0, 0, 0, 0); ObjectSet("tradeAlert", OBJPROP_CORNER, 2); ObjectSet("tradeAlert", OBJPROP_XDISTANCE, 1); ObjectSet("tradeAlert", OBJPROP_YDISTANCE, 10); ObjectSetText("tradeAlert", ".", 11, "Times New Roman", Black); } void DrawMeanEntry() { ObjectCreate("meanBuy", OBJ_TEXT, 0, Time[20], 0); ObjectSetText("meanBuy", "Mean Buy", 9, "Times New Roman", White); ObjectSet("meanBuy", OBJPROP_BACK, TRUE); ObjectCreate("meanBuyLine", OBJ_HLINE, 0, Time[0], -50); ObjectSet("meanBuyLine", OBJPROP_STYLE, STYLE_DOT); ObjectSet("meanBuyLine", OBJPROP_COLOR, Green); ObjectSet("meanBuyLine", OBJPROP_BACK, TRUE); ObjectCreate("meanSell", OBJ_TEXT, 0, Time[20], 0); ObjectSetText("meanSell", "Mean Sell", 9, "Times New Roman", White); ObjectSet("meanSell", OBJPROP_BACK, TRUE); ObjectCreate("meanSellLine", OBJ_HLINE, 0, Time[0], -50); ObjectSet("meanSellLine", OBJPROP_STYLE, STYLE_DOT); ObjectSet("meanSellLine", OBJPROP_COLOR, Maroon); ObjectSet("meanSellLine", OBJPROP_BACK, TRUE); } void MoveNewsText() { int li_0; if (ObjectFind("news1") > -1) { li_0 = ObjectGet("news1", OBJPROP_PRICE1); ObjectMove("news1", 0, Time[70], li_0); } if (ObjectFind("news2") > -1) { li_0 = ObjectGet("news2", OBJPROP_PRICE1); ObjectMove("news2", 0, Time[70], li_0); } if (ObjectFind("news3") > -1) { li_0 = ObjectGet("news3", OBJPROP_PRICE1); ObjectMove("news3", 0, Time[70], li_0); } } void MoveMeanEntry() { double l_ord_open_price_0; double l_ord_open_price_8; double ld_16; double ld_24; double ld_32; double ld_40; double l_ord_lots_48; double l_ord_lots_56; double ld_64; double ld_72; bool li_80 = FALSE; bool li_84 = FALSE; for (int l_pos_88 = 0; l_pos_88 < OrdersTotal(); l_pos_88++) { OrderSelect(l_pos_88, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol()) { if (OrderType() <= OP_SELL) { if (OrderType() == OP_BUY) { li_80 = TRUE; l_ord_open_price_0 = OrderOpenPrice(); l_ord_lots_48 = OrderLots(); ld_64 += l_ord_lots_48; ld_16 += l_ord_open_price_0 * l_ord_lots_48; } else { if (OrderType() == OP_SELL) { li_84 = TRUE; l_ord_open_price_8 = OrderOpenPrice(); l_ord_lots_56 = OrderLots(); ld_72 += l_ord_lots_56; ld_24 += l_ord_open_price_8 * l_ord_lots_56; } } } } } if (gd_452 == 0.0) { ld_16 += lots * g_price_420; ld_64 += lots; } if (gd_460 == 0.0) { ld_24 += lots * g_price_428; ld_72 += lots; } if (li_80) ld_32 = ld_16 / ld_64; if (li_84) ld_40 = ld_24 / ld_72; if (li_80 == FALSE) ld_32 = 0; if (li_84 == FALSE) ld_40 = 0; ObjectMove("meanSellLine", 0, Time[70], ld_40); ObjectMove("meanSell", 0, Time[50], ld_40); ObjectMove("meanBuyLine", 0, Time[50], ld_32); ObjectMove("meanBuy", 0, Time[70], ld_32); } void DoCloseOrder(int a_ticket_0, double a_lots_4) { int l_ord_close_16; int l_count_12 = 0; a_lots_4 = NormalizeDouble(a_lots_4, 1); OrderSelect(a_ticket_0, SELECT_BY_TICKET); if (TimeCurrent() - g_datetime_196 < 60) { Alert("Close Order not executed. Possible server error: Less then 1 Min has passed since last Visual Trader close. f close the order manually."); return; } while (l_count_12 < 4) { if (OrderType() == OP_SELL) l_ord_close_16 = OrderClose(a_ticket_0, a_lots_4, Ask, i_slip); if (OrderType() == OP_BUY) l_ord_close_16 = OrderClose(a_ticket_0, a_lots_4, Bid, i_slip); if (l_ord_close_16 == 1) l_count_12 = 4; else { l_count_12++; Alert("Acct:" + AccountNumber() + Symbol() + " VT Close Error AccuMaroon: " + ErrorDescription(GetLastError())); } if (l_ord_close_16 == 0 && l_count_12 == 1) SendMail(Symbol(), Bid + " Acct:" + AccountNumber() + " VT Close Error: " + ErrorDescription(GetLastError())); } if (l_ord_close_16 == 1) { g_datetime_196 = TimeCurrent(); Print(a_ticket_0, " ", Symbol() + " Profit: " + OrderProfit()); Alert(a_ticket_0, " ", Symbol() + " Profit: " + OrderProfit()); SendMail(Symbol(), "Acct:" + AccountNumber() + " Profit:" + OrderProfit()); } } void OpenBuyOrder() { int l_ticket_0; int l_count_8; if (gi_204 == 0) { if (TimeCurrent() - g_datetime_192 < 300) { Alert(Symbol(), " Buy Order not executed. Possible server error: Less then 5 Min has passed since last Visual Trader order. Please enter order manually."); SendMail(Symbol(), "Buy Order not executed. Possible server error: Less then 5 Min has passed since last Visual Trader order. Please enter order manually."); gi_204 = TRUE; } else { if (gd_164 > maxSpread) { Alert("Buy Order not executed. Spread too high.", gd_164); SendMail(Symbol(), "Acct:" + AccountNumber() + " Spread too high."); gi_188++; } else { l_count_8 = 0; while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_BUY, lots, Ask, i_slip, 0, 0, "VT Order", g_magic_172, 0, Maroon); if (l_ticket_0 <= 0) { Alert("Acct:" + AccountNumber() + "VT Error Buy Order:" + ErrorDescription(GetLastError())); SendMail(Symbol(), "Acct:" + AccountNumber() + "VT Error Buy Order:" + Bid + ErrorDescription(GetLastError())); l_count_8++; } else { SendMail(Symbol(), "Acct:" + AccountNumber() + " VT Buy Order @ " + Bid + " " + Ask); Print(Symbol(), "Acct:" + AccountNumber() + "VT Buy Order @ " + Bid + " " + Ask); l_count_8 = 3; g_datetime_192 = TimeCurrent(); gi_188++; } } } } } } void OpenSellOrder() { int l_ticket_0; int l_count_8; if (gi_204 == 0) { if (TimeCurrent() - g_datetime_192 < 300) { Alert(Symbol(), " Sell Order not executed. Possible server error: Less then 5 Min has passed since last Visual Trader order. Please enter order manually."); SendMail(Symbol(), "Sell Order not executed. Possible server error: Less then 5 Min has passed since last Visual Trader order. Please enter order manually."); gi_204 = TRUE; } else { if (gd_164 > maxSpread) { Alert("Sell Order not executed. Spread too high."); SendMail(Symbol(), "Acct:" + AccountNumber() + " Spread too high."); gi_188++; } else { l_count_8 = 0; while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_SELL, lots, Bid, i_slip, 0, 0, "VT Order", g_magic_172, 0, Maroon); if (l_ticket_0 <= 0) { Alert("Acct:" + AccountNumber() + "VT Error Sell Order:" + ErrorDescription(GetLastError())); SendMail(Symbol(), "Acct:" + AccountNumber() + "VT Error Sell Order:" + Bid + ErrorDescription(GetLastError())); l_count_8++; } else { SendMail(Symbol(), "Acct:" + AccountNumber() + " VT Sell Order @ " + Bid + " " + Ask); Print(Symbol(), "Acct:" + AccountNumber() + "VT Sell Order @ " + Bid + " " + Ask); l_count_8 = 3; g_datetime_192 = TimeCurrent(); gi_188++; } } } } } } void MoveBuyStop() { OrderModify(g_ticket_340, g_price_420, 0, 0, 0, CLR_NONE); } void MoveBuyLimit() { OrderModify(g_ticket_348, g_price_420, 0, 0, 0, CLR_NONE); } void MoveSellStop() { OrderModify(g_ticket_344, g_price_428, 0, 0, 0, CLR_NONE); } void MoveSellLimit() { OrderModify(g_ticket_352, g_price_428, 0, 0, 0, CLR_NONE); } void OpenBuyStop() { int l_ticket_0; int l_count_8 = 0; if (g_count_328 <= 0) { while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_BUYSTOP, lots, g_price_420, 1, 0, 0, "VT Order", g_magic_172, 0, CLR_NONE); Print("in function OpenBuyStop OrderSend Executed , ticket =" + l_ticket_0); if (l_ticket_0 <= 0) { Print("Error AccuMaroon : " + ErrorDescription(GetLastError()) + " BuyStop @ " + g_price_420 + " SL @ " + 0 + " TP @" + 0); l_count_8++; } else l_count_8 = 3; } } } void OpenSellStop() { int l_ticket_0; int l_count_8 = 0; if (g_count_324 <= 0) { while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_SELLSTOP, lots, g_price_428, 1, 0, 0, "VT Order", g_magic_172, 0, CLR_NONE); Print("in function OpenSellStop OrderSend Executed , ticket =" + l_ticket_0); if (l_ticket_0 <= 0) { Print("Error AccuMaroon : " + ErrorDescription(GetLastError()) + " SellStop @ " + g_price_428 + " SL @ " + 0 + " TP @" + 0); l_count_8++; } else l_count_8 = 3; } } } void OpenBuyLimit() { int l_ticket_0; int l_count_8 = 0; if (gi_332 <= 0) { while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_BUYLIMIT, lots, g_price_420, 1, 0, 0, "VT Order", g_magic_172, 0, CLR_NONE); Print("in function OpenBuyLimit OrderSend Executed , ticket =" + l_ticket_0); if (l_ticket_0 <= 0) { Print("Error AccuMaroon : " + ErrorDescription(GetLastError()) + " BuyStop @ " + g_price_420 + " SL @ " + 0 + " TP @" + 0); l_count_8++; } else l_count_8 = 3; } } } void OpenSellLimit() { int l_ticket_0; int l_count_8 = 0; if (g_count_324 <= 0) { while (l_count_8 < 3) { l_ticket_0 = OrderSend(Symbol(), OP_SELLLIMIT, lots, g_price_428, 1, 0, 0, "VT Order", g_magic_172, 0, CLR_NONE); Print("in function OpenSellLimit OrderSend Executed , ticket =" + l_ticket_0); if (l_ticket_0 <= 0) { Print("Error AccuMaroon : " + ErrorDescription(GetLastError()) + " BuyStop @ " + g_price_428 + " SL @ " + 0 + " TP @" + 0); l_count_8++; } else l_count_8 = 3; } } } void DeleteBuyStop() { for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_172 && OrderType() == OP_BUYSTOP) { OrderDelete(OrderTicket()); Print("in function DeleteBuyStopOrderDelete Executed"); } } } void DeleteSellStop() { Print("in function DeleteSellStopOrderDelete "); for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); Print("in function DeleteSellStopOrderDelete 2"); if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_172 && OrderType() == OP_SELLSTOP) { OrderDelete(OrderTicket()); Print("in function DeleteSellStopOrderDelete Executed"); } } } void DeleteBuyLimit() { for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_172 && OrderType() == OP_BUYLIMIT) { OrderDelete(OrderTicket()); Print("in function DeleteBuyLimitOrderDelete Executed"); } } } void DeleteSellLimit() { for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { OrderSelect(l_pos_0, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_172 && OrderType() == OP_SELLLIMIT) { OrderDelete(OrderTicket()); Print("in function DeleteSellLimitOrderDelete Executed"); } } } void DrawBuyandSellCCI() { if (WindowsTotal() == 3) g_window_208 = 2; if (WindowsTotal() == 2) g_window_208 = 1; if (WindowsTotal() == 1) g_window_208 = 0; if (ObjectFind("cciSellLine") != g_window_208) { ObjectCreate("cciSellLine", OBJ_HLINE, g_window_208, Time[0], -50); ObjectSet("cciSellLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciSellLine", OBJPROP_COLOR, Maroon); } if (ObjectFind("cciBuyLine") != g_window_208) { ObjectCreate("cciBuyLine", OBJ_HLINE, g_window_208, Time[0], 50); ObjectSet("cciBuyLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciBuyLine", OBJPROP_COLOR, Green); } if (ObjectFind("cciCloseLine") != g_window_208) { ObjectCreate("cciCloseLine", OBJ_HLINE, g_window_208, Time[40], 100); ObjectSet("cciCloseLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciCloseLine", OBJPROP_COLOR, Olive); ObjectCreate("cciCloseText", OBJ_TEXT, g_window_208, Time[0], 140); ObjectSet("cciCloseText", OBJPROP_COLOR, Olive); ObjectSetText("cciCloseText", "null", 10, "Arial", Olive); } if (ObjectFind("cciCloseLine2") != g_window_208) { ObjectCreate("cciCloseLine2", OBJ_HLINE, g_window_208, Time[40], -100); ObjectSet("cciCloseLine2", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciCloseLine2", OBJPROP_COLOR, Olive); ObjectCreate("cciCloseText2", OBJ_TEXT, g_window_208, Time[0], -100); ObjectSet("cciCloseText2", OBJPROP_COLOR, Olive); ObjectSetText("cciCloseText2", "null", 10, "Arial", Olive); } if (ObjectFind("tSellCci") != 0) { ObjectCreate("tSellCci", OBJ_TEXT, g_window_208, Time[0], -50); ObjectSetText("tSellCci", " Sell", 10, "Arial", Maroon); } if (ObjectFind("tBuyCci") != 0) { ObjectCreate("tBuyCci", OBJ_TEXT, g_window_208, Time[0], 50); ObjectSetText("tBuyCci", " Buy", 10, "Arial", Green); } } void ResetCCILines() { gd_628 = ObjectGet("cciCloseLine", OBJPROP_STYLE); gd_636 = ObjectGet("cciCloseLine2", OBJPROP_STYLE); ObjectSet("cciBuyLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciSellLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); if (gd_628 != 3.0) ObjectSet("cciCloseLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); if (gd_636 != 3.0) ObjectSet("cciCloseLine2", OBJPROP_STYLE, STYLE_DASHDOTDOT); } void DrawBuyandSellLevels() { gd_156 = Ask - Bid; g_price_388 = NormalizeDouble(Ask - 100.0 * gd_676, Digits); g_price_396 = NormalizeDouble(Ask + 100.0 * gd_676, Digits); g_price_404 = NormalizeDouble(Ask + 150.0 * gd_676, Digits); g_price_412 = NormalizeDouble(Ask - 150.0 * gd_676, Digits); if (ObjectDescription("tlPrice1") == "") { ObjectDelete("hlSellAt"); ObjectDelete("hlBuyAt"); ObjectDelete("hlCloseAt"); ObjectDelete("hlCloseAt2"); ObjectDelete("tlPrice1"); ObjectDelete("tlPrice2"); ObjectDelete("tBuyLabel"); ObjectDelete("tSellLabel"); ObjectDelete("tCloseAt"); ObjectDelete("tCloseAt2"); } if (ObjectFind("hlSellAt") != 0) { ObjectCreate("hlSellAt", OBJ_HLINE, 0, Time[0], g_price_388); ObjectSet("hlSellAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("hlSellAt", OBJPROP_COLOR, Maroon); ObjectSet("hlSellAt", OBJPROP_BACK, TRUE); } if (ObjectFind("hlBuyAt") != 0) { ObjectCreate("hlBuyAt", OBJ_HLINE, 0, Time[0], g_price_388); ObjectSet("hlBuyAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("hlBuyAt", OBJPROP_COLOR, Green); ObjectSet("hlBuyAt", OBJPROP_BACK, TRUE); } if (ObjectFind("hlCloseAt") != 0) { ObjectCreate("hlCloseAt", OBJ_HLINE, 0, Time[0], g_price_404); ObjectSet("hlCloseAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("hlCloseAt", OBJPROP_COLOR, Olive); ObjectSet("hlCloseAt", OBJPROP_BACK, TRUE); ObjectSetText("hlCloseAt", "OnBarClose=false"); } if (ObjectFind("hlCloseAt2") != 0) { ObjectCreate("hlCloseAt2", OBJ_HLINE, 0, Time[0], g_price_412); ObjectSet("hlCloseAt2", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("hlCloseAt2", OBJPROP_COLOR, Olive); ObjectSet("hlCloseAt2", OBJPROP_BACK, TRUE); ObjectSetText("hlCloseAt2", "OnBarClose=false"); } if (ObjectFind("tlPrice1") != 0) { ObjectCreate("tlPrice1", OBJ_TREND, 0, Time[25], g_price_404 + 20.0 * gd_676); ObjectSet("tlPrice1", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("tlPrice1", OBJPROP_COLOR, Olive); ObjectSet("tlPrice1", OBJPROP_TIME1, Time[50]); ObjectSet("tlPrice1", OBJPROP_TIME2, Time[0]); ObjectSet("tlPrice1", OBJPROP_PRICE1, g_price_404 + 20.0 * gd_676); ObjectSet("tlPrice1", OBJPROP_PRICE2, g_price_404); ObjectSet("tlPrice1", OBJPROP_BACK, TRUE); ObjectSetText("tlPrice1", "OnBarClose=false"); } if (ObjectFind("tlPrice2") != 0) { ObjectCreate("tlPrice2", OBJ_TREND, 0, Time[25], g_price_412 - 20.0 * gd_676); ObjectSet("tlPrice2", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("tlPrice2", OBJPROP_COLOR, Olive); ObjectSet("tlPrice2", OBJPROP_TIME1, Time[50]); ObjectSet("tlPrice2", OBJPROP_TIME2, Time[0]); ObjectSet("tlPrice2", OBJPROP_PRICE1, g_price_412 - 20.0 * gd_676); ObjectSet("tlPrice2", OBJPROP_PRICE2, g_price_412); ObjectSet("tlPrice2", OBJPROP_BACK, TRUE); ObjectSetText("tlPrice2", "OnBarClose=false"); } ObjectCreate("tSellLabel", OBJ_TEXT, 0, Time[0], g_price_388); ObjectSetText("tSellLabel", " S", 8, "Arial", Maroon); ObjectCreate("tBuyLabel", OBJ_TEXT, 0, Time[0], g_price_396); ObjectSetText("tBuyLabel", " B", 8, "Arial", Green); ObjectCreate("tCloseAt", OBJ_TEXT, 0, Time[0], g_price_404); ObjectSetText("tCloseAt", "--", 8, "Arial", Olive); ObjectCreate("tCloseAt2", OBJ_TEXT, 0, Time[0], g_price_412); ObjectSetText("tCloseAt2", "--", 8, "Arial", Olive); } int CheckOrdersCondition() { int l_count_0 = 0; g_count_316 = 0; g_count_320 = 0; g_count_324 = 0; g_count_328 = 0; g_count_536 = 0; for (int l_pos_4 = 0; l_pos_4 < OrdersTotal(); l_pos_4++) { OrderSelect(l_pos_4, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_172) { g_count_536++; if (OrderType() == OP_BUY) { l_count_0 += 1000; g_count_320++; } if (OrderType() == OP_SELL) { l_count_0 += 100; g_count_316++; } if (OrderType() == OP_BUYSTOP) { l_count_0 += 10; g_count_328++; g_ord_open_price_356 = OrderOpenPrice(); g_ticket_340 = OrderTicket(); } if (OrderType() == OP_SELLSTOP) { l_count_0++; g_count_324++; g_ord_open_price_364 = OrderOpenPrice(); g_ticket_344 = OrderTicket(); } if (OrderType() == OP_BUYLIMIT) { l_count_0 += 10; gi_332++; g_ord_open_price_372 = OrderOpenPrice(); g_ticket_348 = OrderTicket(); } if (OrderType() == OP_SELLLIMIT) { l_count_0++; gi_336++; g_ord_open_price_380 = OrderOpenPrice(); g_ticket_352 = OrderTicket(); } } } return (l_count_0); } int avgDailyVolume() { double lda_0[60]; for (int li_4 = 0; li_4 <= 60; li_4++) lda_0[li_4] = iVolume(Symbol(), PERIOD_D1, li_4); return (iMAOnArray(lda_0, 0, 60, 0, MODE_SMA, 0)); } int securityCheck() { string ls_0 = "2009.11.02"; int l_str2time_8 = StrToTime(ls_0); if (TimeCurrent() >= l_str2time_8) { Alert("The trial version has been expiMaroon!"); ObjectsDeleteAll(); return (0); } return (1); } void checkVolume() { if (iBars(Symbol(), PERIOD_D1) < 60) { ObjectSetText("tradeAlert", "NOT ENOUGH CHART HISTORY TO DETERMINE REVERSAL VOLUME", 10, "Times New Roman", Maroon); return; } g_ivolume_280 = iVolume(Symbol(), PERIOD_D1, 0); g_ivolume_288 = iVolume(Symbol(), PERIOD_D1, 1); gi_284 = avgDailyVolume(); if (g_ivolume_280 > gi_284 * 2) { ObjectSetText("tradeAlert", "VOLUME:" + iVolume(Symbol(), PERIOD_D1, 0), 12, "Times New Roman", Blue); if (gi_272 < 1 && volAlert) { SendMail("Vol " + g_ivolume_280 + " is 2x the average " + gi_284 + " for ", Symbol() + " " + Bid); Alert("Vol " + g_ivolume_280 + " is 2x the average " + gi_284 + " for ", Symbol() + " " + Bid); gi_272 = 1; } if (g_ivolume_280 > 3 * gi_284) { ObjectSetText("tradeAlert", "REVERSAL VOLUME:" + iVolume(Symbol(), PERIOD_D1, 0), 12, "Times New Roman", Maroon); if (gi_272 < 2 && volAlert) { SendMail("Vol " + g_ivolume_280 + " is 3x the average " + gi_284 + " for ", Symbol() + " " + Bid); Alert("Vol " + g_ivolume_280 + " is 3x the average " + gi_284 + " for ", Symbol() + " " + Bid); gi_272 = 2; } } } if (gi_284 > 2 * g_ivolume_288) { ObjectSetText("tradeAlert", "REVERSAL VOLUME:" + iVolume(Symbol(), PERIOD_D1, 0), 12, "Times New Roman", Maroon); if (gi_272 < 3 && volAlert) { SendMail("Vol " + g_ivolume_280 + " is 3x the average " + gi_284 + " for ", Symbol() + " " + Bid); Alert("Vol " + g_ivolume_280 + " is 3x the average " + gi_284 + " for ", Symbol() + " " + Bid); gi_272 = 3; } } } void sendCloseAlert(int ai_0) { Alert("Price Alarm:" + ai_0 + " " + Symbol() + " " + Bid); SendMail("Price Alarm:" + ai_0 + " ", Symbol() + " " + Bid); if (ai_0 == 1) { ObjectSet("hlCloseAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("hlCloseAt", "OnBarClose=false"); } if (ai_0 == 2) { ObjectSet("hlCloseAt2", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("hlCloseAt2", "OnBarClose=false"); } if (ai_0 == 3) { ObjectSet("tlPrice1", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("tlPrice1", "OnBarClose=false"); } if (ai_0 == 4) { ObjectSet("tlPrice2", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("tlPrice2", "OnBarClose=false"); } } int start() { if (securityCheck() == 0) return (0); if ((ObjectFind("hlSellAt") != 0 && buySellLines) || ObjectDescription("tlPrice1") == "") { DrawBuyandSellLevels(); DrawBuyandSellCCI(); } gd_164 = Ask - Bid; gd_164 /= gd_676; if (moveNewsText) MoveNewsText(); if (gi_188 > maxVTTrades) return (ObjectSetText("tradeAlert", "MAX VT TRADES HIT", 12, "Times New Roman", Maroon)); ObjectSetText("tradeAlert", "", 12, "Times New Roman", Maroon); if (volAlert) checkVolume(); MoveMeanEntry(); gi_180 = CheckOrdersCondition(); g_icci_540 = iCCI(NULL, 0, g_period_200, PRICE_TYPICAL, 0); if (Period() == PERIOD_M1) { gi_260 = 3; gi_264 = 18; gi_268 = 22; } else { if (Period() > PERIOD_M1 && Period() <= PERIOD_H1) { gi_260 = 2; gi_264 = 9; gi_268 = 10; } else { if (Period() > PERIOD_H1) { gi_260 = 3; gi_264 = 3; gi_268 = 5; } } } g_price_420 = NormalizeDouble(ObjectGet("hlBuyAt", OBJPROP_PRICE1), Digits); g_price_428 = NormalizeDouble(ObjectGet("hlSellAt", OBJPROP_PRICE1), Digits); gd_436 = ObjectGet("hlCloseAt", OBJPROP_PRICE1); gd_444 = ObjectGet("hlCloseAt2", OBJPROP_PRICE1); gd_580 = ObjectGet("cciBuyLine", OBJPROP_PRICE1); gd_588 = ObjectGet("cciSellLine", OBJPROP_PRICE1); gd_596 = ObjectGet("cciCloseLine", OBJPROP_PRICE1); gd_604 = ObjectGet("cciCloseLine2", OBJPROP_PRICE1); gd_644 = ObjectGetValueByShift("tlPrice1", 0); gd_652 = ObjectGetValueByShift("tlPrice2", 0); gd_452 = ObjectGet("hlBuyAt", OBJPROP_STYLE); gd_460 = ObjectGet("hlSellAt", OBJPROP_STYLE); gd_468 = ObjectGet("hlCloseAt", OBJPROP_STYLE); gd_476 = ObjectGet("hlCloseAt2", OBJPROP_STYLE); gd_612 = ObjectGet("cciBuyLine", OBJPROP_STYLE); gd_620 = ObjectGet("cciSellLine", OBJPROP_STYLE); gd_628 = ObjectGet("cciCloseLine", OBJPROP_STYLE); gd_636 = ObjectGet("cciCloseLine2", OBJPROP_STYLE); gd_660 = ObjectGet("tlPrice1", OBJPROP_STYLE); gd_668 = ObjectGet("tlPrice2", OBJPROP_STYLE); ObjectMove("tBuyLabel", 0, Time[0] + 500 * Period(), g_price_420); ObjectMove("tSellLabel", 0, Time[0] + 500 * Period(), g_price_428); ObjectMove("tBuyCci", 0, Time[0] + 500 * Period(), gd_580); ObjectMove("tSellCci", 0, Time[0] + 500 * Period(), gd_588); ObjectMove("tCloseAt", 0, Time[0] + 500 * Period(), gd_436); ObjectMove("tCloseAt2", 0, Time[0] + 500 * Period(), gd_444); ObjectMove("cciCloseText", 0, Time[0] + 500 * Period(), gd_596); ObjectMove("cciCloseText2", 0, Time[0] + 500 * Period(), gd_604); g_timeframe_484 = Period(); if (g_timeframe_484 <= 60.0) g_timeframe_484 = 60; if (gd_452 == 4.0) ObjectMove("hlBuyAt", 0, Time[0], Bid + gd_676 * g_timeframe_484); if (gd_460 == 4.0) ObjectMove("hlSellAt", 0, Time[0], Bid - gd_676 * g_timeframe_484); if (gd_468 == 4.0) ObjectMove("hlCloseAt", 0, Time[0], Bid + gd_676 * (g_timeframe_484 + g_timeframe_484 / 3.0)); if (gd_476 == 4.0) ObjectMove("hlCloseAt2", 0, Time[0], Bid - gd_676 * (g_timeframe_484 + g_timeframe_484 / 3.0)); if (gd_660 == 4.0) { ObjectSet("tlPrice1", OBJPROP_PRICE2, Bid + gd_676 * (g_timeframe_484 + g_timeframe_484 / 2.0)); ObjectSet("tlPrice1", OBJPROP_PRICE1, Bid + gd_676 * (g_timeframe_484 + g_timeframe_484 / 2.0)); ObjectSet("tlPrice1", OBJPROP_TIME1, Time[50]); ObjectSet("tlPrice1", OBJPROP_TIME2, Time[0]); } if (gd_668 == 4.0) { ObjectSet("tlPrice2", OBJPROP_PRICE2, Bid - gd_676 * (g_timeframe_484 + g_timeframe_484 / 2.0)); ObjectSet("tlPrice2", OBJPROP_PRICE1, Bid - gd_676 * (g_timeframe_484 + g_timeframe_484 / 2.0)); ObjectSet("tlPrice2", OBJPROP_TIME1, Time[50]); ObjectSet("tlPrice2", OBJPROP_TIME2, Time[0]); } gs_212 = ObjectDescription("hlCloseAt"); gs_220 = ObjectDescription("hlCloseAt2"); if (StringFind(gs_212, "true", 0) > 0) gi_228 = TRUE; else gi_228 = FALSE; if (StringFind(gs_220, "true", 0) > 0) gi_232 = TRUE; else gi_232 = FALSE; gs_236 = ObjectDescription("tlPrice1"); gs_244 = ObjectDescription("tlPrice2"); if (StringFind(gs_236, "true", 0) > 0) gi_252 = TRUE; else gi_252 = FALSE; if (StringFind(gs_244, "true", 0) > 0) gi_256 = TRUE; else gi_256 = FALSE; if (gd_468 == 0.0) ObjectSetText("tCloseAt", "All", 8, "Arial", Olive); else { if (gd_468 == 1.0) ObjectSetText("tCloseAt", "Half", 8, "Arial", Olive); else { if (gd_468 == 3.0 && gi_228 == FALSE) ObjectSetText("tCloseAt", "A", 8, "Arial", Olive); else { if (gd_468 == 3.0 && gi_228 == TRUE) ObjectSetText("tCloseAt", "OC A", 8, "Arial", Olive); else ObjectSetText("tCloseAt", "--", 8, "Arial", Olive); } } } if (gd_476 == 0.0) ObjectSetText("tCloseAt2", "All", 8, "Arial", Olive); else { if (gd_476 == 1.0) ObjectSetText("tCloseAt2", "Half", 8, "Arial", Olive); else { if (gd_476 == 3.0 && gi_232 == FALSE) ObjectSetText("tCloseAt2", "A", 8, "Arial", Olive); else { if (gd_476 == 3.0 && gi_232 == TRUE) ObjectSetText("tCloseAt2", "OC A", 8, "Arial", Olive); else ObjectSetText("tCloseAt2", "--", 8, "Arial", Olive); } } } if (gd_628 == 0.0) ObjectSetText("cciCloseText", "All", 8, "Arial", Olive); else { if (gd_628 == 1.0) ObjectSetText("cciCloseText", "Half", 8, "Arial", Olive); else { if (gd_628 == 3.0) ObjectSetText("cciCloseText", "Alarm", 8, "Arial", Olive); else ObjectSetText("cciCloseText", "--", 8, "Arial", Olive); } } if (gd_636 == 0.0) ObjectSetText("cciCloseText2", "All", 8, "Arial", Olive); else { if (gd_636 == 1.0) ObjectSetText("cciCloseText2", "Half", 8, "Arial", Olive); else { if (gd_636 == 3.0) ObjectSetText("cciCloseText2", "Alarm", 8, "Arial", Olive); else ObjectSetText("cciCloseText2", "--", 8, "Arial", Olive); } } if (MathAbs(g_price_420 - Bid) < gd_676 * gi_260) gi_520 = TRUE; else gi_520 = FALSE; if (MathAbs(g_price_428 - Bid) < gd_676 * gi_260) gi_516 = TRUE; else gi_516 = FALSE; if (MathAbs(gd_436 - Bid) < gd_676 * gi_260) gi_492 = TRUE; else gi_492 = FALSE; if (MathAbs(gd_444 - Bid) < gd_676 * gi_260) gi_500 = TRUE; else gi_500 = FALSE; if (MathAbs(gd_644 - Bid) < gd_676 * gi_260) gi_524 = TRUE; else gi_524 = FALSE; if (MathAbs(gd_652 - Bid) < gd_676 * gi_260) gi_528 = TRUE; else gi_528 = FALSE; if (ObjectFind("cciCloseLine") != -1) { if (MathAbs(gd_596 - g_icci_540) < gi_268) gi_496 = TRUE; else gi_496 = FALSE; if (MathAbs(gd_604 - g_icci_540) < gi_268) gi_504 = TRUE; else gi_504 = FALSE; if (MathAbs(gd_588 - g_icci_540) < gi_264) gi_508 = TRUE; else gi_508 = FALSE; if (MathAbs(gd_580 - g_icci_540) < gi_264) gi_512 = TRUE; else gi_512 = FALSE; } if (gd_460 == 4.0 && g_count_324 > 0) { DeleteSellStop(); DeleteSellLimit(); ObjectSet("hlSellAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciSellLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (gd_452 == 4.0 && g_count_328 > 0) { DeleteBuyStop(); DeleteBuyLimit(); ObjectSet("hlBuyAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciBuyLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (gd_452 == 1.0) { if (Bid < g_price_420 && g_count_328 == 0) { OpenBuyStop(); ObjectSetText("tBuyLabel", " BS", 8, "Arial", Green); } if (Bid < g_price_420 && g_count_328 > 0 && g_price_420 != g_ord_open_price_356) MoveBuyStop(); if (Bid > g_price_420 && gi_332 == 0) { OpenBuyLimit(); ObjectSetText("tBuyLabel", " BL", 8, "Arial", Green); } if (Bid > g_price_420 && gi_332 > 0 && g_price_420 != g_ord_open_price_372) MoveBuyLimit(); if (gi_520) { ObjectSet("hlBuyAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("tBuyLabel", " --", 8, "Arial", Green); } } if (gd_460 == 1.0) { if (Bid < g_price_428 && gi_336 == 0) { OpenSellLimit(); ObjectSetText("tSellLabel", " SL", 8, "Arial", Maroon); } if (Bid < g_price_428 && gi_336 > 0 && g_price_428 != g_ord_open_price_364) MoveSellLimit(); if (Bid > g_price_428 && g_count_324 == 0) { OpenSellStop(); ObjectSetText("tSellLabel", " SS", 8, "Arial", Maroon); } if (Bid > g_price_428 && g_count_324 > 0 && g_price_428 != g_ord_open_price_364) MoveSellStop(); if (gi_516) { ObjectSet("hlSellAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSetText("tSellLabel", " --", 8, "Arial", Maroon); } } else { if (gi_520 && gd_452 == 0.0) { ObjectSet("hlBuyAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciBuyLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); OpenBuyOrder(); } if (gi_516 && gd_460 == 0.0) { ObjectSet("hlSellAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciSellLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); OpenSellOrder(); } } if (ObjectFind("cciSellLine") != -1 && ObjectFind("cciBuyLine") != -1) { if (gi_512 && gd_612 == 0.0) { OpenBuyOrder(); ObjectSet("hlBuyAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciBuyLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); Print("CCI Buy Order"); } if (gi_508 && gd_620 == 0.0) { OpenSellOrder(); ObjectSet("hlSellAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); ObjectSet("cciSellLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); Print("CCI Sell Order"); } } if (gd_468 == 3.0 && gi_492 && gi_228 == FALSE) sendCloseAlert(1); if (gd_476 == 3.0 && gi_500 && gi_232 == FALSE) sendCloseAlert(2); if (gd_468 == 3.0 && gi_228 == TRUE && iOpen(Symbol(), 0, 0) > gd_436) sendCloseAlert(1); if (gd_476 == 3.0 && gi_232 == TRUE && iOpen(Symbol(), 0, 0) < gd_444) sendCloseAlert(2); if (gd_660 == 3.0 && gi_524 && gi_252 == FALSE) sendCloseAlert(3); if (gd_668 == 3.0 && gi_528 && gi_256 == FALSE) sendCloseAlert(4); if (gd_660 == 3.0 && gi_252 == TRUE && iOpen(Symbol(), 0, 0) > gd_644) sendCloseAlert(3); if (gd_668 == 3.0 && gi_256 == TRUE && iOpen(Symbol(), 0, 0) < gd_652) sendCloseAlert(4); if (gi_504 && gd_636 == 3.0) { Alert("CCI Alarm:" + Symbol() + " " + g_icci_540); SendMail("CCI Alarm:", Symbol() + " " + g_icci_540); ObjectSet("cciCloseLine2", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (gi_496 && gd_628 == 3.0) { Alert("CCI Alarm:" + Symbol() + " " + g_icci_540); SendMail("CCI Alarm:", Symbol() + " " + g_icci_540); ObjectSet("cciCloseLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); } for (int l_ord_total_0 = OrdersTotal(); l_ord_total_0 >= 0; l_ord_total_0--) { OrderSelect(l_ord_total_0, SELECT_BY_POS, MODE_TRADES); g_cmd_176 = OrderType(); if (OrderSymbol() == Symbol()) { if (g_cmd_176 <= OP_SELL) { if (gi_500) { if (gd_476 == 0.0) DoCloseOrder(OrderTicket(), OrderLots()); else if (gd_476 == 1.0) DoCloseOrder(OrderTicket(), OrderLots() / 2.0); ObjectSet("hlCloseAt2", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (gi_492) { if (gd_468 == 0.0) DoCloseOrder(OrderTicket(), OrderLots()); else if (gd_468 == 1.0) DoCloseOrder(OrderTicket(), OrderLots() / 2.0); ObjectSet("hlCloseAt", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (gi_496) { if (gd_628 == 0.0) DoCloseOrder(OrderTicket(), OrderLots()); else if (gd_628 == 1.0) DoCloseOrder(OrderTicket(), OrderLots() / 2.0); ObjectSet("cciCloseLine", OBJPROP_STYLE, STYLE_DASHDOTDOT); } if (!(gi_504)) break; if (gd_636 == 0.0) DoCloseOrder(OrderTicket(), OrderLots()); else if (gd_636 == 1.0) DoCloseOrder(OrderTicket(), OrderLots() / 2.0); ObjectSet("cciCloseLine2", OBJPROP_STYLE, STYLE_DASHDOTDOT); break; } } } Comment("Ver:" + gs_76 + " Order Condition: " + gi_180 + " Orders:" + g_count_536, "\n", "Chart Min:" + TimeMinute(iTime(Symbol(), PERIOD_M1, 0)) + " VTTrades:" + gi_188 + " Orders:" + OrdersTotal()); return (0); } string ErrorDescription(int ai_0) { string ls_ret_4; switch (ai_0) { case 0: case 1: ls_ret_4 = "error x"; 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 = "error x"; 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); }