Mql4 orderclose error 4108

hi, folks I'm really impressed with the deep knowledge expressed in the forum my qustion is about error 4108 that kills my trade...
[Deleted]
2009.08.24 08:51

 

hi, folks

I’m really impressed with the deep knowledge expressed in the forum

my qustion is about error 4108 that kills my trade.

i get the order ticket by orderslect and then issue the ordererdelete function

to kill a pending sellstop order. most of the times i get the 4108 error, now is this ea system

a proffesional tool or just a nice marketing gimic, for tyoing and hvaing fun. ??!!

thank you.

  • delete pending orders
  • Error 4108 mt4
  • Fire EA: Can you create this EA?

JC

2009.08.24 09:19

#1  

yoserian:

my qustion is about error 4108 that kills my trade.

i get the order ticket by orderslect and then issue the ordererdelete function

You can get error 4108 for a number of reasons, including an attempt to delete an order which you have already successfully deleted. For example, if you call OrderDelete() twice with the same ticket number, the second call will fail. In essence, error 4108 seems to mean «either the ticket number is simply not valid, or the order is not valid for the action you are trying to perform on it».

now is this ea system a proffesional tool or just a nice marketing gimic, for tyoing and hvaing fun. ??!!

Both.

[Deleted]

2009.08.24 15:13

#3  

Post your code if you will.

However, I’ve seen this being caused by the loop you use to cycle through orders incrementing rather than decrementing.

It can cause the behaviour jjc mentions above.

Look for something like i++ to indicate that this is your problem. In that case you’ll need to turn your loop around to start counting downwards using the following as your index -> (total number of orders -1) to 0 inclusive.

CB

Stephen Njuki

2010.03.19 20:22

#4  

Hey man your answers are always on point. They just keep getting me back on track. Thanks a bunch.

[Deleted]

2014.05.05 02:49

#5  

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

break;

if((OrderSymbol()==Symbol()) && (OrderOpenPrice() == priceEnter))

I added some additional filters in my EA to get rid of that. but what cloudbreaker said was spot on.. its your loop

manuel_campelo

2015.04.30 08:59

#7  

 I have the same Issue but I’m not doing any loop over open open trades. I have an array of orders to close and I send a ticcket to Close Function.

I Attach an image where you can see the code, the values of the variables involved and the terminal info of the trades after trying to close an order with error 4108.

As you can see (sorry for the picture) ticket, Price, Lots, etc were alright. Does anyone know what happened?

William Roeder

2015.04.30 12:13

#8  

  1. You are calling OrderClose for a pending order. OrderClose closes open orders. OrderDelete deletes pending orders.
  2. Do NOT use NormalizeDouble, EVER. For ANY Reason. It’s a kludge, don’t use it.
    It’s use is always wrong

    • SL/TP are market orders when triggered, they don’t need to be normalized, only abide by the limits Requirements and Limitations in Making Trades — Appendixes — MQL4 Tutorial and that requires understanding floating point equality Can price != price ? — MQL4 forum
    • Only the open price for pending orders need to be adjusted. On Currencies, Point == TickSize, so you will get the same answer, but it won’t work on Metals. So do it right: Trailing Bar Entry EA — MQL4 forum or Bid/Ask: (No Need) to use NormalizeDouble in OrderSend — MQL4 forum
    • Lot size must also be adjusted to a multiple of LotStep. If that is not a power of 1/10 then NormalizeDouble is wrong. Do it right.
manuel_campelo

2015.05.01 06:55

#9  

Thanks WHRoeder, you always state things clear. And thanks for the links (I didn’t find gthen cause I was looking for error 4108).

GetLastError() — функция, возвращающая коды ошибок. Кодовые константы ошибок определены
в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию
ErrorDescription(), определенную в файле stdlib.mqh.

Константа Значение Описание
ERR_NO_ERROR 0 Нет ошибки
ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен
ERR_COMMON_ERROR 2 Общая ошибка
ERR_INVALID_TRADE_PARAMETERS 3 Неправильные параметры
ERR_SERVER_BUSY 4 Торговый сервер занят
ERR_OLD_VERSION 5 Старая версия клиентского терминала
ERR_NO_CONNECTION 6 Нет связи с торговым сервером
ERR_NOT_ENOUGH_RIGHTS 7 Недостаточно прав
ERR_TOO_FREQUENT_REQUESTS 8 Слишком частые запросы
ERR_MALFUNCTIONAL_TRADE 9 Недопустимая операция нарушающая функционирование сервера
ERR_ACCOUNT_DISABLED 64 Счет заблокирован
ERR_INVALID_ACCOUNT 65 Неправильный номер счета
ERR_TRADE_TIMEOUT 128 Истек срок ожидания совершения сделки
ERR_INVALID_PRICE 129 Неправильная цена
ERR_INVALID_STOPS 130 Неправильные стопы
ERR_INVALID_TRADE_VOLUME 131 Неправильный объем
ERR_MARKET_CLOSED 132 Рынок закрыт
ERR_TRADE_DISABLED 133 Торговля запрещена
ERR_NOT_ENOUGH_MONEY 134 Недостаточно денег для совершения операции
ERR_PRICE_CHANGED 135 Цена изменилась
ERR_OFF_QUOTES 136 Нет цен
ERR_BROKER_BUSY 137 Брокер занят
ERR_REQUOTE 138 Новые цены
ERR_ORDER_LOCKED 139 Ордер заблокирован и уже обрабатывается
ERR_LONG_POSITIONS_ONLY_ALLOWED 140 Разрешена только покупка
ERR_TOO_MANY_REQUESTS 141 Слишком много запросов
ERR_TRADE_MODIFY_DENIED 145 Модификация запрещена, так как ордер слишком близок к рынку
ERR_TRADE_CONTEXT_BUSY 146 Подсистема торговли занята
ERR_TRADE_EXPIRATION_DENIED 147 Использование даты истечения ордера запрещено брокером
ERR_TRADE_TOO_MANY_ORDERS 148 Количество открытых и отложенных ордеров достигло предела, установленного брокером.
Константа Значение Описание
ERR_NO_MQLERROR 4000 Нет ошибки
ERR_WRONG_FUNCTION_POINTER 4001 Неправильный указатель функции
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Индекс массива — вне диапазона
ERR_NO_MEMORY_FOR_FUNCTION_CALL_STACK 4003 Нет памяти для стека функций
ERR_RECURSIVE_STACK_OVERFLOW 4004 Переполнение стека после рекурсивного вызова
ERR_NOT_ENOUGH_STACK_FOR_PARAMETER 4005 На стеке нет памяти для передачи параметров
ERR_NO_MEMORY_FOR_PARAMETER_STRING 4006 Нет памяти для строкового параметра
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Нет памяти для временной строки
ERR_NOT_INITIALIZED_STRING 4008 Неинициализированная строка
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Неинициализированная строка в массиве
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 Нет памяти для строкового массива
ERR_TOO_LONG_STRING 4011 Слишком длинная строка
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Остаток от деления на ноль
ERR_ZERO_DIVIDE 4013 Деление на ноль
ERR_UNKNOWN_COMMAND 4014 Неизвестная команда
ERR_WRONG_JUMP 4015 Неправильный переход
ERR_NOT_INITIALIZED_ARRAY 4016 Неинициализированный массив
ERR_DLL_CALLS_NOT_ALLOWED 4017 Вызовы DLL не разрешены
ERR_CANNOT_LOAD_LIBRARY 4018 Невозможно загрузить библиотеку
ERR_CANNOT_CALL_FUNCTION 4019 Невозможно вызвать функцию
ERR_EXTERNAL_EXPERT_CALLS_NOT_ALLOWED 4020 Вызовы внешних библиотечных функций не разрешены
ERR_NOT_ENOUGH_MEMORY_FOR_RETURNED_STRING 4021 Недостаточно памяти для строки, возвращаемой из функции
ERR_SYSTEM_BUSY 4022 Система занята
ERR_INVALID_FUNCTION_PARAMETERS_COUNT 4050 Неправильное количество параметров функции
ERR_INVALID_FUNCTION_PARAMETER_VALUE 4051 Недопустимое значение параметра функции
ERR_STRING_FUNCTION_INTERNAL_ERROR 4052 Внутренняя ошибка строковой функции
ERR_SOME_ARRAY_ERROR 4053 Ошибка массива
ERR_INCORRECT_SERIES_ARRAY_USING 4054 Неправильное использование массива-таймсерии
ERR_CUSTOM_INDICATOR_ERROR 4055 Ошибка пользовательского индикатора
ERR_INCOMPATIBLE_ARRAYS 4056 Массивы несовместимы
ERR_GLOBAL_VARIABLES_PROCESSING_ERROR 4057 Ошибка обработки глобальныех переменных
ERR_GLOBAL_VARIABLE_NOT_FOUND 4058 Глобальная переменная не обнаружена
ERR_FUNCTION_NOT_ALLOWED_IN_TESTING_MODE 4059 Функция не разрешена в тестовом режиме
ERR_FUNCTION_NOT_CONFIRMED 4060 Функция не подтверждена
ERR_SEND_MAIL_ERROR 4061 Ошибка отправки почты
ERR_STRING_PARAMETER_EXPECTED 4062 Ожидается параметр типа string
ERR_INTEGER_PARAMETER_EXPECTED 4063 Ожидается параметр типа integer
ERR_DOUBLE_PARAMETER_EXPECTED 4064 Ожидается параметр типа double
ERR_ARRAY_AS_PARAMETER_EXPECTED 4065 В качестве параметра ожидается массив
ERR_HISTORY_WILL_UPDATED 4066 Запрошенные исторические данные в состоянии обновления
ERR_TRADE_ERROR 4067 Ошибка при выполнении торговой операции
ERR_END_OF_FILE 4099 Конец файла
ERR_SOME_FILE_ERROR 4100 Ошибка при работе с файлом
ERR_WRONG_FILE_NAME 4101 Неправильное имя файла
ERR_TOO_MANY_OPENED_FILES 4102 Слишком много открытых файлов
ERR_CANNOT_OPEN_FILE 4103 Невозможно открыть файл
ERR_INCOMPATIBLE_ACCESS_TO_FILE 4104 Несовместимый режим доступа к файлу
ERR_NO_ORDER_SELECTED 4105 Ни один ордер не выбран
ERR_UNKNOWN_SYMBOL 4106 Неизвестный символ
ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции
ERR_INVALID_TICKET 4108 Неверный номер тикета
ERR_TRADE_NOT_ALLOWED 4109 Торговля не разрешена
ERR_LONGS_NOT_ALLOWED 4110 Длинные позиции не разрешены
ERR_SHORTS_NOT_ALLOWED 4111 Короткие позиции не разрешены
ERR_OBJECT_ALREADY_EXISTS 4200 Объект уже существует
ERR_UNKNOWN_OBJECT_PROPERTY 4201 Запрошено неизвестное свойство объекта
ERR_OBJECT_DOES_NOT_EXIST 4202 Объект не существует
ERR_UNKNOWN_OBJECT_TYPE 4203 Неизвестный тип объекта
ERR_NO_OBJECT_NAME 4204 Нет имени объекта
ERR_OBJECT_COORDINATES_ERROR 4205 Ошибка координат объекта
ERR_NO_SPECIFIED_SUBWINDOW 4206 Не найдено указанное подокно
ERR_SOME_OBJECT_ERROR 4207 Ошибка при работе с объектом
if(NewBar() && CheckIfOpenOrdersByMagicNumber(MagicNumber))
     {
      double lots          = OrderLots();
      RefreshRates();
      //double trailingStop = Stoploss_Multiplier*ATR();
      if(OrderSelect(ticket,SELECT_BY_TICKET))
        {
         //+--------------------------------------------------------for BUY order--------------------------------------------------------------+
         if(OrderSymbol() == Symbol() && OrderType()==OP_BUY)
           {
            //+--------------------------------------------------------Closing Order--------------------------------------------------------------+
            if(CheckClosePosition(1)==1)
              {
               bool resCO = OrderClose(ticket,lots,Bid,slippage);
               Print("Buy order #",OrderTicket(), " closed");
               if(!resCO)
                 {
                  Print("Error in Closing Order. Error code=",GetLastError());
                  return;
                 }
               else
                  Print("Closing Order successfully for ticket: #", OrderTicket());
              }
 
            //+---------------------------------------------------trailing stop loss Plan---------------------------------------------------------+
            double trailingStop = Bid-Stoploss_Multiplier*ATR(1);
            if(OrderStopLoss()<trailingStop)
              {
               bool resSL = OrderModify(ticket,OrderOpenPrice(),trailingStop,OrderTakeProfit(),0);
               if(!resSL)
                 {
                  Print("Error in Order Modify. Error code=",GetLastError());
                  return;
                 }
               else
                  Print("Order modify successfully for ticket: #", OrderTicket());
              }
            else
               return;
 
           }
 
         //+----------------------------------------------------------for SELL order-------------------------------------------------------------+
         if(OrderSymbol() == Symbol() && OrderType()==OP_SELL)
           {
            //+--------------------------------------------------------Closing Order-------------------------------------------------------------+
            if(CheckClosePosition(1)==2)
              {
               bool resCO = OrderClose(ticket,lots,Ask,slippage);
               Print("Sell order #",OrderTicket(), " closed");
               if(!resCO)
                 {
                  Print("Error in Closing Order. Error code=",GetLastError());
                  return;
                 }
               else
                  Print("Closing Order successfully for ticket: #", OrderTicket());
              }
 
            //+-----------------------------------------------------trailing stop loss Plan---------------------------------------------------------+
            double trailingStop = Ask+Stoploss_Multiplier*ATR(1);
            if(OrderStopLoss()>trailingStop)
              {
               bool resSL = OrderModify(ticket,OrderOpenPrice(),trailingStop,OrderTakeProfit(),0);
               if(!resSL)
                 {
                  Print("Error in OrderModify. Error code=",GetLastError());
                  return;
                 }
               else
                  Print("Order modify successfully for ticket: #", OrderTicket());
              }
            else
               return;
 
           }
        }
     }

