← К каталогу
Исходный код · ID 49

CloseAtProfit

closeatprofit.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

CloseAtProfit — это советник для MetaTrader 4, который автоматически закрывает открытые позиции при достижении заданного уровня прибыли или убытка. Он подсчитывает суммарный профит по всем ордерам (или только по текущему графику) и при превышении пороговых значений закрывает позиции и удаляет отложенные ордера.

Советник предоставляет настраиваемые пороги прибыли и убытка, а также возможность работы со всеми символами или только с текущим. Есть опция учитывать или игнорировать отложенные ордера при закрытии. Максимальный проскальзывание задаётся отдельным параметром.

Встроенное информационное меню отображает количество открытых сделок, общий объём лотов и текущую прибыль. Меню рисуется с помощью графических объектов и обновляется при каждом тике. Визуальные параметры меню (цвета, шрифт) настраиваются пользователем.

Настройки программы

НастройкаОписание
useProfitToClose Использовать закрытие по прибыли — Переключатель автоматического закрытия позиций при достижении заданного уровня прибыли. При неактивном состоянии проверка прибыли не выполняется.
profitToClose Прибыль для закрытия — Числовой параметр, задающий порог прибыли (в долларах), при достижении которого советник автоматически закрывает позиции.
useLossToClose Использовать закрытие по убытку — Переключатель автоматического закрытия позиций при достижении заданного уровня убытка. При неактивном состоянии проверка убытка не выполняется.
lossToClose Убыток для закрытия — Числовой параметр, задающий порог убытка (в долларах), при достижении которого советник автоматически закрывает позиции.
AllSymbols Все символы — Переключатель работы со всеми символами: при активном состоянии советник анализирует и закрывает ордера на всех инструментах, при неактивном — только на текущем графике.
PendingOrders Отложенные ордера — Переключатель учёта отложенных ордеров: при активном состоянии отложенные ордера включаются в расчёт прибыли и могут быть удалены при закрытии, при неактивном — игнорируются.
MaxSlippage Максимальное проскальзывание — Числовой параметр, задающий максимально допустимое проскальзывание цены при закрытии позиций в пунктах.
showMenu Показать меню — Переключатель отображения информационного меню на графике. При активном состоянии меню рисуется при инициализации и обновляется в процессе работы.
menuColor Цвет меню — Цвет заголовков и подписей информационного меню на графике.
variablesColor Цвет переменных — Цвет значений переменных (количество сделок, лоты, прибыль) в информационном меню на графике.
font Размер шрифта — Целочисленный параметр, задающий размер шрифта для отображения информационного меню на графике.
Получить полный код

Поиск по коду файла

extern bool      useProfitToClose       = true;
extern double    profitToClose          = 20;
extern bool      useLossToClose         = false;
extern double    lossToClose            = 100;
extern bool      AllSymbols             = true;
extern bool      PendingOrders          = true;
extern double    MaxSlippage            = 3;   
extern bool      showMenu               = true;
extern color     menuColor              = Blue; 
extern color     variablesColor         = Red;
extern int       font                   = 10;

double pips2dbl, pips2point, pipValue, maxSlippage,
       profit;

bool   clear;

int   medzera = 8,
      trades;

double menulots;

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {

   if(showMenu)
   {
      ObjectDelete("name");
      ObjectDelete("Openl");
      ObjectDelete("Open");
      ObjectDelete("Lotsl");
      ObjectDelete("Lots");
      ObjectDelete("Profitl");
      ObjectDelete("Profit");
   }

   return(0);
  }

int start()
{
      // код доступен только после оплаты
   }

bool CloseDeleteAll()
{
    int total  = OrdersTotal();
      for (int cnt = total-1 ; cnt >=0 ; cnt--)
      {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) 
         {
            switch(OrderType())
            {
               case OP_BUY       :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet))
                     return(false);
               }break;                  
               case OP_SELL      :
               {
                  if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet))
                     return(false);
               }break;
            }             

            if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
               if(!OrderDelete(OrderTicket()))
               { 
                  Print("Error deleting " + OrderType() + " order : ",GetLastError());
                  return (false);
               }
          }
      }
      return (true);
}

bool CloseDeleteAllCurrent()
{
    int total  = OrdersTotal();
      for (int cnt = total-1 ; cnt >=0 ; cnt--)
      {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) 
         {
            if(OrderSymbol()==Symbol())
            {
               switch(OrderType())
               {
                  case OP_BUY       :
                  {
                     if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),maxSlippage,Violet))
                        return(false);
                  }break;

                  case OP_SELL      :
                  {
                     if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),maxSlippage,Violet))
                        return(false);
                  }break;
               }             

            if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
               if(!OrderDelete(OrderTicket()))
               { 
                  return (false);
               }
            }
         }
      }
      return (true);
}

bool CloseDeleteAllNonPending()
{
    int total  = OrdersTotal();
      for (int cnt = total-1 ; cnt >=0 ; cnt--)
      {
        

Показано первые 50% кода (символов: 7332)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
733,20₽ ≈ $8.96