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

Close Pendings

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

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

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

О программе

Программа представляет собой скрипт для MetaTrader 4, предназначенный для закрытия торговых ордеров. При запуске скрипт перебирает все активные ордера на счёте и закрывает рыночные позиции (BUY/SELL), а также удаляет отложенные ордера (BUYLIMIT, BUYSTOP, SELLLIMIT, SELLSTOP).

Если скрипт перетащен на график конкретной пары, он закрывает только ордера этой пары; при запуске без привязки к паре закрываются все ордера. В случае ошибок выполняется повторная попытка закрытия с паузой, а детали ошибки выводятся через Alert.

Для визуальной индикации процесса на графике отображается текстовая метка, обновляющаяся при обработке каждого ордера. По завершении работы метка удаляется и воспроизводится звуковой сигнал.

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

НастройкаОписание
Loading Text (Text) Text — Текстовая строка, отображаемая на графике в процессе обработки ордеров
Получить полный код

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

#property version   "1.00"
#property strict

extern string Text="Closing All";            //Loading Text

int Slippage=10;
double DropPoint;
bool FocusPair;

int _ErrorCheck;

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

   string strTmp=Text;

   DropPoint=WindowPriceOnDropped();

   if(DropPoint==0)
      FocusPair=false;
   else
      FocusPair=true;

   int total=OrdersTotal();

   if(total>0)
     {
      for(int i=total-1;i>=0;i--)
        {
         DrawLabel(strTmp);
         strTmp+=".";
         if(StringLen(strTmp)>=StringLen(Text)+6)
            strTmp=Text;

         _ErrorCheck=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

         if(_ErrorCheck==-1)
           {
            Alert("Error Order Select: ",GetLastError());
            break;
           }

         _ErrorCheck=0;

         for(int l=0; l<5; l++)
           {

            if(FocusPair && Symbol()!=OrderSymbol())
               break;

            if(OrderType()==OP_SELL)
               _ErrorCheck=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_ASK),Slippage,clrNONE);
            if(OrderType()==OP_BUY)
               _ErrorCheck=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_BID),Slippage,clrNONE);
            if(OrderType()== OP_BUYLIMIT || OrderType()== OP_BUYSTOP ||
               OrderType()== OP_SELLLIMIT || OrderType()== OP_SELLSTOP)
                  _ErrorCheck=OrderDelete(OrderTicket());

            if(_ErrorCheck==-1)
               Sleep(100);
            else
               break;
           }

         if(_ErrorCheck==-1)
           {
            string _ErrorComment;
            int _LastErrorFound=GetLastError();

            switch(_LastErrorFound)
              {
               case 1:
                  _ErrorComment="ERR_NO_RESULT";
                  break;
               case 2:
                  _ErrorComment="ERR_COMMON_ERROR";
                  break;
               case 3:
                  _ErrorComment="ERR_INVALID_TRADE_PARAMETERS";
                  break;
               case 4:
                  _ErrorComment="ERR_SERVER_BUSY";
                  break;
               case 5:
                  _ErrorComment="ERR_OLD_VERSION";
                  break;
               case 6:
                  _ErrorComment="ERR_NO_CONNECTION";
                  break;
               case 7:
                  _ErrorComment="ERR_NOT_ENOUGH_RIGHTS";
                  break;
               case 8:
                  _ErrorComment="ERR_TOO_FREQUENT_REQUESTS";
                  break;
               case 9:
                  _ErrorComment="ERR_MALFUNCTIONAL_TRADE";
                  break;
               case 64:
                  _ErrorComment="ERR_ACCOUNT_DISABLED";
                  break;
               case 65:
                  _ErrorComment="ERR_INVALID_ACCOUNT";
                  break;
               case 128:
                  _ErrorComment="ERR_TRADE_TIMEOUT";
                  break;
               case 129:
                  _ErrorComment="ERR_INVALID_PRICE";
            

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

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

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

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

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

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

Стоимость полного кода
367,10₽ ≈ $4.49