потерял кнопку

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Chucha52
43
Chucha52  
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.
Dmitriy Avramenko
606
Dmitriy Avramenko  
Chucha52:
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.

в окне данных маленький треугольничек нажми

Dmitriy Avramenko
606
Dmitriy Avramenko  
Дмитрий Авраменко:

в окне данных маленький треугольничек нажми

левый верхний угол перед названием валютной пары

SEM
889
SEM  
нет такой кнопки
Alexander Sevastyanov
7705
Alexander Sevastyanov  
Chucha52:
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.

Alt+T

SEM
889
SEM  
Chucha52:
была очень удобная кнопочка, располагалась аккурат под панелькой торговля в один клик, закрыть все ордера. куда-то делась, уже час ищу по интернету, не могу найти. пжлст помогите, терминал мт4.
Konstantin Erin
2162
Konstantin Erin  

ТС ищет кнопку Закрыть все ордера. Вот когда-то делал...

//+------------------------------------------------------------------+
//| Советник создает 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);
}
Файлы:
Knopka.mq4 31 kb
Evgeny Belyaev
158834
Evgeny Belyaev  
Konstantin Erin:

ТС ищет кнопку Закрыть все ордера. Вот когда-то делал...

void OnDeinit(const int reason)
{

}

Это лишняя функция. Просто удали её.

poruchik
1921
poruchik  

Cова

Файлы:
Konstantin Erin
2162
Konstantin Erin  

Evgeny Belyaev:

void OnDeinit(const int reason)
{

}

Это лишняя функция. Просто удали её.

Посмотрите внимательно - у меня функция OnDeinit удаляет два объекта - кнопки

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  ObjectDelete("Выполнить");
  ObjectDelete("Выход");
}

Иначе они останутся при удалении советника, но нажатие на них будет бесполезным. Они просто будут вводить в заблуждение. Понятно?

Evgeny Belyaev
158834
Evgeny Belyaev  
Konstantin Erin:

Иначе они останутся при удалении советника, но нажатие на них будет бесполезным. Они просто будут вводить в заблуждение. Понятно?

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий