#property copyright "Copyright © 2008 SOV TRADER" #property link "" extern int AngleCheck = 18; extern int TakeProfit = 10; extern int StopLoss = 30; extern int MinProfitValue = 1; extern bool ExtrimProfit = FALSE; extern double Lots = 0.1; extern bool UseMM = FALSE; extern int DepoPercent = 10; int g_magic_112; int g_pos_116; int g_error_120; int g_spread_124; int gi_128; int g_leverage_132; int g_hour_136; int gi_140; int gi_144; bool gi_148 = FALSE; bool gi_152 = FALSE; bool gi_156 = FALSE; double g_high_160; double g_low_168; double gd_176; double gd_184; double gd_192; double g_lots_200; int g_datetime_208; string g_comment_212 = "insomnia1"; string gs_dummy_220; string gs_dummy_228; string g_text_236; string gs_244; int gia_252[300]; string gsa_256[4207]; int init() { g_leverage_132 = AccountLeverage(); InitErrorArray(); g_spread_124 = MarketInfo(Symbol(), MODE_SPREAD); gd_176 = NormalizeDouble(MarketInfo(Symbol(), MODE_LOTSTEP), 2); gd_184 = NormalizeDouble(MarketInfo(Symbol(), MODE_MINLOT), 2); gd_192 = NormalizeDouble(MarketInfo(Symbol(), MODE_MAXLOT), 2); if (gd_176 == 0.01) gi_128 = 2; else gi_128 = 1; ObjectCreate("Copyright", OBJ_LABEL, 0, 0, 1.0); ObjectSet("Copyright", OBJPROP_CORNER, 2); ObjectSet("Copyright", OBJPROP_XDISTANCE, 3); ObjectSet("Copyright", OBJPROP_YDISTANCE, 1); g_text_236 = "Copyright © 2008 SOV TRADER (sov_trade@mail.ru)"; ObjectSetText("Copyright", g_text_236, 8, "Times New Roman", Tomato); ObjectSet("Copyright", OBJPROP_TIMEFRAMES, NULL); ObjectSet("Copyright", OBJPROP_BACK, FALSE); g_magic_112 = StringGetChar(Symbol(), 0) + StringGetChar(Symbol(), 1) + 100 * StringGetChar(Symbol(), 3) + 100 * StringGetChar(Symbol(), 4) + 100000 * Period(); return (0); } int deinit() { ObjectDelete("Copyright"); ObjectDelete("Comment"); ObjectDelete("Comment2"); return (0); } int start() { gi_148 = FALSE; gi_152 = FALSE; gi_156 = FALSE; int l_stoplevel_0 = MarketInfo(Symbol(), MODE_STOPLEVEL); if (TakeProfit < l_stoplevel_0) TakeProfit = l_stoplevel_0; g_hour_136 = Hour(); if (StopLoss < l_stoplevel_0) StopLoss = l_stoplevel_0; int l_spread_4 = MarketInfo(Symbol(), MODE_SPREAD); if (!ExtrimProfit) { gi_140 = gia_252[250] + 1; gi_144 = gia_252[120] - 4; } else { gi_140 = gia_252[250] - 1; gi_144 = gia_252[120] - 2; } if (g_hour_136 >= gi_140 || g_hour_136 <= gi_144) gi_156 = TRUE; g_high_160 = High[iHighest(NULL, 0, MODE_HIGH, AngleCheck, 1)]; g_low_168 = Low[iLowest(NULL, 0, MODE_LOW, AngleCheck, 1)]; if (g_low_168 - Bid == 0.0) gi_148 = TRUE; if (Bid - g_high_160 == 0.0) gi_152 = TRUE; if (!UseMM) g_lots_200 = Lots; else g_lots_200 = NormalizeDouble(AccountFreeMargin() * DepoPercent / 100000.0 / (g_leverage_132 / 100), gi_128); if (IsConnected()) { if (IsDemo()) gs_244 = "Демо"; else gs_244 = "Реал"; ObjectCreate("Comment", OBJ_LABEL, 0, 0, 1.0); ObjectSet("Comment", OBJPROP_CORNER, 0); ObjectSet("Comment", OBJPROP_XDISTANCE, 3); ObjectSet("Comment", OBJPROP_YDISTANCE, 25); g_text_236 = "Брокер: " + AccountCompany() + " Номер счёта: " + AccountNumber() + " Тип счёта: " + gs_244; ObjectSetText("Comment", g_text_236, 10, "Times New Roman", Yellow); ObjectSet("Comment", OBJPROP_TIMEFRAMES, NULL); ObjectSet("Comment", OBJPROP_BACK, FALSE); } else ObjectDelete("Comment"); ObjectCreate("Comment2", OBJ_LABEL, 0, 0, 1.0); ObjectSet("Comment2", OBJPROP_CORNER, 0); ObjectSet("Comment2", OBJPROP_XDISTANCE, 3); ObjectSet("Comment2", OBJPROP_YDISTANCE, 50); g_text_236 = "Баланс счёта: " + DoubleToStr(AccountBalance(), gi_128) + " Торгуемый лот: " + DoubleToStr(g_lots_200, gi_128); ObjectSetText("Comment2", g_text_236, 10, "Times New Roman", Yellow); ObjectSet("Comment2", OBJPROP_TIMEFRAMES, NULL); ObjectSet("Comment2", OBJPROP_BACK, FALSE); for (g_pos_116 = 0; g_pos_116 < OrdersTotal(); g_pos_116++) { if (OrderSelect(g_pos_116, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_112) { if (OrderType() == OP_BUY) if ((MinProfitValue > 0 && Close[0] - OrderOpenPrice() >= (MinProfitValue + l_spread_4) * Point) || TimeCurrent() - OrderOpenTime() >= 60 * (Period() * StopLoss)) OrderClose(OrderTicket(), OrderLots(), Bid, g_spread_124, Blue); if (OrderType() == OP_SELL) if ((MinProfitValue > 0 && OrderOpenPrice() - Close[0] >= (MinProfitValue + l_spread_4) * Point) || TimeCurrent() - OrderOpenTime() >= 60 * (Period() * StopLoss)) OrderClose(OrderTicket(), OrderLots(), Ask, g_spread_124, Red); } } } if (gi_148 && gi_156 && IsTradeAllowed() && AccountFreeMarginCheck(Symbol(), OP_BUY, g_lots_200) > 0.0 && SymbolOrders() < 1 && TimeCurrent() - g_datetime_208 >= 60 * Period()) { for (g_pos_116 = 0; g_pos_116 <= 1; g_pos_116++) { RefreshRates(); OrderSend(Symbol(), OP_BUY, g_lots_200, Ask, g_spread_124, Bid - StopLoss * Point, Ask + TakeProfit * Point, g_comment_212, g_magic_112, 0, Blue); g_error_120 = GetLastError(); if (g_error_120 == 0/* NO_ERROR */) { g_datetime_208 = TimeCurrent(); break; } Print("Попытка №", g_pos_116 + 1, "- Ошибка открытия: ", PrintError(g_error_120)); } } if (gi_152 && gi_156 && IsTradeAllowed() && AccountFreeMarginCheck(Symbol(), OP_BUY, g_lots_200) > 0.0 && SymbolOrders() < 1 && TimeCurrent() - g_datetime_208 >= 60 * Period()) { for (g_pos_116 = 0; g_pos_116 <= 1; g_pos_116++) { RefreshRates(); OrderSend(Symbol(), OP_SELL, g_lots_200, Bid, g_spread_124, Ask + StopLoss * Point, Bid - TakeProfit * Point, g_comment_212, g_magic_112, 0, Red); g_error_120 = GetLastError(); if (g_error_120 == 0/* NO_ERROR */) { g_datetime_208 = TimeCurrent(); break; } Print("Попытка №", g_pos_116 + 1, "- Ошибка открытия: ", PrintError(g_error_120)); } } return (0); } int SymbolOrders() { int li_ret_4; for (int l_pos_0 = 0; l_pos_0 < OrdersTotal(); l_pos_0++) { if (OrderSelect(l_pos_0, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) if (OrderMagicNumber() == g_magic_112) li_ret_4++; } } return (li_ret_4); } string PrintError(int ai_0) { return (gsa_256[ai_0]); } void InitErrorArray() { gsa_256[0] = "Нет ошибки"; gsa_256[1] = "Нет ошибки, но результат неизвестен"; gsa_256[2] = "Общая ошибка"; gsa_256[3] = "Неправильные параметры"; gsa_256[4] = "Торговый сервер занят"; gsa_256[5] = "Старая версия клиентского терминала"; gsa_256[6] = "Нет связи с торговым сервером"; gsa_256[7] = "Недостаточно прав"; gsa_256[8] = "Слишком частые запросы"; gsa_256[9] = "Недопустимая операция нарушающая функционирование сервера"; gsa_256[64] = "Счет заблокирован"; gsa_256[65] = "Неправильный номер счета"; gsa_256[128] = "Истек срок ожидания совершения сделки"; gsa_256[129] = "Неправильная цена"; gsa_256[130] = "Неправильные стопы"; gia_252[120] = 5; gsa_256[131] = "Неправильный объем"; gsa_256[132] = "Рынок закрыт"; gsa_256[133] = "Торговля запрещена"; gsa_256[134] = "Недостаточно денег для совершения операции"; gsa_256[135] = "Цена изменилась"; gsa_256[136] = "Нет цен"; gsa_256[137] = "Брокер занят"; gsa_256[138] = "Новые цены"; gia_252[250] = 21; gsa_256[139] = "Ордер заблокирован и уже обрабатывается"; gsa_256[140] = "Разрешена только покупка"; gsa_256[141] = "Слишком много запросов"; gsa_256[145] = "Модификация запрещена, так как ордер слишком близок к рынку"; gsa_256[146] = "Подсистема торговли занята"; gsa_256[147] = "Использование даты истечения ордера запрещено брокером"; gsa_256[148] = "Количество открытых и отложенных ордеров достигло предела, установленного брокером"; gsa_256[4000] = "Нет ошибки"; gsa_256[4001] = "Неправильный указатель функции"; gsa_256[4002] = "Индекс массива - вне диапазона"; gsa_256[4003] = "Нет памяти для стека функций"; gsa_256[4004] = "Переполнение стека после рекурсивного вызова"; gsa_256[4005] = "На стеке нет памяти для передачи параметров"; gsa_256[4006] = "Нет памяти для строкового параметра"; gsa_256[4007] = "Нет памяти для временной строки"; gsa_256[4008] = "Неинициализированная строка"; gsa_256[4009] = "Неинициализированная строка в массиве"; gsa_256[4010] = "Нет памяти для строкового массива"; gsa_256[4011] = "Слишком длинная строка"; gsa_256[4012] = "Остаток от деления на ноль"; gsa_256[4013] = "Деление на ноль"; gsa_256[4014] = "Неизвестная команда"; gsa_256[4015] = "Неправильный переход"; gsa_256[4016] = "Неинициализированный массив"; gsa_256[4017] = "Вызовы DLL не разрешены"; gsa_256[4018] = "Невозможно загрузить библиотеку"; gsa_256[4019] = "Невозможно вызвать функцию"; gsa_256[4020] = "Вызовы внешних библиотечных функций не разрешены"; gsa_256[4021] = "Недостаточно памяти для строки, возвращаемой из функции"; gsa_256[4022] = "Система занята"; gsa_256[4050] = "Неправильное количество параметров функции"; gsa_256[4051] = "Недопустимое значение параметра функции"; gsa_256[4052] = "Внутренняя ошибка строковой функции"; gsa_256[4053] = "Ошибка массива"; gsa_256[4054] = "Неправильное использование массива-таймсерии"; gsa_256[4055] = "Ошибка пользовательского индикатора"; gsa_256[4056] = "Массивы несовместимы"; gsa_256[4057] = "Ошибка обработки глобальныех переменных"; gsa_256[4058] = "Глобальная переменная не обнаружена"; gsa_256[4059] = "Функция не разрешена в тестовом режиме"; gsa_256[4060] = "Функция не разрешена"; gsa_256[4061] = "Ошибка отправки почты"; gsa_256[4062] = "Ожидается параметр типа string"; gsa_256[4063] = "Ожидается параметр типа integer"; gsa_256[4064] = "Ожидается параметр типа double"; gsa_256[4065] = "В качестве параметра ожидается массив"; gsa_256[4066] = "Запрошенные исторические данные в состоянии обновления"; gsa_256[4067] = "Ошибка при выполнении торговой операции"; gsa_256[4099] = "Конец файла"; gsa_256[4100] = "Ошибка при работе с файлом"; gsa_256[4101] = "Неправильное имя файла"; gsa_256[4102] = "Слишком много открытых файлов"; gsa_256[4103] = "Невозможно открыть файл"; gsa_256[4104] = "Несовместимый режим доступа к файлу"; gsa_256[4105] = "Ни один ордер не выбран"; gsa_256[4106] = "Неизвестный символ"; gsa_256[4107] = "Неправильный параметр цены для торговой функции"; gsa_256[4108] = "Неверный номер тикета"; gsa_256[4109] = "Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта"; gsa_256[4110] = "Длинные позиции не разрешены. Необходимо проверить свойства эксперта"; gsa_256[4111] = "Короткие позиции не разрешены. Необходимо проверить свойства эксперта"; gsa_256[4200] = "Объект уже существует"; gsa_256[4201] = "Запрошено неизвестное свойство объекта"; gsa_256[4202] = "Объект не существует"; gsa_256[4203] = "Неизвестный тип объекта"; gsa_256[4204] = "Нет имени объекта"; gsa_256[4205] = "Ошибка координат объекта"; gsa_256[4206] = "Не найдено указанное подокно"; gsa_256[4207] = "Ошибка при работе с объектом"; }