Ordersend error 148

OrderSend Error 148 or ERR_TRADE_TOO_MANY_ORDERS is a frequently appearing MetaTrader 4 error message, especially if you are trading on some demo/real contest account. The error means that you are trying to place an order or open a position when the maximum number has already been reached. Some Forex brokers limit the number of simultaneously open orders and positions (this doesn't count the stop-loss and take-profit orders). When the maximum is reached and your MT4 expert advisor sends a new order request (pending or market) you will get an "OrderSend Error 148" message in the Experts log of your platform; the order won't be executed.

OrderSend Error 148 or ERR_TRADE_TOO_MANY_ORDERS is a frequently appearing MetaTrader 4 error message, especially if you are trading on some demo/real contest account. The error means that you are trying to place an order or open a position when the maximum number has already been reached. Some Forex brokers limit the number of simultaneously open orders and positions (this doesn’t count the stop-loss and take-profit orders). When the maximum is reached and your MT4 expert advisor sends a new order request (pending or market) you will get an «OrderSend Error 148» message in the Experts log of your platform; the order won’t be executed.

As an MQL4 coder, you should handle these situations properly as they obviously lead to the incorrect functioning of the EA. Your expert advisor should be checking the maximum allowed number of orders and avoid opening new ones if the maximum is reached. Alternatively, it can try closing previous orders if a new order is to be opened.

The number of currently active orders and opened positions should be checked with the OrdersTotal() function.

The MQL4 (and MQL5 too) function to check the maximum allowed number of orders is the following:

If the returned value is zero, then there is no limit on maximum simultaneously opened orders or positions in this account.

You can use this simple demo script to print the value in your trading platform:

//+------------------------------------------------------------------+
//|                                                       Demo-1.mq4 |
//|                                                    EarnForex.com |
//|                                       https://www.earnforex.com/ |
//+------------------------------------------------------------------+
#property copyright "EarnForex.com"
#property link      "https://www.earnforex.com/"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   Print("Account limit orders: ", AccountInfoInteger(ACCOUNT_LIMIT_ORDERS));
}

After executing, this script produces the following output in the RoboForex live account:

Sample Account Limit Orders Output in MT4 Platform

Unfortunately, there is no easy way to fix OrderSend Error 148 if you are a trader who doesn’t know how to code in MQL4. In this case, your solution could probably be to ask your Forex broker to increase the limit, but that is quite unlikely to happen. Of course, there is no point in doing this if your EA tends to open infinite number of orders. In that case, it is better to ask some coder (on our Forex Jobs forum section, for example) to fix the expert advisor.

If you have any thoughts, comments, or questions regarding MT4 OrderSend Error 148 and the ways to treat it, feel free to join our Forex forum for discussions with other traders and MQL4 developers.

Содержание

  1. Is ERR_TRADE_TOO_MANY_ORDERS (148) likely to happen and if it occurs + orderModify happens then.
  2. Ошибка 148 (MT4)
  3. OrderSend Error 148 — How to Fix?
  4. Коды ошибок в MQL4
  5. chocolate
  6. expforex
  7. expforex
  8. rbrus
  9. expforex
  10. Капиталист
  11. Капиталист
  12. imelam
  13. imelam
  14. frybit
  15. gince
  16. DIO-Soft
  17. gince
  18. expforex
  19. innovision

Is ERR_TRADE_TOO_MANY_ORDERS (148) likely to happen and if it occurs + orderModify happens then.

Above taken from code: /*. */ are mixture of docs and forum notes.

Given above blurb:

Let’s say max open+pending orders «. has reached the limit set by the broker.» ref: ERR_TRADE_TOO_MANY_ORDERS (148)

So ok, error code is detected and flag set to inhibit further OrderSend()s until it is seen that less than broker limit, at this time another order could be considered.

However during the time that EA at this limit, the code continues to do other open trade maintenance duties each time start() called eg, monitoring/moving TPs and SLs etc.

You know. in cruise mode just dreaming about massive income while the orders do their thing and we just tweak around the edges via orderModify 😉

And that would seem where can come unstuck because OrderModify() closes original order and reopens new order with requested mods and issues new ticket#

(which has to be discovered by EA using magic#. nice one MT)

btw support: since modify is type bool — why not do something really useful and make type int?

A return value like OrderSend() does and give out the ticket# of the new/modded order.

This is a real no-brainer solution to current non-clever I/F. Take a few mins to do?

You must have that new ticket# somewhere and modify builtin could lay hands on it, yes?

If at this broker max value and then decide time to move SL on market order, modify issued.

Will the broker refuse this modify order or will broker allow?

Would seem all based on how modify implemented on server: is possible that will now go max+1 and that’s not allowed according to docs.

.Of course if 148 never likely to happen — can forget all of above (I think 😉

it goes without saying that am inferring that a well behaved EA would qualify for the «never likely to happen» wording simply due to never issuing massive number of open,pending orders.

But that is not a solution — just a fingers crossed kludge.

how does one learn what is this maximum limit set by broker?

IF there is such a datum THEN is easy to build code around this knowledge and have happy error handler function and start() too, yes?

ELSE seems back into the usual guessing game again regards error handling.

Источник

Ошибка 148 (MT4)

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

При автоматическом тестировании все отлично — ошибок нету.

А вот от модераторов пришел ответ

Я добавил проверку по AccountInfoInteger ( ACCOUNT_LIMIT_ORDERS ).

Хотя, как написано в документации, это максимально количество ОТЛОЖЕННЫХ ордеров.

У меня они не используются. Использую только РЫНОЧНЫЕ (BUY и SELL).

Все равно ошибка повторяется. Как минимум по одному из символов (EURUSD) ошибки нету.

Сколько ни тестировал различных брокеров, AccountInfoInteger (ACCOUNT_LIMIT_ORDERS) везде выдает не менее 50.

Где еще нужна проверка? и какая проверка?

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

При автоматическом тестировании все отлично — ошибок нету.

А вот от модераторов пришел ответ

Я добавил проверку по AccountInfoInteger ( ACCOUNT_LIMIT_ORDERS ).

Хотя, как написано в документации, это максимально количество ОТЛОЖЕННЫХ ордеров.

У меня в справочнике написано так:

Количество открытых и отложенных ордеров достигло предела, установленного брокером

У меня они не используются. Использую только РЫНОЧНЫЕ (BUY и SELL).

Все равно ошибка повторяется. Как минимум по одному из символов (EURUSD) ошибки нету.

Сколько ни тестировал различных брокеров, AccountInfoInteger (ACCOUNT_LIMIT_ORDERS) везде выдает не менее 50.

Где еще нужна проверка? и какая проверка?

Вот примерный код

maxcount = MathMin(13, AccountInfoInteger(ACCOUNT_LIMIT_ORDERS));

if (maxcount == 0) maxcount = 13;

for (int i = 0; i // делаем что-то

if (count >= maxcount) return;

// БЛОК ОТКРЫТИЯ ОРДЕРОВ

Вот примерный код

maxcount = MathMin(13, AccountInfoInteger(ACCOUNT_LIMIT_ORDERS));

if (maxcount == 0) maxcount = 13;

Вторая часть по сути верная. В первой части мешает вот это:

Ведь если не удалось получить значение лимита, то это ошибка. В таком случае нельзя запускать эксперт вообще:

Вторая часть по сути верная. В первой части мешает вот это:

Ведь если не удалось получить значение лимита, то это ошибка. В таком случае нельзя запускать эксперт вообще:

А где написано, что 0 это ошибка?

Наоборот — 0 ОГРАНИЧЕНИЙ НЕТ

Максимально допустимое количество действующих отложенных ордеров (0-ограничений нет)

А где написано, что 0 это ошибка?

Когда терминал возвращает 0 в размере пункта , то в документации тоже нигде не написано, что это ошибка. Пользуемся чисто здравым смыслом.

Uladzimir Kirychenka :

Наоборот — 0 ОГРАНИЧЕНИЙ НЕТ

Когда терминал возвращает 0 в размере пункта , то в документации тоже нигде не написано, что это ошибка. Пользуемся чисто здравым смыслом.

Я пока не видел бесконечной памяти ни у одного компьютера. Поэтому именно здесь не верю тому, что написано в документации. Есть большая вероятность того, что это поле попросту не заполнено на стороне сервера. Таким образом, это ошибка.

Максимально допустимое количество действующих отложенных ордеров (0-ограничений нет)

Кстати, по-моему уже поднималась тема о том, что в справке допущена неточность. Точный вариант такой:

Максимально допустимое количество действующих и отложенных ордеров (0-ограничений нет)

Как и обещал делюсь результатом:

Похоже настроено, что количество ордеров должно быть не более AccountInfoInteger( ACCOUNT_LIMIT_ORDERS )-1 . Потому что при открытии AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) ордера уже сообщает об ошибке.

Например: если AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) возвращает 10, то при открытии 10 (а не 11 . ) ордера уже ошибка. Может это особенность работы с металлами, может есть еще какой-то скрытый ордер для внутреннего использования.

  • Бесплатные приложения для трейдинга
  • Форексный VPS бесплатно на 24 часа
  • 8 000+ сигналов для копирования
  • Экономические новости для анализа финансовых рынков

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

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

Источник

OrderSend Error 148 — How to Fix?

OrderSend Error 148 or ERR_TRADE_TOO_MANY_ORDERS is a frequently appearing MetaTrader 4 error message, especially if you are trading on some demo/real contest account. The error means that you are trying to place an order or open a position when the maximum number has already been reached. Some Forex brokers limit the number of simultaneously open orders and positions (this doesn’t count the and orders). When the maximum is reached and your MT4 expert advisor sends a new order request (pending or market) you will get an «OrderSend Error 148» message in the Experts log of your platform; the order won’t be executed.

As an MQL4 coder, you should handle these situations properly as they obviously lead to the incorrect functioning of the EA. Your expert advisor should be checking the maximum allowed number of orders and avoid opening new ones if the maximum is reached. Alternatively, it can try closing previous orders if a new order is to be opened.

The number of currently active orders and opened positions should be checked with the OrdersTotal() function.

The MQL4 (and MQL5 too) function to check the maximum allowed number of orders is the following:

If the returned value is zero, then there is no limit on maximum simultaneously opened orders or positions in this account.

You can use this simple demo script to print the value in your trading platform:

After executing, this script produces the following output in the RoboForex live account:

Unfortunately, there is no easy way to fix OrderSend Error 148 if you are a trader who doesn’t know how to code in MQL4. In this case, your solution could probably be to ask your Forex broker to increase the limit, but that is quite unlikely to happen. Of course, there is no point in doing this if your EA tends to open infinite number of orders. In that case, it is better to ask some coder (on our Forex Jobs forum section, for example) to fix the expert advisor.

If you have any thoughts, comments, or questions regarding MT4 OrderSend Error 148 and the ways to treat it, feel free to join our Forex forum for discussions with other traders and MQL4 developers.

If you want to get news of the most recent updates to our guides or anything else related to Forex trading, you can subscribe to our monthly newsletter.

Источник

Коды ошибок в MQL4

chocolate

Гуру форума

Для того, чтобы не искать номер ошибки в ручную, нажимаете ctrl+f и вводите код ошибки

Тему сделал важной.

expforex

Программиров

expforex

Программиров

Разбор полетов! Коды ошибок, их значения и способы устранения.

Разбор полетов! Коды ошибок, их значения и способы устранения.

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

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

Краткая справка по ошибкам изложена в Коды Ошибок, а также в самом терминале MetaTrader4
Исходя из них — мы попробуем в стиле Руководства по ошибкам электронной техники описать проблему и способ ее решения.

Если Вашей ошибки нет в данной таблице, или способы решения не помогли, обратитесь к автору Вашего советника, но перед этим воспользуйтесь статьей Log файлы для детального рассмотрения проблемы с роботами* (Expforex Прибыльные советники — — Стратегии Форекс —)

ошибка 4, 146
Торговый сервер занят
1. Советник подал слишком много приказов одновременно
2. Не дождавшись ответа от сервера, при выполнении операции — советник пытается отправить новый приказ, Сервер перегружен

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

ошибка8, 141
Слишком частые запросы
1. Предыдущие причины ошибки, в сильно частом запросе.

ошибка129
Неправильная цена
1. Цена по которой Вы пытаетесь открыть позицию (BUY SELL)- неправильная

1. Золотое правило: BUY нужно открывать по Ask а закрывать по BID
SELL нужно открывать по BID а закрывать по ASK

ошибка130,145
Неправильные стопы
1. Стопы= Стоплосс, тейкпрофит или уровень открытия отложенника или лимитника.
2. Стопы расположены слишком близко к цене
3. Ваш счет открыт в группе ECN (ЕЦН) или NDD (НДД)
4. Ваш брокер использует Рыночное исполнение позиций

1. Проверьте значения Ваших стоплосс, тейпрофитов
2. Уточните минимальный стоп уровень по Вашему инструменту у брокера, при выставлении стопов — соблюдайте уровень минимальной дистанции
3. В хорошо написанном советнике должны быть функции работы на счетах ECN и NDD

ошибка131
Неправильный объем
1. Неправильный лот при открытии сделки
2. Лот, который вы пытаетесь открыть, меньше минимального
3. Лот, который вы пытаетесь открыть больше максимального
4. Разрядность лота отличается от разрядности брокера.
1. Проверьте правильность открытия лота, изучите спецификацию контракта и прочтите условия торговли в Вашем ДЦ
2.3. Проверьте, Минимальный и Максимальный лот в Вашем ДЦ и на Вашем счете. На некоторых типах счетов, минимальный лот может быть 0.01 а также 0.1 и даже 3. Максимальный лот может быть 5 лотов и 999 лотов и другие.
4. Уточните разрядность лотов на Вашем сервере. Если например разрядность лотов=1, то можно открыть лот 0.1 или 0.5 или 1.2 и так далее, с 1 знаком после запятой, если разрядность лота 2 знака, то исходя из минимального лота, лот может быть 0.01, 0.06, 0.17, 1.48. Также в некоторых ДЦ существует порядок степени лотов, например можно открыть 0.5 и 1 и 1.5 и так далее, а например 0.6 открыть нельзя. Уточните у своего брокера порядок установки лотов.

ошибка132
Рынок закрыт
1. Рынок закрыт в Выходные дни
1.Пробуйтесвязаться с рынком после выходных

ошибка133
Торговля запрещена
1. В данный момент торговля запрещена
2. По данной валютной паре запрещено торговать
1. Попробуйте торговать после выходных

ошибка134
Недостаточно денег для совершения операции
1. Лот, который Вы пытаетесь открыть, слишком большой, на него не хватает маржи
1. Проверьте уровень свободных средств, ирассчитайтесредства, которые Вам нужны, для открытия лота
2. Следите за уровнем Ваших свободных средств

ошибка135..138
Цена изменилась
1. Реквот
2. Слишком быстрый рынок
3. Брокер или ДЦ не дает Вам поставить позицию по заявленной цене
1. Не торгуйте в такие моменты
2. Увеличьте уровеньпроскальзывания, но помните что это влечет за собой открытие позиций не по заявленной Вами цене.
3. Сделайте в советнике функцию обработки ошибок и количество попыток открытия позиций

ошибка 147
Использование даты истечения ордера запрещено брокером
1. Ваш советник или Вы пытаетесь установить срок истечения отложенного ордера
1. В советнике, в функции OrderSend в параметре срок истечения поставьте=0
2. Не устанавливайте срок истечения ордера.

ошибка 148
Количество открытых и отложенных ордеров достигло предела, установленного брокером.
1. Максимальноеколичествооткрытых ордеров и позиций достигнут предела, установленного брокером.
1. Удалите или закройте часть позиций
2. Остановите процесс открытия новых позиций
3. Соблюдайте иерархию сделок, лучше открыть 1 позицию лото 0.1 одновременно, чем 10 позиций лотом 0.01 с потерей спреда.

ошибка 4012, 4013
zero devide

Остаток от деления на ноль

  • Вы пытаетесь поделить число на 0.
  • Проверьте Весь код советника на наличие такой грубой ошибки, или же проверьте все значения из MarketInfo функций на момент возвращения 0, иногда при MarketInfo(Symbol(),MODE_SPREAD) возвращается не спред а 0 (у брокеров с плавающим спредом)

ошибка 4017
Вызовы DLL не разрешены

  • В Вашем терминале запрещен вызов DLL
  • Разрешите вызов DLL через Меню – сервис – Настройки – Советник – Разрешить вызов DLL, но помните, разрешайте данную опцию только для советников, в которых Вы уверены, и уверены что в ДЛЛ не сидит какой-нибудь троян. Проверьте ДЛЛ на наличие троянов с помощью антивируса.

Ошибка 4018 , 4019
Невозможно загрузить библиотеку

  • Библиотека повреждена
  • Вызов библиотеки осуществляется с ошибкой
  • Проверьте библиотеку DLL
  • Обратитесь к разработчику данной библиотеки

Ошибка 4020
Вызовы внешних библиотечных функций не разрешены

  • В Вашем терминале запрещен вызов функций из внешних экспертов
  • Разрешите вызов функций через Меню – сервис – Настройки – Советник – Разрешить вызов внешних экспертов,

Ошибка 4103
Невозможно открыть файл

  • Данный файл не существует
  • Данный файл заблокирован
  • Проверьте наличие указанного файла в папке experts – files

Tester – files

  • Проверьте не заблокирован ли файл системой антивируса. Разрешен ли режим записичтения файла

Ошибка 4106
Неизвестный символ

  • Символа нет в обзоре рынка
  • В обзоре рынка – правой кнопкой мыши – показать все символы
  • Проверить названия символа в советнике и наличие его в обзоре рынка
  • Некоторые советники используют четкие названия без суфиксов, а брокеры намеренно ставят суфиксы, например EURUSDx где х – суфикс.

Ошибка 4108
Неверный номер тикета

  • Тикет ордера, который выбирает эксперт – не существует
  • Эксперт пытается выбрать тикет, но данный ордер был закрыт другим советником или руками.
  • При попытке осуществления приказа над ордером, тикет был исполнен и закрыт брокером.
  • Если данная ошибка появляется очень часто, 100-1000 раз за минуту, проверьте функции Вашего советника
  • Отключите другие советники, или настройте их так, чтобы они не конфликтовали, не закрывайте ордер руками, когда эксперт выполняет операцию

Ошибка 4109
Торговля не разрешена

  • Советнику запрещено торговать, на графике грустный смайл или крестик
  • Включите галочку «Разрешить советнику торговать» в вкладе при установке советника, либо в меню- сервис – настройки – советники.

Ошибка 4110, 4111
Длинные позиции не разрешены
Короткие позиции не разрешены

  • В настройках советника, в вкладке Общие не разрешен тип позиций
  • В Вкладке Общие, при установке советника есть выбор позиций:

Long Short – Разрешены BUY SELL
Only Long– Разрешен BUY
Only Short – Разрешен SELL

НЕ ЗАБЫВАЕМ ГОВОРИТЬ СПАСИБО И НАЖИМАТЬ КНОПКУ

rbrus

Прохожий

в стандартных библиотеках
#include
#include

есть функция
string ErrorDescription(int error_code);

выводит описание ошибки

expforex

Программиров

Капиталист

Активный участник

Гуру форума

Капиталист

Активный участник

У меня скальпер на ЕСН альпари такую шнягу выдаёт!

А вот это что тогда?
2015.01.26 10:11:33.233 ‘54669’: order buy 0.01 EURUSD opening at 1.12608 sl: 1.12538 tp: 1.15108 failed [Off quotes]
и это:
2015.01.26 16:45:04.623 HistoryBase: 2 errors in ‘EURUSD1’
спасибо!

Гуру форума

На ECN Market Execution. Похоже советник рассчитан на работу с Instant Execution. На Альпари счета стандарт.

imelam

Интересующийся

Гуру форума

imelam

Интересующийся

frybit

Прохожий

Гуру форума

gince

Местный знаток

У меня не ошибка , а предупреждение. Ни как не могу его понять что плохо.

possible loss of data due to type conversion ************.mq4 1214 9
а вот эта строка (она вторая)
dg=MarketInfo(sy,MODE_DIGITS);
if(dg==0)
Есть и еще раз
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS)

Тут символ пробовал писать и нс прямую, но не в этом дело.

DIO-Soft

Новичок форума

У меня не ошибка , а предупреждение. Ни как не могу его понять что плохо.

possible loss of data due to type conversion ************.mq4 1214 9
а вот эта строка (она вторая)
dg=MarketInfo(sy,MODE_DIGITS);
if(dg==0)
Есть и еще раз
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS)

Тут символ пробовал писать и нс прямую, но не в этом дело.

не соответствие типов,
если напрягает — сделайте так:

int dg=(int)MarketInfo(OrderSymbol(), MODE_DIGITS);

gince

Местный знаток

не соответствие типов,
если напрягает — сделайте так:

int dg=(int)MarketInfo(OrderSymbol(), MODE_DIGITS);

expforex

Программиров

innovision

Новичок форума

вот еще +38 штук

4210:ERR_CHART_PROP_INVALID = Неизвестное свойство графика
4211:ERR_CHART_NOT_FOUND = График не найден
4212:ERR_CHARTWINDOW_NOT_FOUND = Не найдено подокно графика
4213:ERR_CHARTINDICATOR_NOT_FOUND = Индикатор не найден
4220:ERR_SYMBOL_SELECT = Ошибка выбора инструмента
4250:ERR_NOTIFICATION_ERROR = Ошибка отправки push-уведомления
4251:ERR_NOTIFICATION_PARAMETER = Ошибка параметров push-уведомления
4252:ERR_NOTIFICATION_SETTINGS = Уведомления запрещены
4253:ERR_NOTIFICATION_TOO_FREQUENT = Слишком частые запросы отсылки push-уведомлений
5001:ERR_FILE_TOO_MANY_OPENED = Слишком много открытых файлов
5002:ERR_FILE_WRONG_FILENAME = Неверное имя файла
5003:ERR_FILE_TOO_LONG_FILENAME = Слишком длинное имя файла
5004:ERR_FILE_CANNOT_OPEN = Ошибка открытия файла
5005:ERR_FILE_BUFFER_ALLOCATION_ERROR = Ошибка размещения буфера текстового файла
5006:ERR_FILE_CANNOT_DELETE = Ошибка удаления файла
5007:ERR_FILE_INVALID_HANDLE = Неверный хендл файла (файл закрыт или не был открыт)
5008:ERR_FILE_WRONG_HANDLE = Неверный хендл файла (индекс хендла отсутствует в таблице)
5009:ERR_FILE_NOT_TOWRITE = Файл должен быть открыт с флагом FILE_WRITE
5010:ERR_FILE_NOT_TOREAD = Файл должен быть открыт с флагом FILE_READ
5011:ERR_FILE_NOT_BIN = Файл должен быть открыт с флагом FILE_BIN
5012:ERR_FILE_NOT_TXT = Файл должен быть открыт с флагом FILE_TXT
5013:ERR_FILE_NOT_TXTORCSV = Файл должен быть открыт с флагом FILE_TXT или FILE_CSV
5014:ERR_FILE_NOT_CSV = Файл должен быть открыт с флагом FILE_CSV
5015:ERR_FILE_READ_ERROR = Ошибка чтения файла
5016:ERR_FILE_WRITE_ERROR = Ошибка записи файла
5017:ERR_FILE_BIN_STRINGSIZE = Размер строки должен быть указан для двоичных файлов
5018:ERR_FILE_INCOMPATIBLE = Неверный тип файла (для строковых массивов-TXT, для всех других-BIN)
5019:ERR_FILE_IS_DIRECTORY = Файл является директорией
5020:ERR_FILE_NOT_EXIST = Файл не существует
5021:ERR_FILE_CANNOT_REWRITE = Файл не может быть перезаписан
5022:ERR_FILE_WRONG_DIRECTORYNAME = Неверное имя директории
5023:ERR_FILE_DIRECTORY_NOT_EXIST = Директория не существует
5024:ERR_FILE_NOT_DIRECTORY = Указанный файл не является директорией
5025:ERR_FILE_CANNOT_DELETE_DIRECTORY = Ошибка удаления директории
5026:ERR_FILE_CANNOT_CLEAN_DIRECTORY = Ошибка очистки директории
5027:ERR_FILE_ARRAYRESIZE_ERROR = Ошибка изменения размера массива
5028:ERR_FILE_STRINGRESIZE_ERROR = Ошибка изменения размера строки
5029:ERR_FILE_STRUCT_WITH_OBJECTS = Структура содержит строки или динамические массивы

Источник

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 Ошибка при работе с объектом

Разбор полетов! Коды ошибок, их значения и способы устранения.

Разбор полетов! Коды ошибок, их значения и способы устранения.

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

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

Итак начнем.

Краткая справка по ошибкам изложена в Коды Ошибок, а также в самом терминале MetaTrader4
Исходя из них — мы попробуем в стиле Руководства по ошибкам электронной техники описать проблему и способ ее решения.

Если Вашей ошибки нет в данной таблице, или способы решения не помогли, обратитесь к автору Вашего советника, но перед этим воспользуйтесь статьей Log файлы для детального рассмотрения проблемы с роботами* (Expforex Прибыльные советники — — Стратегии Форекс —)

ошибка 4, 146
Торговый сервер занят
1. Советник подал слишком много приказов одновременно
2. Не дождавшись ответа от сервера, при выполнении операции — советник пытается отправить новый приказ, Сервер перегружен

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

ошибка8, 141
Слишком частые запросы
1. Предыдущие причины ошибки, в сильно частом запросе.

ошибка129
Неправильная цена
1. Цена по которой Вы пытаетесь открыть позицию (BUY SELL)- неправильная

1. Золотое правило: BUY нужно открывать по Ask а закрывать по BID
SELL нужно открывать по BID а закрывать по ASK

ошибка130,145
Неправильные стопы
1. Стопы= Стоплосс, тейкпрофит или уровень открытия отложенника или лимитника.
2. Стопы расположены слишком близко к цене
3. Ваш счет открыт в группе ECN (ЕЦН) или NDD (НДД)
4. Ваш брокер использует Рыночное исполнение позиций

1. Проверьте значения Ваших стоплосс, тейпрофитов
2. Уточните минимальный стоп уровень по Вашему инструменту у брокера, при выставлении стопов — соблюдайте уровень минимальной дистанции
3. В хорошо написанном советнике должны быть функции работы на счетах ECN и NDD

ошибка131
Неправильный объем
1. Неправильный лот при открытии сделки
2. Лот, который вы пытаетесь открыть, меньше минимального
3. Лот, который вы пытаетесь открыть больше максимального
4. Разрядность лота отличается от разрядности брокера.
1. Проверьте правильность открытия лота, изучите спецификацию контракта и прочтите условия торговли в Вашем ДЦ
2.3. Проверьте, Минимальный и Максимальный лот в Вашем ДЦ и на Вашем счете. На некоторых типах счетов, минимальный лот может быть 0.01 а также 0.1 и даже 3. Максимальный лот может быть 5 лотов и 999 лотов и другие.
4. Уточните разрядность лотов на Вашем сервере. Если например разрядность лотов=1, то можно открыть лот 0.1 или 0.5 или 1.2 и так далее, с 1 знаком после запятой, если разрядность лота 2 знака, то исходя из минимального лота, лот может быть 0.01, 0.06, 0.17, 1.48. Также в некоторых ДЦ существует порядок степени лотов, например можно открыть 0.5 и 1 и 1.5 и так далее, а например 0.6 открыть нельзя. Уточните у своего брокера порядок установки лотов.

ошибка132
Рынок закрыт
1. Рынок закрыт в Выходные дни
1.Пробуйтесвязаться с рынком после выходных

ошибка133
Торговля запрещена
1. В данный момент торговля запрещена
2. По данной валютной паре запрещено торговать
1. Попробуйте торговать после выходных

ошибка134
Недостаточно денег для совершения операции
1. Лот, который Вы пытаетесь открыть, слишком большой, на него не хватает маржи
1. Проверьте уровень свободных средств, ирассчитайтесредства, которые Вам нужны, для открытия лота
2. Следите за уровнем Ваших свободных средств

ошибка135..138
Цена изменилась
1. Реквот
2. Слишком быстрый рынок
3. Брокер или ДЦ не дает Вам поставить позицию по заявленной цене
1. Не торгуйте в такие моменты
2. Увеличьте уровеньпроскальзывания, но помните что это влечет за собой открытие позиций не по заявленной Вами цене.
3. Сделайте в советнике функцию обработки ошибок и количество попыток открытия позиций

ошибка 147
Использование даты истечения ордера запрещено брокером
1. Ваш советник или Вы пытаетесь установить срок истечения отложенного ордера
1. В советнике, в функции OrderSend в параметре срок истечения поставьте=0
2. Не устанавливайте срок истечения ордера.

ошибка 148
Количество открытых и отложенных ордеров достигло предела, установленного брокером.
1. Максимальноеколичествооткрытых ордеров и позиций достигнут предела, установленного брокером.
1. Удалите или закройте часть позиций
2. Остановите процесс открытия новых позиций
3. Соблюдайте иерархию сделок, лучше открыть 1 позицию лото 0.1 одновременно, чем 10 позиций лотом 0.01 с потерей спреда.

ошибка 4012, 4013
zero devide

Остаток от деления на ноль

  • Вы пытаетесь поделить число на 0.
  • Проверьте Весь код советника на наличие такой грубой ошибки, или же проверьте все значения из MarketInfo функций на момент возвращения 0, иногда при MarketInfo(Symbol(),MODE_SPREAD) возвращается не спред а 0 (у брокеров с плавающим спредом)

ошибка 4017
Вызовы DLL не разрешены

  • В Вашем терминале запрещен вызов DLL
  • Разрешите вызов DLL через Меню – сервис – Настройки – Советник – Разрешить вызов DLL, но помните, разрешайте данную опцию только для советников, в которых Вы уверены, и уверены что в ДЛЛ не сидит какой-нибудь троян. Проверьте ДЛЛ на наличие троянов с помощью антивируса.

Ошибка 4018 , 4019
Невозможно загрузить библиотеку

  • Библиотека повреждена
  • Вызов библиотеки осуществляется с ошибкой
  • Проверьте библиотеку DLL
  • Обратитесь к разработчику данной библиотеки

Ошибка 4020
Вызовы внешних библиотечных функций не разрешены

  • В Вашем терминале запрещен вызов функций из внешних экспертов
  • Разрешите вызов функций через Меню – сервис – Настройки – Советник – Разрешить вызов внешних экспертов,

Ошибка 4103
Невозможно открыть файл

  • Данный файл не существует
  • Данный файл заблокирован
  • Проверьте наличие указанного файла в папке experts – files

Tester – files

  • Проверьте не заблокирован ли файл системой антивируса. Разрешен ли режим записичтения файла

Ошибка 4106
Неизвестный символ

  • Символа нет в обзоре рынка
  • В обзоре рынка – правой кнопкой мыши – показать все символы
  • Проверить названия символа в советнике и наличие его в обзоре рынка
  • Некоторые советники используют четкие названия без суфиксов, а брокеры намеренно ставят суфиксы, например EURUSDx где х – суфикс.

Ошибка 4108
Неверный номер тикета

  • Тикет ордера, который выбирает эксперт – не существует
  • Эксперт пытается выбрать тикет, но данный ордер был закрыт другим советником или руками.
  • При попытке осуществления приказа над ордером, тикет был исполнен и закрыт брокером.
  • Если данная ошибка появляется очень часто, 100-1000 раз за минуту, проверьте функции Вашего советника
  • Отключите другие советники, или настройте их так, чтобы они не конфликтовали, не закрывайте ордер руками, когда эксперт выполняет операцию

Ошибка 4109
Торговля не разрешена

  • Советнику запрещено торговать, на графике грустный смайл или крестик
  • Включите галочку «Разрешить советнику торговать» в вкладе при установке советника, либо в меню- сервис – настройки – советники.

Ошибка 4110, 4111
Длинные позиции не разрешены
Короткие позиции не разрешены

  • В настройках советника, в вкладке Общие не разрешен тип позиций
  • В Вкладке Общие, при установке советника есть выбор позиций:

Long Short – Разрешены BUY SELL
Only Long– Разрешен BUY
Only Short – Разрешен SELL

НЕ ЗАБЫВАЕМ ГОВОРИТЬ СПАСИБО И НАЖИМАТЬ КНОПКУ

��������� ������� OrderSend() — �����������

� ������� �������� � ��������� � ������� OrderSend() � ����� ������������ �� ����������. � ������� ������� ���� ���� ����������� ��������� cmdprice.

� ���� ������� � �������� � ���������� StopLoss, TakeProfitexpiration.

����� �� ���������� �������� (����������� ���������� �����), �� ������ Stop Loss � Take Profit ������ ���������� �� ��������� � ������� ���� (���� ����������� ������) �� �����, ��� �� ���������� ������������� ���������� �������. ��������, ���� �� ����� ���� � ���������� ������ «�������», �� �� �� ������ ���������� Stop
Loss � Take Profit ������ �� FOREX ����� ������ ������ � ������� ���� ��� �������� ������� ��� � ���� ����������� ������.

���� �� ����������� ���������� Stop Loss ��� Take Profit �����, ��� ��� ���������, �� ������� OrderSend() ������ ������ 130 (ERR_INVALID_STOPS).

���� �� �� ������ ����� ���������� ����������� ��������, �� �� ������ ������ ��� �������� � ������� ������� MarketInfo(). ������� MarketInfo(string symbol, int type) c ���������� type, ������ MODE_STOPLEVEL, ���������� ��� �������� �� �����������, ������� ������� �� � �������� ��������� symbol.

���������� �������, � �������� ���������� �������, ����� �������� � ������� ������� Symbol():

   string Symbol()

���� ������� OrderSend() ��������� ������ 147 (ERR_TRADE_EXPIRATION_DENIED), ��� ��������, ��� �� �������� ������� ��������� ���������� ������ � ������������� ����� ����������. � ���� ������ ������� � ���������� ������������ ������� OrderSend() � ���������� expiration, ������ ����. ���������� ����� «�������» ��������� ����� �������� ������������� ����� ���� � �����,
����� ������������� ���������� ����� ����� ������ �������������.

���� ������� OrderSend() ������� ������ 148 (ERR_TRADE_TOO_MANY_ORDERS), ��� ��������, ��� �� �������� ������� ����������� ����������� �� ����������� ��������� ����� �������� ������� � ������������ ���������� ������� �� ������ �����. ������� ������� ��� ���� ������� ��� ��������� ��� ���� ���������� �����, �� ���������� ���������� �����, ������� ��� � ���� ����� ��������.

������ ������������� ������� OrderSend() ����� ����� � ����� ������ ��������:

   MyOrderTicket = OrderSend(Symbol(), OP_SELL, LotsNumber, Bid, 3, 0, 0, 
                                                 NULL, 0, 0, CLR_NONE);
   if (MyOrderTicket<0)
     {
       err = GetLastError();
       Print("������ ��� �������� �������: ", err);
       MyOrderTicket = 0;
     }

� ��������� ������� � �������� � ������� ������������� ������� OrderSend().


��� ������ �� ���� «����� ���������� ��� MetaTrader 4».

  • ������������ �������� ������� — ��� ��� ����������?
  • � ���� ������ ��� ��������� ���������:
  • ���� MetaQuotes Language 4:
      —  ��������� ���������.
      —  ������� ����������� �������. ������� init(), start() � deinit().
      —  �������� ��� ������ ������� ���������.
      —  ������������� �������� � ��������.
      —  �������� ������ � ����������: ���������, �����������,
    ������� � ���������� ����������. ��������� �������.
      —  ���������: ��������� ��������. �������� ������������ (��������������
    ��������, �������� ���������, ���������� �������� ��, ��� � �, ��������� ��������). �������� ��������. ���� while. ���� for. Break.
    �ontinue. ������������� Switch.
      —  �������� �������: OrderSelect(). OrdersTotal(). HistoryTotal().
    OrderClosePrice(). OrderStopLoss(). OrderType(). OrderCloseTime(). OrderTakeProfit(). OrderSymbol(). OrderComment().
    OrderSwap(). OrderCommission(). OrderOpenPrice(). OrderTicket(). OrderProfit(). OrderOpenTime(). OrderExpiration().
    OrderMagicNumber().
      —  ���������� �������� � ��������/�������� �������: OrderSend().

Traders Forex Forum - Robot Forex Learning Center

  1. Hi,

    I need a coder to help me correct errors 130, 148, etc.

    It must be simple but I am new to MQL4 coding and I have just overloaded after the 1st corrections.

    If someone has ease with coding, it should be a piece of cake.

  2. ERR_INVALID_STOPS 130 Invalid stops.
    ERR_TRADE_TOO_MANY_ORDERS 148 The amount of opened and pending orders has reached the limit set by a broker.

    Error 130: your SL or TP is less than minimum Stop Level allowed by the broker, or was calculated on a wrong way.
    OP_SELL OP_BUY
    SLpoints = Bid+(StopLoss*Point) SLpoints = Ask-(StopLoss*Point)
    TPpoints = Bid-(TakeProfit*Point) TPpoints = Ask+(TakeProfit*Point)

    StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL) * Point

    upload_2020-5-22_20-14-43.png

    —————————————————————————————
    Error 148: your EA it is opening orders without any limit.

    MaximunOrders = 10;
    int Total = 0;

    for(int i=0; i<OrdersTotal(); i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol() == Sym && OrderMagicNumber() == Magic /*&& (OrderType() == OP_BUY || OrderType() == OP_SELL)*/)
    Total++;
    }
    }

    if(Total < MaximunOrders)
    {
    OrderSend(………………………………………………………
    }

  3. Thanks a lot :ok: I am going to try to modify them.

  4. I have solved most of the issues. Although I still have not solved the Volumes one. Thanks a lot.

    If interested, you can test this EA for 1 week for FREE :)
    GridMasterTrend x RISK

    https://www.mql5.com/en/market/product/50053#!tab=comments

  5. . I have seen forextrade1 free signals those are working perfectly then why should I join the paid one.

  6. This is a manager. Unfortunately … TP Settings/Set Initial TP to For Pendings … it’s not working properly. I want to ask you to fix this. Well thank you.

    Attached Files:

  7. I am back after being defeated twice :mad:
    I am testing this EA for Bulls and Bears but it keep saying
    ‘invalid ticket for OrderClose function’

    Attached Files:

  8. The EA has many errors: SL and TS do not work at all. I have managed to Add a magic number and I have thought about a safer strategy, I will try to code it but if anybody wants to help me, please contact me. I am not that agile at coding as many of you might surely be.

Share This Page

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

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

  • Ordersend error 131 mql4
  • Ordersend error 130 как исправить
  • Ordersend error 130 mql4
  • Ordermodify error 4108
  • Ordermodify error 4051

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

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