При работе торгового терминала MetaTrader 4 возникают различные ошибки при обмене информацией с торговым сервером, который в ответ на ошибочные запросы отсылает программе MetaTrader 4 не описание ошибки, а цифровой код ошибки — специальную комбинацию цифр, которая отображается во вкладках Эксперты и Журнал (примеры этих вкладок и описание типичной ситуации при возникновении ошибок можно найти в статье «Обзор торгового терминала MetaTrader 4»). Не все торговые терминалы MetaTrader 4 различных дилинговых центров дают расшифровку цифрового кода, а если она и есть, то — на английском языке. Чтобы понять, почему программа МетаТрейдер 4 работает неправильно, полезно знать расшифровку цифрового кода — какой комбинации цифр соответствует определенное описание ошибки. В некоторых случаях эта информация может сильно облегчить «жизнь» трейдеру и помочь быстрее справиться с возникшей проблемой.

Итак, предлагаем Вашему вниманию расшифровку кодов ошибок, которые можно встретить при работе с торговым терминалом MetaTrader 4:

Коды ошибок, возвращаемые торговым сервером терминалу MetaTrader 4.

  • Error: 0 — Нет ошибки.
  • Error: 1 — Нет ошибки, но результат неизвестен.
  • Error: 2 — Общая ошибка.
  • Error: 3 — Неправильные параметры.
  • Error: 4 — Торговый сервер занят.
  • Error: 5 — Старая версия клиентского терминала.
  • Error: 6 — Нет связи с торговым сервером.
  • Error: 7 — Недостаточно прав.
  • Error: 8 — Слишком частые запросы.
  • Error: 9 — Недопустимая операция, нарушающая функционирование сервера.
  • Error: 64 — Счёт заблокирован.
  • Error: 65 — Неправильный номер счета.
  • Error: 128 — Истек срок ожидания совершения сделки.
  • Error: 129 — Неправильная цена.
  • Error: 130 — Неправильные стопы.
  • Error: 131 — Неправильный объём.
  • Error: 132 — Рынок закрыт.
  • Error: 133 — Торговля запрещена.
  • Error: 134 — Недостаточно денег для совершения операции.
  • Error: 135 — Цена изменилась.
  • Error: 136 — Нет цен.
  • Error: 137 — Брокер занят.
  • Error: 138 — Новые цены.
  • Error: 139 — Ордер заблокирован и уже обрабатывается.
  • Error: 140 — Разрешена только покупка.
  • Error: 145 — Модификация запрещена, так как ордер слишком близок к рынку.
  • Error: 146 — Подсистема торговли занята.
  • Error: 147 — Использование даты истечения ордера запрещено брокером.
  • Error: 148 — Количество открытых и отложенных ордеров достигло предела, установленного брокером.
  • Error: 149 — Попытка открыть противоположную позицию к уже существующей в случае, если хеджирование запрещено.
  • Error: 150 — Попытка закрыть позицию по инструменту в противоречии с правилом FIFO.

Коды ошибок выполнения MQL4-программы (советника):

  • Error: 4000 — Нет ошибки.
  • Error: 4001 — Неправильный указатель функции.
  • Error: 4002 — Индекс массива — вне диапазона.
  • Error: 4003 — Нет памяти для стека функций.
  • Error: 4004 — Переполнение стека после рекурсивного вызова.
  • Error: 4005 — На стеке нет памяти для передачи параметров.
  • Error: 4006 — Нет памяти для строкового параметра.
  • Error: 4007 — Нет памяти для временной строки.
  • Error: 4008 — Неинициализированная строка.
  • Error: 4009 — Неинициализированная строка в массиве.
  • Error: 4010 — Нет памяти для строкового массива.
  • Error: 4011 — Слишком длинная строка.
  • Error: 4012 — Остаток от деления на ноль.
  • Error: 4013 — Деление на ноль.
  • Error: 4014 — Неизвестная команда.
  • Error: 4015 — Неправильный переход.
  • Error: 4016 — Неинициализированный массив.
  • Error: 4017 — Вызовы DLL не разрешены.
  • Error: 4018 — Невозможно загрузить библиотеку.
  • Error: 4019 — Невозможно вызвать функцию.
  • Error: 4020 — Вызовы внешних библиотечных функций не разрешены.
  • Error: 4021 — Недостаточно памяти для строки, возвращаемой из функции.
  • Error: 4022 — Система занята.
  • Error: 4050 — Неправильное количество параметров функции.
  • Error: 4051 — Недопустимое значение параметра функции.
  • Error: 4052 — Внутренняя ошибка строковой функции.
  • Error: 4053 — Ошибка массива.
  • Error: 4054 — Неправильное использование массива-таймсерии.
  • Error: 4055 — Ошибка пользовательского индикатора.
  • Error: 4056 — Массивы несовместимы.
  • Error: 4057 — Ошибка обработки глобальныех переменных.
  • Error: 4058 — Глобальная переменная не обнаружена.
  • Error: 4059 — Функция не разрешена в тестовом режиме.
  • Error: 4060 — Функция не разрешена.
  • Error: 4061 — Ошибка отправки почты.
  • Error: 4062 — Ожидается параметр типа string.
  • Error: 4063 — Ожидается параметр типа integer.
  • Error: 4064 — Ожидается параметр типа double.
  • Error: 4065 — В качестве параметра ожидается массив.
  • Error: 4066 — Запрошенные исторические данные в состоянии обновления.
  • Error: 4067 — Ошибка при выполнении торговой операции.
  • Error: 4099 — Конец файла.
  • Error: 4100 — Ошибка при работе с файлом.
  • Error: 4101 — Неправильное имя файла.
  • Error: 4102 — Слишком много открытых файлов.
  • Error: 4103 — Невозможно открыть файл.
  • Error: 4104 — Несовместимый режим доступа к файлу.
  • Error: 4105 — Ни один ордер не выбран.
  • Error: 4106 — Неизвестный символ.
  • Error: 4107 — Неправильный параметр цены для торговой функции.
  • Error: 4108 — Неверный номер тикета.
  • Error: 4109 — Торговля не разрешена. Необходимо включить опцию Разрешить советнику торговать в свойствах эксперта.
  • Error: 4110 — Длинные позиции не разрешены — необходимо проверить свойства эксперта.
  • Error: 4111 — Короткие позиции не разрешены — необходимо проверить свойства эксперта.
  • Error: 4200 — Объект уже существует.
  • Error: 4201 — Запрошено неизвестное свойство объекта.
  • Error: 4202 — Объект не существует.
  • Error: 4203 — Неизвестный тип объекта.
  • Error: 4204 — Нет имени объекта.
  • Error: 4205 — Ошибка координат объекта.
  • Error: 4206 — Не найдено указанное подокно.
  • Error: 4207 — Ошибка при работе с объектом.

В исполняющей подсистеме клиентского терминала имеется возможность сохранения кода ошибки в случае ее возникновения при выполнении mql-программы. Для каждой исполняемой mql-программы предусмотрена своя собственная специальная переменная last_error. Перед запуском функции OnInit() переменная last_error обнуляется. В случае возникновения патовой ситуации во время вычислений или во время вызова встроенной функции переменная last_error принимает соответствующий код ошибки. Значение, сохраненное в этой переменной, можно получить при помощи функции GetLastError(). При этом переменная last_error обнуляется.

Существует ряд критических ошибок, при возникновении которых выполнение программы немедленно завершается:

Константа Значение Описание
ERR_WRONG_FUNCTION_POINTER 4001 При вызове внутренней функции обнаружен неправильный указатель вызываемой функции
ERR_NO_MEMORY_FOR_CALL_STACK 4003 При вызове внутренней функции невозможно перераспределить память для стека вызовов функции
ERR_RECURSIVE_STACK_OVERFLOW 4004 При рекурсивном вызове функции исчерпан стек данных
ERR_NO_MEMORY_FOR_PARAM_STRING 4006 При вызове внутренней функции невозможно распределить память для передачи строки в качестве параметра функции
ERR_NO_MEMORY_FOR_TEMP_STRING 4007 Невозможно распределить временный буфер для операций со строками
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 При присвоении невозможно перераспределить память для строки в массиве
ERR_TOO_LONG_STRING 4011 При присвоении слишком длинная результатная строка для помещения в служебный буфер (невозможно перераспределить память для служебного буфера)
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 Деление на 0 при взятии остатка от деления
ERR_ZERO_DIVIDE 4013 Деление на 0
ERR_UNKNOWN_COMMAND 4014 Неизвестная инструкция

Если выполнение программы было прервано из-за критической ошибки, то при следующем запуске функции OnTick или функции OnDeinit можно прочитать код этой ошибки, используя функцию GetLastError(). Перед выполнением функций OnTick и OnDeinit переменная last_error не сбрасывается.

Существует ряд критических ошибок, связанных с вызовом импортируемых функций, при возникновении которых выполнение эксперта или индикатора немедленно прерывается и функция OnTick не запускается до тех пор, пока не будет произведена переинициализация эксперта или индикатора.

Константа Значение Описание
ERR_CANNOT_LOAD_LIBRARY 4018 При вызове импортируемой функции произошла ошибка загрузки dll или ex4-библиотеки
ERR_CANNOT_CALL_FUNCTION 4019 При вызове импортируемой из функции выяснилось, что dll или ex4-библиотека не содержит эту функцию
ERR_DLL_CALLS_NOT_ALLOWED 4017 При вызове импортируемой из dll функции выяснилось, что установлен запрет на вызовы из dll
ERR_EXTERNAL_CALLS_NOT_ALLOWED 4020 При вызове импортируемой из ex4-библиотеки выяснилось, что установлен запрет на вызовы из ex4
ERR_FUNCTION_NOT_CONFIRMED 4060 Не подтвержден вызов импортируемой из dll функции. Если нажата кнопка «Нет», то выполнение программы не прерывается. Если нажата кнопка «Отмена», то выполнение программы немедленно прерывается

Остальные ошибки не прерывают работу программы.

Константа Значение Описание
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 Обращение к элементу массива, номер которого находится за пределами массива
ERR_NOT_INITIALIZED_STRING 4008 Неинициализированная строка; строке, участвующей в каком-либо выражении, не присвоено никакого значения
ERR_NOT_INITIALIZED_ARRAYSTRING 4009 Неинициализированная строка в массиве строк; строке, участвующей в каком-либо выражении, не присвоено никакого значения
ERR_NO_MEMORY_FOR_RETURNED_STR 4021 Невозможно перераспределить память для строки, возвращаемой из функции

Никогда не генерируется код ошибки ERR_NO_MQLERROR (4000).

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

Константа Значение Описание
ERR_WRONG_FUNCTION_POINTER 4001 При вызове внутренней функции обнаружен неправильный указатель вызываемой функции
ERR_UNKNOWN_COMMAND 4014 Неизвестная инструкция
ERR_NOT_INITIALIZED_ARRAY 4016 Неинициализированный массив
ERR_INVALID_FUNCTION_PARAMSCNT 4050 Неверное количество параметров, передаваемых во встроенную функцию
ERR_STRING_FUNCTION_INTERNAL 4052 Ошибка при работе со строками
ERR_TRADE_ERROR 4067 Ошибка при выполнении торговой функции
ERR_SOME_OBJECT_ERROR 4207 Ошибка при работе с объектами

Существует несколько встроенных функций, которые всегда меняют значение переменной last_error.

Функция Коды ошибок
AccountFreeMarginCheck ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_UNKNOWN_SYMBOL (4106), ERR_NOT_ENOUGH_MONEY (134)
OrderSend ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), ERR_LONGS_NOT_ALLOWED (4110), ERR_SHORTS_NOT_ALLOWED (4111), коды от торгового сервера
OrderClose ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderCloseBy ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderDelete ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
OrderModify ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INVALID_PRICE_PARAM (4107), ERR_INVALID_TICKET (4108), ERR_UNKNOWN_SYMBOL (4106), ERR_TRADE_NOT_ALLOWED (4109), коды от торгового сервера
GetLastError ERR_NO_ERROR (0)

Некоторые функции меняют значение переменной last_error только в случае возникновения какой-либо ошибки.

Функция Коды ошибок
ArrayBsearch ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayCopy ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayCopyRates ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062),
ArrayCopySeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_HISTORY_WILL_UPDATED (4066), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayDimension ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayGetAsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayInitialize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayIsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArrayMaximum ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayMinimum ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayRange ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INTEGER_PARAMETER_EXPECTED (4063), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArrayResize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
ArraySetAsSeries ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySize ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
ArraySort ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileClose ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileDelete ERR_WRONG_FILE_NAME (4101), ERR_SOME_FILE_ERROR (4100)
FileFlush ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileIsEnding ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileIsLineEnding ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileOpen ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileOpenHistory ERR_TOO_MANY_OPENED_FILES (4102), ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100), ERR_CANNOT_OPEN_FILE (4103)
FileReadArray ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_ARRAY_ERROR (4053), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadDouble ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_END_OF_FILE (4099)
FileReadInteger ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_END_OF_FILE (4099)
FileReadNumber ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_END_OF_FILE (4099)
FileReadString ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_TOO_LONG_STRING (4011), ERR_END_OF_FILE (4099)
FileSeek ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileSize ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileTell ERR_INVALID_FUNCTION_PARAMVALUE (4051)
FileWrite ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_SOME_FILE_ERROR (4100)
FileWriteDouble ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteInteger ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100)
FileWriteString ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100), ERR_STRING_PARAMETER_EXPECTED (4062)
FileWriteArray ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCOMPATIBLE_FILEACCESS (4104), ERR_SOME_FILE_ERROR (4100),
GlobalVariableCheck ERR_STRING_PARAMETER_EXPECTED (4062)
GlobalVariableDel ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableGet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
GlobalVariablesDeleteAll ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableSet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLES_PROCESSING (4057)
GlobalVariableSetOnCondition ERR_STRING_PARAMETER_EXPECTED (4062), ERR_GLOBAL_VARIABLE_NOT_FOUND (4058)
iCustom ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
технические индикаторы, функции доступа к таймсериям ERR_HISTORY_WILL_UPDATED (4066)
технические индикаторы OnArray ERR_ARRAY_AS_PARAMETER_EXPECTED (4065), ERR_SOME_ARRAY_ERROR (4053)
IndicatorBuffers ERR_INVALID_FUNCTION_PARAMVALUE (4051)
IndicatorDigits ERR_INVALID_FUNCTION_PARAMVALUE (4051)
IndicatorShortName ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MarketInfo ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_UNKNOWN_SYMBOL (4106), ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathArccos ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathArcsin ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MathMod ERR_ZERO_DIVIDE (4013)
MathSqrt ERR_INVALID_FUNCTION_PARAMVALUE (4051)
MessageBox ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
ObjectCreate ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_ALREADY_EXISTS (4200), ERR_NO_SPECIFIED_SUBWINDOW (4206)
ObjectDelete ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectFind ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204)
ObjectGet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetFiboDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectGetShiftByValue ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectGetValueByShift ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_OBJECT_COORDINATES_ERROR (4205)
ObjectMove ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectName ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
ObjectSet ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectSetText ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
ObjectSetFiboDescription ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_OBJECT_DOES_NOT_EXIST (4202), ERR_UNKNOWN_OBJECT_TYPE (4203), ERR_UNKNOWN_OBJECT_PROPERTY (4201)
ObjectType ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NO_OBJECT_NAME (4204), ERR_OBJECT_DOES_NOT_EXIST (4202)
OrderClosePrice ERR_NO_ORDER_SELECTED (4105)
OrderCloseTime ERR_NO_ORDER_SELECTED (4105)
OrderComment ERR_NO_ORDER_SELECTED (4105)
OrderCommission ERR_NO_ORDER_SELECTED (4105)
OrderExpiration ERR_NO_ORDER_SELECTED (4105)
OrderLots ERR_NO_ORDER_SELECTED (4105)
OrderMagicNumber ERR_NO_ORDER_SELECTED (4105)
OrderOpenPrice ERR_NO_ORDER_SELECTED (4105)
OrderOpenTime ERR_NO_ORDER_SELECTED (4105)
OrderPrint ERR_NO_ORDER_SELECTED (4105)
OrderProfit ERR_NO_ORDER_SELECTED (4105)
OrderStopLoss ERR_NO_ORDER_SELECTED (4105)
OrderSwap ERR_NO_ORDER_SELECTED (4105)
OrderSymbol ERR_NO_ORDER_SELECTED (4105)
OrderTakeProfit ERR_NO_ORDER_SELECTED (4105)
OrderTicket ERR_NO_ORDER_SELECTED (4105)
OrderType ERR_NO_ORDER_SELECTED (4105)
PlaySound ERR_WRONG_FILE_NAME (4101)
SendFTP ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_CUSTOM_INDICATOR_ERROR (4055), ERR_STRING_PARAMETER_EXPECTED (4062)
SendMail ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_FUNCTION_NOT_CONFIRMED (4060), ERR_SEND_MAIL_ERROR (4061)
SetIndexArrow ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexBuffer ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_INCORRECT_SERIESARRAY_USING (4054), ERR_INCOMPATIBLE_ARRAYS (4056)
SetIndexDrawBegin ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexEmptyValue ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexLabel ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_STRING_PARAMETER_EXPECTED (4062)
SetIndexShift ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetIndexStyle ERR_INVALID_FUNCTION_PARAMVALUE (4051)
SetLevelValue ERR_INVALID_FUNCTION_PARAMVALUE (4051)
Sleep ERR_CUSTOM_INDICATOR_ERROR (4055)
StringFind ERR_STRING_PARAMETER_EXPECTED (4062)
StringGetChar ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringLen ERR_STRING_PARAMETER_EXPECTED (4062)
StringSetChar ERR_STRING_PARAMETER_EXPECTED (4062), ERR_INVALID_FUNCTION_PARAMVALUE (4051), ERR_NOT_INITIALIZED_STRING (4008), ERR_TOO_LONG_STRING (4011), ERR_ARRAY_INDEX_OUT_OF_RANGE (4002)
StringSubstr ERR_STRING_PARAMETER_EXPECTED (4062), ERR_TOO_LONG_STRING (4011)
StringTrimLeft ERR_STRING_PARAMETER_EXPECTED (4062)
StringTrimRight ERR_STRING_PARAMETER_EXPECTED (4062)
WindowIsVisible ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059)
WindowFind ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowHandle ERR_FUNC_NOT_ALLOWED_IN_TESTING (4059), ERR_STRING_PARAMETER_EXPECTED (4062), ERR_NOT_INITIALIZED_STRING (4008)
WindowScreenShot ERR_WRONG_FILE_NAME (4101), ERR_INVALID_FUNCTION_PARAMVALUE (4051)

Следующие функции не меняют значение переменной last_error ни при каких условиях:
AccountBalance, AccountCompany, AccountCredit, AccountCurrency, AccountEquity, AccountFreeMargin, AccountLeverage, AccountMargin, AccountName, AccountNumber, AccountProfit, AccountServer, Alert, CharToStr, Comment, Day, DayOfWeek, DayOfYear, DoubleToStr, GetTickCount, HideTestIndicators, Hour, IndicatorCounted, IsConnected, IsDemo, IsDllsAllowed, IsExpertEnabled, IsLibrariesAllowed, IsOptimization, IsStopped, IsTesting, IsTradeAllowed, IsTradeContextBusy, IsVisualMode, MathAbs, MathArctan, MathCeil, MathCos, MathExp, MathFloor, MathLog, MathMax, MathMin, MathPow, MathRand, MathRound, MathSin, MathSrand, MathTan, Minute, Month, NormalizeDouble, ObjectsDeleteAll, ObjectsTotal, OrderSelect, OrdersHistoryTotal, Period, Print, RefreshRates, Seconds, SetLevelStyle, StringConcatenate, StrToTime, StrToDouble, Symbol, TerminalCompany, TerminalName, TerminalPath, TimeCurrent, TimeDay, TimeDayOfWeek, TimeDayOfYear, TimeHour, TimeLocal, TimeMinute, TimeMonth, TimeSeconds, TimeToStr, TimeYear, UninitializeReason, WindowBarsPerChart, WindowFirstVisibleBar, WindowPriceOnDropped, WindowTimeOnDropped, WindowsTotal, WindowOnDropped, WindowRedraw, WindowXOnDropped, WindowYOnDropped, Year.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Mozabrick server error
  • Linuxdeployqt error the host system is too new
  • Moviepy error failed to read the duration of file
  • Linux ошибки сети
  • Movie recording has been stopped automatically как исправить

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии