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

orderexecution.mqh

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

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

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

О программе

Библиотека OrderExecution.mqh предназначена для надёжной отправки и закрытия торговых ордеров в среде MetaTrader 4. Она предоставляет функции-обёртки над стандартными торговыми API платформы, которые автоматически повторяют попытку при возникновении временных ошибок выполнения торгового сервера.

Функция отправки ордера принимает стандартные параметры сделки — символ, объём, цену, стоп-лосс, тейк-профит и другие — и возвращает тикет ордера при успешном выполнении. Функция закрытия ордера завершает позицию по указанному тикету с заданными параметрами закрытия.

Обе функции реализуют механизм повторных попыток при временных ошибках, что повышает устойчивость торговых операций при кратковременных сбоях связи или перегрузке сервера.

Получить полный код

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

#ifndef __ORDEREXECUTION_MQH__
#define __ORDEREXECUTION_MQH__

int XMC_OrderSendReliable(
   string   symbol,
   int      cmd,
   double   volume,
   double   price,
   int      slippage,
   double   stoploss,
   double   takeprofit,
   string   comment,
   int      magic,
   datetime expiration,
   color    arrow_color)
{
   int maxAttempts = 5;
   int lastError   = 0;

   for(int attempt = 0; attempt < maxAttempts; attempt++)
   {
      int ticket = OrderSend(
         symbol,
         cmd,
         volume,
         price,
         slippage,
         stoploss,
         takeprofit,
         comment,
         magic,
         expiration,
         arrow_color);

      if(ticket > 0)
         return ticket;

      lastError = GetLastError();

      switch(lastError)
      {
         case 4:
         case 128:
         case 136:
         case 137:
         case 138:
         case 146:
            Sleep(500 + (attempt + 1) * 200);
            RefreshRates();

            if(cmd == OP_BUY)
               price = MarketInfo(symbol, MODE_ASK);
            else if(cmd == OP_SELL)
               price = MarketInfo(symbol, MODE_BID);

            break;

         default:
            Print("OrderSendReliable: Fatal error ", lastError);
            return -1;
      }
   }

   Print("OrderSendReliable: Failed after ",
         maxAtte

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

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

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

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

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

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

Стоимость полного кода
160,90₽ ≈ $1.97