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 | Ошибка при работе с объектом |
При работе торгового терминала 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 — Ошибка при работе с объектом.
Introduction
Some older programs can return errors in the new version of the MQL4 of compiler.
To avoid critical completion of programs, the previous version compiler handled many errors in the runtime environment. For example, division by zero or array out of range are critical errors and usually lead to application crash. Such errors occur only in some states for certain values of variables. Read this article to know how to handle such cases.
The new compiler can detect actual or potential sources of errors and improve code quality.
In this article, we discuss possible errors that can be detected during compilation of old programs and ways to fix them.
- Compilation Errors
- 1.1. Identifier coincides with a reserved word
- 1.2. Special characters in the names of variables and functions
- 1.3. Errors using the switch operator
- 1.4. Function return values
- 1.5. Arrays in function arguments
- Runtime Errors
- 2.1. Array out of range
- 2.2. Zero divide
- 2.3. Use of 0 instead of NULL for the current character
- 2.4. Unicode format strings and their use in a DLL
- 2.5. File sharing
- 2.6. Datetime conversion
- Compiler Warnings
- 3.1. Names of global and local variables coincide
- 3.2. Mismatch of types
- 3.3. Unused variables
1 Compilation Errors
If a program code contains errors, it cannot be compiled.
To fully control all errors, it is recommended to use strict compilation mode, which is set by the following directive:
#property strict
This mode greatly simplifies troubleshooting.
1.1. Identifier coincides with a reserved word
If the name of a variable or function coincides with one of the reserved words
int char[]; int char1[]; int char() { return(0); }
the compiler returns an error messages:
Figure 1. Errors «unexpected token» and «name expected»
To fix this error, you need to use the correct name of the variable or function.
1.2. Special characters in the names of variables and functions
If names of variables or functions contain special characters ($, @, point):
int $var1; int @var2; int var.3; void f@() { return; }
the compiler returns an error messages:
Figure 2. Errors «unknown symbol» and «semicolon expected»
To fix this error, you need to use correct function or variable names.
1.3. Errors using the switch operator
In the old version of the compiler you could use any values in expressions and constants of the switch operator:
void start() { double n=3.14; switch(n) { case 3.14: Print("Pi");break; case 2.7: Print("E");break; } }
In the new compiler, constants and expressions of the switch operator must be integers, so errors occur when you try to use such constructions:
Figure 3. Errors «illegal switch expression type» and «constant expression is not integral»
In such cases, you can use explicit comparison of numerical values, for example:
void start() { double n=3.14; if(n==3.14) Print("Pi"); else if(n==2.7) Print("E"); }
1.4. Return values of functions
All functions except void should return the declared type value. For example:
int function()
{
}
In strict compilation mode an error occurs:
Figure 4. Error «not all control paths return a value»
In default compilation mode, the compiler returns a warning:
Figure 5. Warning «not all control paths return a value»
If the return value of the function does not match the declared one:
int init() { return; }
an error is detected during strict compilation:
Figure 6. Error «function must return a value»
In default compilation mode, the compiler returns a warning:
Figure 7. Warning ‘return — function must return a value»
To fix such errors, add the return operator with the return value of the corresponding type to the function code.
1.5. Arrays in function arguments
In function arguments, arrays are now passed by reference only.
double ArrayAverage(double a[]) { return(0); }
In strict compilation mode, this code will cause an error:
Figure 8. Compiler error «arrays passed by reference only»
In default compilation mode, the compiler returns a warning:
Figure 9. Compiler warning «arrays passed by reference only»
To fix this error, you must explicitly specify that the array is passed by reference by adding the prefix & before the name of the array:
double ArrayAverage(double &a[]) { return(0); }
It should be noted that now constant arrays (Time[], Open[], High[], Low[], Close[], Volume[]) cannot be passed by reference. For example, the following call:
ArrayAverage(Open);
regardless of the compilation mode leads to an error:
Figure 10. Error ‘Open’ — constant variable cannot be passed as reference
To avoid these errors, copy the required data from the constant array:
double OpenPrices[]; ArrayCopy(OpenPrices,Open,0,0,WHOLE_ARRAY); ArrayAverage(OpenPrices);
2. Runtime Errors
Errors that occur during the execution of the program code are called runtime errors. Such errors usually depend on the state of a program and are associated with incorrect values of the variables.
For example, if a variable is used as an index of array elements, its negative values will inevitably lead to the Array out of Range error.
2.1. Array out of Range
This error often occurs in indicators when accessing indicator buffers. The IndicatorCounted() function returns the number of bars unchanged since the last indicator call. Indicator values on previously calculated bars do not need recalculation, so for faster calculations you only need to process the last few bars.
Most indicators that use this method of calculation optimization look like this:
int start() { if (Bars<100) return(-1); int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); int limit=Bars-counted_bars; if(counted_bars==0) { limit--; limit-=10; } else { limit++; } for (int i=limit; i>0; i--) { Buff1[i]=0.5*(Open[i+5]+Close[i+10]) } }
Often the case of counted_bars==0 is handled incorrectly (the initial limit position should be reduced by the value equal to 1 + maximum index relative to the loop variable).
Also, remember that at the time of the start() function execution we can access elements of arrays of indicator buffers from 0 to Bars ()-1. If you need to work with the arrays that are not indicator buffers, increase their size using the ArrayResize() function in accordance with the current size of indicator buffers. The maximum index of the element to address can also be obtained by calling ArraySize() with one of the indicator buffers used as an argument.
2.2. Zero Divide
The Zero Divide error occurs when a divisor in a division operation is equal to zero:
void OnStart() { int a=0, b=0,c; c=a/b; Print("c=",c); }
When you run this script, an error message appears in the Experts tab and the program shuts down:
Figure 11. Error message «zero divide»
Usually this error occurs when the value of the divisor is determined by the values of any external data. For example, if trade parameters are analyzed, the value of the used margin is equal to 0 if there are no open orders. Another example: if the analyzed data are read from a file, we can not guarantee correct operation if the file is not available. So you should take into account such cases and process them correctly.
The easiest way is to check the divisor before the division operation and report an incorrect parameter value:
void OnStart() { int a=0, b=0,c; if(b!=0) {c=a/b; Print(c);} else {Print("Error: b=0"); return; }; }
This does not cause a critical error, but a message about an incorrect parameter value appears and program shuts down:
Figure 12. Incorrect divider message
2.3. Use of 0 instead of NULL for the current character
In the old version of the compiler 0 (zero) could be used as an argument in functions that require specification of a financial instrument.
For example, the value of the Moving Average technical indicator for the current symbol could be requested as follows:
AlligatorJawsBuffer[i]=iMA(0,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
In the new compiler you should explicitly specify NULL to specify the current symbol:
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
In addition, the current symbol and chart period can be specified using the Symbol() and Period() functions.
AlligatorJawsBuffer[i]=iMA(Symbol(),Period(),13,8,MODE_SMMA,PRICE_MEDIAN,i);
2.4. Unicode strings and their use in a DLL
Strings are now represented as a sequence of Unicode characters.
Remember this and use appropriate Windows functions. For example, when using the wininet.dll library instead InternetOpenA() and InternetOpenUrlA(), you should call InternetOpenW() and InternetOpenUrlW().
The internal structure of strings has changed in MQL4 (now it takes 12 bytes), and the MqlString structure should be used when passing strings to DLL:
#pragma pack(push,1) struct MqlString { int size; LPWSTR buffer; int reserved; }; #pragma pack(pop,1)
2.5. File sharing
In the new MQL4, FILE_SHARE_WRITE and FILE_SHARE_READ flags should explicitly be specified for shared use when opening files.
If the flags are absent, the file is opened in exclusive mode and cannot be opened by anyone else till it is closed by the user who opened it.
For example, when working with offline charts share flags should be explicitly specified:
ExtHandle=FileOpenHistory(c_symbol+i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ);
For more details please read Offline Charts in the New MQL4.
2.6. Datetime Conversion
Conversion of datetime to a string now depends on the compilation mode:
datetime date=D'2014.03.05 15:46:58'; string str="mydate="+date;
For example, trying to work with files whose name contains a colon causes an error.
3. Compiler Warnings
Compiler Warnings are informative and are not error messages, but they indicate possible error sources.
A clear code should not contain warnings.
3.1. Names of global and local variables coincide
If variables on the global and local levels have similar names:
int i; void OnStart() { int i=0,j=0; for (i=0; i<5; i++) {j+=i;} PrintFormat("i=%d, j=%d",i,j); }
the compiler displays a warning showing the line number on which the global variable is declared:
Figure 13. Warning «declaration of ‘%’ hides global declaration at line %»
To fix such warnings correct names of global variables.
3.2. Mismatch of Types
The new compiler has a new typecasting operation.
#property strict void OnStart() { double a=7; float b=a; int c=b; string str=c; Print(c); }
In strict compilation mode the compiler shows warnings if types mismatch:
Figure 14. Warnings «possible loss of data due to type conversion» and «implicit conversion from ‘number’ to ‘string’
In this example, the compiler warns about the possible loss of accuracy for different data types assigned and implicit conversion from int to string.
To fix the warning use explicit typecasting:
#property strict void OnStart() { double a=7; float b=(float)a; int c=(int)b; string str=(string)c; Print(c); }
3.3. Unused Variables
The presence of variables that are not used in the program code (superfluous entities) is not a good habit.
void OnStart() { int i,j=10,k,l,m,n2=1; for(i=0; i<5; i++) {j+=i;} }
Reports of such variables are displayed regardless of the compilation mode:
Figure 15. Warning «variable ‘%’ not used’
To fix it, remove unused variables from your code.
Conclusions
The article describes common problems that may occur during compilation of old programs that contain errors.
In all cases it is recommended to use strict compilation mode for program debugging.
В исполняющей подсистеме клиентского терминала имеется возможность сохранения кода ошибки в случае ее возникновения при выполнении 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.
Содержание
- 1 Коды ошибок:
- 1.1 Коды ошибок выполнения MQL4 программы:
- 1.2 Похожие статьи:
Очень часто в торговом терминале возникают ошибки при тестировании или оптимизации советников форекс, все ошибки можно увидеть в лог-файлах МТ4, а вот что означают коды ошибок, мы рассмотрим в этой статье:
Ниже представлена таблица кодов ошибок и их описание, поэтому просмотрев таблицу вы сразу поймете что не так с советником или его параметрами и на какой параметр нужно обратить внимание при тестировании, чтоб исправить ошибку.
Так, например, если при тесте возникает ошибка error 130, то становится понятно, что функция советника пытается изменить или установить стоп-лосс или тейк-профит слишком близко к текущей цене на рынке, ближе чем разрешает ваш БРОКЕР ФОРЕКС.
Коды ошибок:
GetLastError() — функция, возвращающая коды ошибок при тесте. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.
Коды ошибок, возвращаемые торговым сервером или клиентским терминалом MetaTrader 4:
Значение | Описание |
---|---|
0 | Нет ошибки |
1 | Нет ошибки, но результат неизвестен |
2 | Общая ошибка |
3 | Неправильные параметры |
4 | Торговый сервер занят |
5 | Старая версия клиентского терминала |
6 | Нет связи с торговым сервером |
7 | Недостаточно прав |
8 | Слишком частые запросы |
9 | Недопустимая операция нарушающая функционирование сервера |
64 | Счет заблокирован |
65 | Неправильный номер счета |
128 | Истек срок ожидания совершения сделки |
129 | Неправильная цена |
130 | Неправильные стопы |
131 | Неправильный объем |
132 | Рынок закрыт |
133 | Торговля запрещена |
134 | Недостаточно денег для совершения операции |
135 | Цена изменилась |
136 | Нет цен |
137 | Брокер занят |
138 | Новые цены |
139 | Ордер заблокирован и уже обрабатывается |
140 | Разрешена только покупка |
141 | Слишком много запросов |
145 | Модификация запрещена, так как ордер слишком близок к рынку |
146 | Подсистема торговли занята |
147 | Использование даты истечения ордера запрещено брокером |
148 | Количество открытых и отложенных ордеров достигло предела, установленного брокером. |
Коды ошибок выполнения MQL4 программы:
Значение | Описание |
---|---|
4000 | Нет ошибки |
4001 | Неправильный указатель функции |
4002 | Индекс массива — вне диапазона |
4003 | Нет памяти для стека функций |
4004 | Переполнение стека после рекурсивного вызова |
4005 | На стеке нет памяти для передачи параметров |
4006 | Нет памяти для строкового параметра |
4007 | Нет памяти для временной строки |
4008 | Неинициализированная строка |
4009 | Неинициализированная строка в массиве |
4010 | Нет памяти для строкового массива |
4011 | Слишком длинная строка |
4012 | Остаток от деления на ноль |
4013 | Деление на ноль |
4014 | Неизвестная команда |
4015 | Неправильный переход |
4016 | Неинициализированный массив |
4017 | Вызовы DLL не разрешены |
4018 | Невозможно загрузить библиотеку |
4019 | Невозможно вызвать функцию |
4020 | Вызовы внешних библиотечных функций не разрешены |
4021 | Недостаточно памяти для строки, возвращаемой из функции |
4022 | Система занята |
4050 | Неправильное количество параметров функции |
4051 | Недопустимое значение параметра функции |
4052 | Внутренняя ошибка строковой функции |
4053 | Ошибка массива |
4054 | Неправильное использование массива-таймсерии |
4055 | Ошибка пользовательского индикатора |
4056 | Массивы несовместимы |
4057 | Ошибка обработки глобальныех переменных |
4058 | Глобальная переменная не обнаружена |
4059 | Функция не разрешена в тестовом режиме |
4060 | Функция не подтверждена |
4061 | Ошибка отправки почты |
4062 | Ожидается параметр типа string |
4063 | Ожидается параметр типа integer |
4064 | Ожидается параметр типа double |
4065 | В качестве параметра ожидается массив |
4066 | Запрошенные исторические данные в состоянии обновления |
4067 | Ошибка при выполнении торговой операции |
4099 | Конец файла |
4100 | Ошибка при работе с файлом |
4101 | Неправильное имя файла |
4102 | Слишком много открытых файлов |
4103 | Невозможно открыть файл |
4104 | Несовместимый режим доступа к файлу |
4105 | Ни один ордер не выбран |
4106 | Неизвестный символ |
4107 | Неправильный параметр цены для торговой функции |
4108 | Неверный номер тикета |
4109 | Торговля не разрешена |
4110 | Длинные позиции не разрешены |
4111 | Короткие позиции не разрешены |
4200 | Объект уже существует |
4201 | Запрошено неизвестное свойство объекта |
4202 | Объект не существует |
4203 | Неизвестный тип объекта |
4204 | Нет имени объекта |
4205 | Ошибка координат объекта |
4206 | Не найдено указанное подокно |
4207 | Ошибка при работе с объектом |
Надеюсь данная таблица поможет вам побыстрее решить вопросы с ошибками в тестировании ПЛАТНЫХ и БЕСПЛАТНЫХ советников форекс!
Спасибо А. Парнюку за предоставление списка ошибок.
Похожие статьи:
Загрузка…
Когда Вы начинаете торговать на торговом терминале 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 – Ошибка при работе с объектом.
Содержание
- Терминал MetaTrader 4 – возможные проблемы при загрузке и установке
- Проблемы с прокси-сервером
- A. Установка терминала с рабочего компьютера
- Б. Установка терминала с домашнего компьютера
- Причина №1 – установку блокирует FireWall
- Причина №2 – системная папка
- Причина №3 – старый билд
- После загрузки терминал MetaTrader 4 не реагирует и не запускается
- Не могу запустить МТ4 на windows 10
- Что делать, если не работает терминал
- Содержание статьи:
- Почему не работает MetaTrader 4: выясняем причину
- Вот наиболее распространенные причины:
- Решаем проблему на вашей стороне
- У вас уже стоит МТ4 или МТ5?
- Проблема на стороне брокера: как устранить ошибку МТ4/MT5
- Дополнительные причины отсутствия связи
- Полезные статьи:
- Возможные проблемы с терминалом МТ4 и их решения
- 1.Терминал МТ4 показывает ошибку «Неверный счет».
- 2. Терминал МТ4 не может подключиться к торговому счету. Ошибка «Нет соединения».
- 3. Не открылся ордер, ошибка «Торговый поток занят».
- 4. Не могу открыть график финансового инструмента, он отсутствует в окне «Обзор рынка».
- 5. Можно ли изменить цвет рыночных и отложенных ордеров?
- 6. Можно ли открыть ордер произвольным лотом?
- 7. Как посмотреть график валютной пары на истории, он постоянно перемещается назад?
- 8. Как можно узнать спрэд валютной пары?
- 9. Как посмотреть всю историю совершенных сделок?
- 10. Как сделать, чтобы в терминале отображались сделки, открытые вручную так же, как у торговых советников?
- 11. При тестировании советника появляется надпись «Недостаточно места на диске С». Какой объем занимает терминал МТ4 на диске компьютера?
- 12. Не могу открыть ордер в терминале МТ4. Кнопка «Новый ордер» неактивна, серого цвета.
- 13. Можно ли открыть несколько счетов в одном клиентском терминале МТ4?
- 14. Я случайно удалил нужный объект. Можно ли его восстановить?
- 15. Есть ли возможность заходить в свой торговый терминал с любого компьютера?
- Не запускается MetaTrader 4
Терминал MetaTrader 4 – первый шаг на пути к торговле на рынке Forex. Он открывает доступ к рынку и дает инструменты для работы. В МТ4, как и в других программах, иногда возникают проблемы. Особенно неприятно столкнуться с проблемой в самом начале – во время загрузки и установки платформы на компьютер. В этой статье мы перечислим возможные причины проблем и способы их решения.
Проблемы с прокси-сервером
Множество компаний и организаций используют прокси-сервер на рабочих компьютерах. Прокси-сервер выступает посредником между Интернетом и компьютерами организации. Он защищает компьютеры сети от внешнего доступа, повышает производительность и предоставляет пользователям анонимный выход в Интернет. На домашнем компьютере прокси-сервер, как правило, не используется. Поэтому, если при установке терминала МТ4 на рабочий компьютер установщик требует данные прокси-сервера – нужно их ввести.
A. Установка терминала с рабочего компьютера
Если вы не знаете адрес прокси-сервера, обратитесь к сисадмину вашей компании или интернет провайдеру. Часто логин и пароль к прокси совпадают с параметрами для входа в систему. Если вы верно указали данные для прокси-сервера, установка продолжится и завершится успешно.
СОВЕТ: Вы можете самостоятельно проверить или настроить прокси через браузер, которым вы пользуетесь. Как это сделать с помощью Google Chrome:
Как проверить настройки прокси в Mozilla Firefox или Internet-Explorer:
Б. Установка терминала с домашнего компьютера
Проблема с прокси-сервером становится гораздо интереснее, когда прокси-сервер отсутствует. Следовательно, никаких данных для ввода не существует. Почему же установщик требует их от вас и как решить эту проблему?
Причина №1 – установку блокирует FireWall
На компьютере используется Firewall и антивирус, которые блокируют установку МТ4. Как результат, появляется окно для ввода прокси-сервера. Firewall – специальная программа, которая не допускает к компьютеру интернет-мошенников, вирусы, спам и т. д. Он контролирует входящий и исходящий трафик и скрывает рекламу.
Чтобы решить проблему, отключите Firewall или антивирус на время установки терминала.
Чтоб отключить Firewall, сделайте следущее:
Антивирус отключается в его настройках. Иногда убрать окно ввода данных прокси-сервера помогает переустановка антивируса и перезагрузка компьютера.
Причина №2 – системная папка
Проблема появляется из-за того, что установочный файл по умолчанию загружен в системную папку. Из-за настроек безопасности он не может “подтянуть” остальные файлы терминала. Попробуйте заново загрузить терминал, но уже в любую другую папку.
Причина №3 – старый билд
Если вы только что скачали терминал с сайта брокера, то эта проблема вас вряд ли касается. Но некоторые старые версии MetaTrader действительно вызывали проблему с прокси. Если у вашего терминала оказался устаревший билд (т. е. версия обновления), обновите его до последней версии через систему автоматического обновления «LiveUpdate». Билд указывается в меню терминала «Справка»/«О программе». Или же удалите устаревший терминал и установите МТ4 последней версии.
“Пациент скорее мертв, чем жив..”: терминал не запускается и не реагирует на ваши действия. Тогда попробуйте следующее:
Если устранить проблемы с установкой и запуском все же не удалось, а воспользоваться платформой срочно нужно – торгуйте через браузерную версию МеtaTrader 4.
Также обсудить проблему или найти дополнительную информацию можно на форуме Mql4.
Источник
Не могу запустить МТ4 на windows 10
Немного предыстории: стоял у меня дома ноут с виндой 8. Установил несколько терминалов, все работало. На работе установлен линукс и там тоже работало несколько терминалов (конечно через вайн). Дома терминалы открывал очень редко. Потом пришло обновление винды до 10. Само все установилось. Терминалы тоже работали нормально. Тут наверное с пол года (может даже с год) я совсем не запускал терминал дома.
И вот решил я запустить свой любимый МТ4, а не тут то было. Просто не запускается и все. Я уже привыкший к линуксу давай искать как можно посмотреть ошибки в командной строке, но тут же вспомнил, что это виндовс, здесь все сделано через одно место.
Что я только не делал. Я скачал терминалы с разных брокеров. Я устанавливал их в разные места (даже на флешку). Я останавливал работу антивирусника (аваст у меня стоит) и брендмаузера, плюс останавливал UAC (кажется так пишется). Я удалял все терминалы, устанавливал их заново. Устанавливал/запускал от администратора. Удалял все из папки ..AppDataRoamingMetaQuotes + еще кое какие данные в программ дата были, там тоже чистил.
Когда запускаю установленный терминал (любого брокера), то он в AppDataRoamingMetaQuotes создает 2 папки Crashes и WebInstall, а вот папку Terminal почему то не создает. Облазил весь яндекс и гугол. Везде предлагается заменять старым билдом (но все эти советы они были в 2015г, т.е. когда винда 10 только появилась). Хорошо. Достал я 2 файла старых билдов. Один 600 какой то, при замене он тоже не открывается. Другой 769 билд. Вот он при замене открывается, но валют нет ни одной, и внизу в правом углу написано общая ошибка. Причем демо счет делается, серваки видят, пинг есть, и больше ничего нет. Причем интересно предлагали (на форумах) запускать старый билд из под администратора, но у меня как раз из под админа он не запускается. Почему папка терминал не создается кажется нашел объяснение, так как она создается при первом запуске самой программы, а так как моя программа не запускается, то и папка не образуется. Причем если мы заменяем сам файл старым билдом, то эта папка появляется.
На компе не так уж много программ, офис, читалки разные, да несколько прог для работы. Переустанавливать винду это не вариант. Самое интересное, что когда запускаю терминал, то он в диспетчере задач появляется на секунду-две и пропадает. И ничего, ни ошибок, вообще ничего.
Еще был скачан МТ4 с этого сайта. Причем установка его сильно отличалась, так как к названию терминала добавились циферки 64. Почитав форум пришел к выводу, что метаквокеры под МТ4 выдают МТ5. Да, и он тоже не запускался. Но вот в папке c:Users. AppDataRoamingMetaQuotesWebInstall есть терминал МТ5 и причем он рабочий, но через несколько минут он сам обновляется и уже не запускается.
Так же скачивал с разных брокеров уже МТ5 (уже думал если такое дело то придется переучиваться прогить на МТ5), но и у них таже самая проблема. Они просто не запускаются.
Источник
Что делать, если не работает терминал
Для того, чтобы зарабатывать на финансовых рынках, трейдеру нужно держать в фокусе внимания многие факторы: четко считывать сигналы торговой системы, просчитывать риски, следить за собственными эмоциями.
Однако иногда сложности приходят с неожиданной стороны — перестает работать MetaTrader 4 или MetaTrader 5. Открывая торговый терминал, трейдер в правом нижнем углу видит надпись «Нет связи» и слышит характерный разочаровывающий звук, подтверждающий невозможность установить соединение.
Сегодня мы рассмотрим, как преодолеть эту проблему и вернуть себе доступ к рынку.
Содержание статьи:
Итак, вы обнаружили, что торговый терминал не работает. Что делать? Столкнувшись с отсутствием связи, необходимо выяснить причину этой неполадки. От нее будет зависеть способ решения проблемы.
Вот наиболее распространенные причины:
Рассмотрим, что делать в каждой из этих ситуаций.
Решаем проблему на вашей стороне
Часть причин обрыва связи в MetaTrader 4 (5) может быть на вашей стороне. Поэтому необходимо проверить свое оборудование.
Если пропал доступ к интернету, вы не только не сможете подключить терминал, но и зайти на другие сайты.
1. Откройте браузер и попробуйте зайти на любой сайт. Если не получилось, скорее всего, проблема в интернет-доступе.
2. Проверьте интернет-соединение, перезагрузите WI-FI роутер, при необходимости проведите перезагрузку компьютера.
3. Если это не сработало, свяжитесь со своим провайдером и выясните причину.
Отсутствие связи в MetaTrader 4 (5) может быть связано с проблемами взаимодействия программного обеспечения на вашем компьютере:
1. У вас установлена устаревшая версия Windows. Если версия ниже Windows 7, у платформы нет шансов подключиться, необходимо обновить операционную систему. Альтернативным вариантом будет переход на веб-версию терминала.
2. Возник конфликт с антивирусом или нет прав администратора. В этом случае нужно найти значок торгового терминала MetaTrader 4 (5) и, кликнув по нему правой кнопкой мыши, выбрать «Запуск от имени администратора». Если соединение не восстановилось, а проблема в конфликте с антивирусом, необходимо найти инструкцию разработчика и изучить, как ввести терминал в список исключений антивируса.
Есть еще один способ решить проблему конфликта с программным обеспечение на вашем компьютере в Windows OC:
1. Необходимо перейти в брандмауэр Windows.
2. Выбрать пункт «Разрешить взаимодействие с приложением или компонентом в брандмауэре Windows».
3. Определить путь доступа к дистрибутиву terminal.exe. Для этого из опции обзора нужно войти в Program Files и там найти дистрибутив MT4/MT5.
4. Нажать кнопку «Добавить», чтобы файл был занесен в список исключений.
У вас уже стоит МТ4 или МТ5?
Если нет, установите его прямо сейчас!
Проблема на стороне брокера: как устранить ошибку МТ4/MT5
В результате технического обслуживания на стороне брокера у клиента может пропасть связь с MetaTrader 4 (5). Для восстановления доступа необходимо пересканировать серверы.
1. В правом нижнем углу платформы найдите значок подключения и кликните по нему левой кнопкой мыши.
2. Выберите пункт «Пересканировать серверы».
3. В появившемся окне появится несколько серверов. Подключиться лучше к тому, у которого скорость соединения выше.
4. Если этот способ не решил проблему, откройте новый демо-счет, перейдя в пункт меню «Файл». Просканировав серверы, выберите в таблице «Новый демо-счет».
5. После этого потребуется перезапуск терминала, и вы сможете зайти под логином и паролем своего реального аккаунта.
Дополнительные причины отсутствия связи
Если после всех перечисленных выше манипуляций терминал MТ4 не работает, что делать? Проблема может быть на стороне интернет-провайдера или настроек интернет-сети. Если ваш провайдер использует прокси-серверы, чтобы ограничить доступ к определенным ресурсам, в их список может попасть и ваш брокер.
Для решения этой проблемы необходимо настраивать терминал таким образом, чтобы он не отправлял непосредственный запрос на IP брокерской компании, а обращался к частному прокси-серверу.
Если же вы открываете MetaTrader 4 (5), например, на работе или в какой-то корпоративной сети, администраторы могут изначально заблокировать там доступ к сторонним интернет-ресурсам. Из-за заблокированного порта 443 вы не сможете подключиться, если в настройки сети не внести соответствующие изменения.
СОВЕТЫ ОТ НАШИХ КЛИЕНТОВ
Иногда виснет от большого количества окон открытых. Нужно тогда закрывать терминал и очищать кэш с помощью программы Clear.
Как видите, большинство проблем со связью в торговой платформе можно решить самостоятельно. Главное, определить причину, а дальше следовать предложенным алгоритмам или обратиться за помощью к IT-специалисту.
Полезные статьи:
ПРЕДУПРЕЖДЕНИЕ О РИСКАХ
Компания Gerchik & Co предупреждает: проведение торговых операций на
финансовых рынках с маржинальными финансовыми инструментами имеет
высокий уровень риска и может привести к получению убытков и потере
инвестиционных средств. Начиная торговлю,убедитесь что вы в полной
мере осознаете все риски, а также обладаете соответствующими знаниями
и опытом для торговли на Форексе.
УСЛОВИЯ ПЕРЕПЕЧАТКИ МАТЕРИАЛОВ
При полном или частичном использовании информации и материалов данного сайта, указание источника информации (ссылка на сайт gerchik.co) является обязательным.
Компания Gerchik & Co LTD сертифицирована через сервис Verify My Trade и предоставляет ежемесячно 5000 сделок для сравнения со всеми базисными показателями других брокеров и поставщиков ликвидности. Результаты аудита доступны по ссылке.
Источник
В этой статье рассмотрим некоторые проблемы, связанные с работой торгового терминала MetaTrader 4 и возможные варианты их решения.
1.Терминал МТ4 показывает ошибку «Неверный счет».
Вы ввели неверный логин (логином является номер торгового счета) или пароль. Если вы забыли ваши учетные данные, проверьте электронную почту. При регистрации торгового счета на ваш e-mail приходит письмо с регистрационными данными.
Убедитесь, что пароль введен правильно: все буквы написаны на латинице и с учетом регистра. Также проверьте, что ваш логин или пароль не имеет пробелов, либо пробелы перед или после них.
Также необходимо выбрать правильное имя сервера. Оно также содержится в электронном письме.
2. Терминал МТ4 не может подключиться к торговому счету. Ошибка «Нет соединения».
1. Проверьте подключение к интернету, возможно, это проблема вашего интернет-провайдера. Попробуйте открыть любые страницы в веб-браузере. Если они не открываются, обратитесь в тех. поддержку вашего провайдера.
2. Возможно, ваш антивирус блокирует соединение с терминалом МТ4. Попробуйте отключить антивирус и заново запустить торговый терминал. Если проблема в антивирусе, необходимо добавить в исключения соединение с терминалом МТ4 в настройках антивирусной программы.
3. Если подключение вашего компьютера идет через прокси-сервер, то информационные данные прокси-сервера необходимо ввести в терминале МТ4. Для этого в меню выбираем «Сервис», далее «Настройки», в открывшемся окне выбираем вкладку «Сервер», здесь ставим галочку в пункте «Использовать прокси-сервер».
4. Проблемы на сервере ДЦ: перегруженность или сбои в работе его дата-центров.
3. Не открылся ордер, ошибка «Торговый поток занят».
4. Не могу открыть график финансового инструмента, он отсутствует в окне «Обзор рынка».
Вариант 1. Щелкните правой кнопкой мыши по окну «Обзор рынка», выберите пункт «Показать все символы». Теперь вы сможете видеть все финансовые инструменты, которые предлагает ваш брокер. Однако по всем открытым символам будет идти поток информации, а это может тормозить работу терминала.
Вариант 2. В главном меню выбираем «Вид» → «Символы» и здесь ищем требуемый символ, затем нажмите на кнопку «Показать». После этого он появится в окне «Обзор рынка» и в меню для создания нового графика.
5. Можно ли изменить цвет рыночных и отложенных ордеров?
6. Можно ли открыть ордер произвольным лотом?
7. Как посмотреть график валютной пары на истории, он постоянно перемещается назад?
8. Как можно узнать спрэд валютной пары?
9. Как посмотреть всю историю совершенных сделок?
10. Как сделать, чтобы в терминале отображались сделки, открытые вручную так же, как у торговых советников?
На графике можно визуализировать только закрытые ордера. Для этого зажмите левой кнопкой мыши закрытый ордер во вкладке «История счета» и перетащите его на график. Он отобразится также как при работе торговых советников, то есть можно будет увидеть направление ордера, точку входа и точку выхода. Если сделать то же самое, удерживая клавишу Shift, то отобразятся все закрытые ордера по выбранной валютной паре.
Вы можете использовать индикатор, который показывает все сделки и еще прибыль или убыток в пунктах и в валюте.
Индикатор VisualOrders.mq4.
11. При тестировании советника появляется надпись «Недостаточно места на диске С». Какой объем занимает терминал МТ4 на диске компьютера?
12. Не могу открыть ордер в терминале МТ4. Кнопка «Новый ордер» неактивна, серого цвета.
Возможно, вы не выбрали размер лота.
При регистрации счета вы ввели пароль инвестора, а не пароль трейдера. В этом случае вы сможете только смотреть, но не сможете открывать и закрывать сделки.
13. Можно ли открыть несколько счетов в одном клиентском терминале МТ4?
14. Я случайно удалил нужный объект. Можно ли его восстановить?
15. Есть ли возможность заходить в свой торговый терминал с любого компьютера?
Надеюсь эти советы помогут вам решить ваши проблемы с терминалом МТ4 и быстрее освоить его в работе.
Источник
Третью неделю пытаюсь запустить MetaTrader 4.
Уже во время установки программы появляется сообщение:
Программа устанавливается, но при запуске появляется это же
сообщение и программа не запускается.
Запись на компьютере из журнала событий:
Источник: Application Error
Тип: Ошибка Код(ID) 1000
Описание: Ошибка приложения terminal.exe. версия 4.0.0.610.
модуль terminal.exe. версия 4.0.0.610. адрес 0х001a9018
Иногда появляется такое описание:
Ошибка приложения mt4setup.exe. версия 5.0.0.883. модуль mt4setup.exe.
версия 5.0.0.883. адрес 0х0001ec1a.
Как только появилась эта проблема, появлялось сообщение
об ошибке, но программа запускалась. Я заподозрил вирусную
активность на компьютере, потому что уже продолжительное
время не пользовался антивирусными программами. Мое
предположение подтвердилось. После значительных усилий
вирусы были обнаружены там, где их не должно было быть:
на установочном диске CD-R.
Я десять лет интенсивно пользуюсь компьютером
и десять лет регулярно борюсь с вирусами.
Обычно, в самых тяжелых случаях переустановка операционной
системы снимала проблему. Но не в этот раз!
Уже многократно была переустановлена операционная система.
В последний раз во время установки я удалил разделы диска,
создал новые, отформатировал, установил систему с диска,
проверенного антивирусом. MetaTrader 4 не запускается!
Проверяю компьютер программой DrWeb, вирусов нет,
компьютер работает отлично, запускается любая программа,
кроме MetaTrader 4.
Технические характеристики компьютера:
AMD Athlon(tm)XP 2500 1,83 ГГц. 1.00 ГБ ОЗУ
Windows XP Professional версия 2002 Service Pack 3
Источник