- Браузерная платформа MetaTrader 5
- Публикация онлайн - Графики котировок, технический и фундаментальный анализ
- Когда веб-терминал незаменим
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.
в окне данных маленький треугольничек нажми
левый верхний угол перед названием валютной пары
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.
Alt+T
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.
ТС ищет кнопку Закрыть все ордера. Вот когда-то делал...
//+------------------------------------------------------------------+ //| Советник создает 2 кнопки: Закрыть ордера и Выход Э-Закрой.mq4 | //+------------------------------------------------------------------+ #property strict int КоличествоПовторений=5; bool Отладка=false; void Удаление() { Alert("Удаление"); int Повторяем, Ошибка; int ВсегоПриказов=OrdersTotal(); if(Отладка)Print("OrdersTotal()=",ВсегоПриказов); // Закрывать с последнего. Иначе произойдет перенумерация // и закроется лишь половина приказов for (int i=ВсегоПриказов-1; i>=0; i--) { RefreshRates(); // обновление предопределенных переменных и массивов-таймсерий if(Отладка)Print("------------ i=", i); if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(Отладка)Print("------------ i=", i, " Приказ выбран ", OrderComment()); // Пропуск "чужих" приказов // if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue; if (OrderType()==OP_BUY) for(Повторяем=0; Повторяем<КоличествоПовторений; Повторяем++) if(OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE)) break; else { Ошибка = GetLastError(); Print("Ошибка закрытия покупки = ", Ошибка, ОписаниеОшибки(Ошибка)); Sleep(400); } if (OrderType()==OP_SELL) for(Повторяем=0; Повторяем<КоличествоПовторений; Повторяем++) if(OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE)) break; else { Ошибка = GetLastError(); Print("Ошибка закрытия продажи = ", Ошибка, ОписаниеОшибки(Ошибка)); Sleep(400); } } else { Ошибка = GetLastError(); Print("Ошибка выбора приказа = ", Ошибка, ОписаниеОшибки(Ошибка)); Sleep(400); } } } //+------------------------------------------------------------------+ //| Инициализация | //+------------------------------------------------------------------+ void OnInit() { // ObjectDelete("ААААА"); //--- Кнопка Выход ObjectCreate("Выход",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Выход",OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(0,"Выход",OBJPROP_XDISTANCE,160); ObjectSetInteger(0,"Выход",OBJPROP_YDISTANCE,52); ObjectSetInteger(0,"Выход",OBJPROP_XSIZE,130); ObjectSetInteger(0,"Выход",OBJPROP_YSIZE,25); ObjectSetString (0,"Выход",OBJPROP_TEXT,"Выход"); ObjectSetInteger(0,"Выход",OBJPROP_COLOR,Black); ObjectSetInteger(0,"Выход",OBJPROP_BGCOLOR,Orange); ObjectSetInteger(0,"Выход",OBJPROP_BORDER_COLOR,Green); ObjectSetInteger(0,"Выход",OBJPROP_HIDDEN,true); ObjectSetInteger(0,"Выход",OBJPROP_STATE,false); ObjectSetInteger(0,"Выход",OBJPROP_FONTSIZE,12); //--- Кнопка Выполнить ObjectCreate("Выполнить",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Выполнить",OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(0,"Выполнить",OBJPROP_XDISTANCE,160); ObjectSetInteger(0,"Выполнить",OBJPROP_YDISTANCE,21); ObjectSetInteger(0,"Выполнить",OBJPROP_XSIZE,130); ObjectSetInteger(0,"Выполнить",OBJPROP_YSIZE,25); ObjectSetString (0,"Выполнить",OBJPROP_TEXT,"Выполнить"); ObjectSetInteger(0,"Выполнить",OBJPROP_COLOR,White); ObjectSetInteger(0,"Выполнить",OBJPROP_BGCOLOR,Green); ObjectSetInteger(0,"Выполнить",OBJPROP_BORDER_COLOR,Green); ObjectSetInteger(0,"Выполнить",OBJPROP_HIDDEN,true); ObjectSetInteger(0,"Выполнить",OBJPROP_STATE,false); ObjectSetInteger(0,"Выполнить",OBJPROP_FONTSIZE,12); // return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete("Выполнить"); ObjectDelete("Выход"); } //+------------------------------------------------------------------+ //| Реакция на события | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(sparam=="Выполнить") { ObjectSetInteger(0,"Выполнить",OBJPROP_STATE,false); ObjectSetInteger(0,"Выполнить",OBJPROP_BGCOLOR,Yellow); ObjectSetString (0,"Выполнить",OBJPROP_TEXT,"ДЕЛАЮ"); ObjectSetInteger(0,"Выполнить",OBJPROP_COLOR,Black); Удаление(); Sleep(1500); ObjectSetInteger(0,"Выполнить",OBJPROP_STATE,false); ObjectSetInteger(0,"Выполнить",OBJPROP_BGCOLOR,Green); ObjectSetString(0,"Выполнить",OBJPROP_TEXT,"Выполнить"); ObjectSetInteger(0,"Выполнить",OBJPROP_COLOR,White); } if(sparam=="Выход") { ObjectSetInteger(0,"Выход",OBJPROP_STATE,false); ObjectSetInteger(0,"Выход",OBJPROP_BGCOLOR,Yellow); ObjectSetString (0,"Выход",OBJPROP_TEXT,"УХОЖУ"); ObjectSetInteger(0,"Выход",OBJPROP_COLOR,Black); Sleep(1000); ExpertRemove(); } } //+---------------------------------------------------+ //| функция расшифровки кодов ошибок | //| Сверку произвел 23.10.2015 | //+---------------------------------------------------+ string ОписаниеОшибки(int НомерОшибки) { string s; switch(НомерОшибки) { case(0): s="Нет ошибки"; break; case(1): s="Нет ошибки, но результат неизвестен"; break; case(2): s="Общая ошибка (Нет связи с торговым сервером?)"; break; case(3): s="Неправильные параметры"; break; case(4): s="Торговый сервер занят"; break; case(5): s="Старая версия клиентского терминала"; break; case(6): s="Нет связи с торговым сервером"; break; case(7): s="Недостаточно прав"; break; case(8): s="Слишком частые запросы"; break; case(9): s="Недопустимая операция, нарушающая функционирование сервера"; break; case(64): s="Счет заблокирован"; break; case(65): s="Неправильный номер счета"; break; case(128): s="Истек срок ожидания совершения сделки"; break; case(129): s="Неправильная цена"; break; case(130): s="Неправильные стопы"; break; case(131): s="Неправильный объём"; break; case(132): s="Рынок закрыт"; break; case(133): s="Торговля запрещена"; break; case(134): s="Недостаточно денег для совершения операции"; break; case(135): s="Цена изменилась"; break; case(136): s="Нет цены"; break; case(137): s="Брокер занят"; break; case(138): s="Новые цены"; break; case(139): s="Ордер заблокирован и уже обрабатывается"; break; case(140): s="Разрешена только покупка"; break; case(141): s="Слишком много запросов"; break; case(145): s="Модификация запрещена, т.к. ордер слишком близок к рынку"; break; case(146): s="Подсистема торговли занята"; break; case(147): s="Использование даты истечения запрещено брокером"; break; case(148): s="Количество открытых и отложенных ордеров достигло предела"; break; case(149): s="Попытка открыть противоположную позицию, если хеджирование запрещено"; break; case(150): s="Противоречие с правилом FIFO"; break; //---- mql4 errors case 4000: s="no error (never generated code)"; break; case 4001: s="Ошибочный указатель функции"; break; case 4002: s="Индекс за пределами диапазона"; break; case 4003: s="Недостаточно памяти для стека функции"; break; case 4004: s="Рекурсивное переполнение стека"; break; case 4005: s="В стеке недостаточно памяти для парметра"; break; case 4006: s="Недостаточно памяти для строкового параметра"; break; case 4007: s="Недостаточно памяти для временной строки"; break; case 4008: s="Неинициализированная строка"; break; case 4009: s="Неинициализированная строка в массиве"; break; case 4010: s="Недостаточно памяти для строкового массива"; break; case 4011: s="Строка слишком длинная"; break; case 4012: s="Остаток от деления на ноль"; break; case 4013: s="Деление на ноль"; break; case 4014: s="Неизвестная команда"; break; case 4015: s="Неправильный переход"; break; case 4016: s="Неинициализированный массив"; break; case 4017: s="Вызов dll запрещен"; break; case 4018: s="Загрузка библиотеки невозможна"; break; case 4019: s="Вызов функции невозможен"; break; case 4020: s="Вызов внешних функций запрещен"; break; case 4021: s="Для возвращаемой строки недостаточно памяти"; break; case 4022: s="Система занята"; break; case 4023: s="Критическая ошибка вызова DLL-функции"; break; case 4024: s="Внутренняя ошибка"; break; case 4025: s="Нет памяти"; break; case 4026: s="Неверный указатель"; break; case 4027: s="Слишком много параметров форматирования строки"; break; case 4028: s="Число параметров превышает число параметров форматирования строки"; break; case 4029: s="Неверный массив"; break; case 4030: s="График не отвечает"; break; case 4050: s="Ошибочное количество параметров функции"; break; case 4051: s="Ошибочное значение параметра функции"; break; case 4052: s="Внутренняя ошибка строковой функции"; break; case 4053: s="Какая-то ошибка при работе с массивом"; break; case 4054: s="Ошибка массива"; break; case 4055: s="Ошибка пользовательского индикатора"; break; case 4056: s="Массивы несовместимы"; break; case 4057: s="При обработке глобальной переменной произошла ошибка"; break; case 4058: s="Глобальная переменная отсутствует"; break; case 4059: s="В тестовом режиме эта функция запрещена"; break; case 4060: s="Функция запрещена"; break; case 4061: s="Ошибка отправки почты"; break; case 4062: s="Ожидается парметр string"; break; case 4063: s="Ожидается парметр integer"; break; case 4064: s="Ожидается парметр double"; break; case 4065: s="Ожидается парметр массив"; break; case 4066: s="Запрошенные исторические данные обновляются"; break; case 4067: s="Ошибка выполнения торговой операции"; break; case 4068: s="Ресурс не найден"; break; case 4069: s="Ресурс не поддерживается"; break; case 4070: s="Дубликат ресурса"; break; case 4071: s="Ошибка инициализации пользовательского индикатора"; break; case 4072: s="Ошибка загрузки пользовательского индикатора"; break; case 4073: s="Нет исторических данных"; break; case 4074: s="Мало памяти для исторических данных"; break; case 4099: s="Конец файла"; break; case 4100: s="Ошибка при работе с файлом"; break; case 4101: s="Ошибочное имя файла"; break; case 4102: s="Открыто слишком много файлов"; break; case 4103: s="Затруднено открытие файла"; break; case 4104: s="Несовместимый доступ к файлу"; break; case 4105: s="Предварительно нужно выбрать ордер"; break; case 4106: s="Неизвестный символ"; break; case 4107: s="Неправильный параметр цены для торговой функции"; break; case 4108: s="Ордер с таким номером отсутствует"; break; case 4109: s="Торговля запрещена: Советники->Свойства или Авто-торговля"; break; case 4110: s="Покупки (Longs) запрещены в свойствах эксперта: Советники->Свойства"; break; case 4111: s="Продажи (Shorts) запрещены в свойствах эксперта:Советники->Свойства"; break; case 4112: s="Автоматическая торговля запрещена сервером"; break; case 4200: s="Объект уже существует"; break; case 4201: s="Неизвестное свойство объета"; break; case 4202: s="Объект отсутствет"; break; case 4203: s="Неизвестный тип объекта"; break; case 4204: s="Отсутствует имя объекта"; break; case 4205: s="Ошибка координат объекта"; break; case 4206: s="Отсутствует подокно"; break; case 4207: s="Ошибка с объектом"; break; case 4210: s="Неизвестное свойство графика"; break; case 4211: s="График отсутствует"; break; case 4212: s="Отсутствует подокно графика"; break; case 4213: s="Индикатор отсутствует"; break; case 4220: s="Ошибка выбора инструмента"; break; case 4250: s="Ошибка отправки push-уведомления"; break; case 4251: s="Ошибка параметров push-уведомления"; break; case 4252: s="Уведомления запрещены"; break; case 4253: s="Слишком частые запросы отсылки push-уведомлений"; break; case 5001: s="Слишком много открытых файлов"; break; case 5002: s="Неверное имя файла"; break; case 5003: s="Слишком длинное имя файла"; break; case 5004: s="Ошибка открытия файла"; break; case 5005: s="Ошибка размещения буфера текстового файла"; break; case 5006: s="Ошибка удаления файла"; break; case 5007: s="Неверный хендл файла (файл закрыт или не был открыт)"; break; case 5008: s="Индекс хендла отсутствует в таблице"; break; case 5009: s="Файл должен быть открыт с флагом FILE_WRITE"; break; case 5010: s="Файл должен быть открыт с флагом FILE_READ"; break; case 5011: s="Файл должен быть открыт с флагом FILE_BIN"; break; case 5012: s="Файл должен быть открыт с флагом FILE_TXT"; break; case 5013: s="Файл должен быть открыт с флагом FILE_TXT или FILE_CSV"; break; case 5014: s="Файл должен быть открыт с флагом FILE_CSV"; break; case 5015: s="Ошибка чтения файла"; break; case 5016: s="Ошибка записи файла"; break; case 5017: s="Размер строки должен быть указан для двоичных файлов"; break; case 5018: s="Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)"; break; case 5019: s="Файл является директорией"; break; case 5020: s="Файл не существует"; break; case 5021: s="Файл не может быть перезаписан"; break; case 5022: s="Неверное имя директории"; break; case 5023: s="Директория не существует"; break; case 5024: s="Указанный файл не является директорией"; break; case 5025: s="Ошибка удаления директории"; break; case 5026: s="Ошибка очистки директории"; break; case 5027: s="Ошибка изменения размера массива"; break; case 5028: s="Ошибка изменения размера строки"; break; case 5029: s="Структура содержит строки или динамические массивы"; break; case 5200: s="URL не прошел проверку"; break; case 5201: s="Не удалось подключиться к указанному URL"; break; case 5202: s="Превышен таймаут получения данных"; break; case 5203: s="Ошибка в результате выполнения HTTP запроса"; break; // Пользовательские ошибки! case 65536: s="С этого кода начинаются ошибки, задаваемые пользователем"; break; // Если придет другой код ошибки default: s="Знаю 0-9,64,65,128-41,145-50,4000-30,\n"+ "4050-74,4099-4112,4200-07,4210-13,4220,\n"+ "4250-53,5001-29,5200-3,65536-..."; } return(DoubleToStr(НомерОшибки,0)+". "+s); }
ТС ищет кнопку Закрыть все ордера. Вот когда-то делал...
void OnDeinit(const int reason) { }
Это лишняя функция. Просто удали её.
Evgeny Belyaev:
void OnDeinit(const int reason) { }
Это лишняя функция. Просто удали её.
Посмотрите внимательно - у меня функция OnDeinit удаляет два объекта - кнопки
//+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete("Выполнить"); ObjectDelete("Выход"); }
Иначе они останутся при удалении советника, но нажатие на них будет бесполезным. Они просто будут вводить в заблуждение. Понятно?
Иначе они останутся при удалении советника, но нажатие на них будет бесполезным. Они просто будут вводить в заблуждение. Понятно?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
ПРОГРАММИРОВАНИЕ ... СМАЙЛИКАМИ НЯШ МЯШ -MQL4 НАШ!
Konstantin Erin, 2018.07.03 11:57
Зачем менять, если можно просто выбросить. Совсем выбросить!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования