134 ошибка мт4

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

пишет такое

test on EURUSD,H1
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13992 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113983, FreeMargin: -103983.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13992 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113983, FreeMargin: -103983.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13992 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113983, FreeMargin: -103983.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
0 11:52:38.864 2016.04.04 16:00:00  2222 EURUSD,H1: Alert: Ошибка открытия: Недостаточно денег для совершения операции
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13991 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113982, FreeMargin: -103982.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13991 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113982, FreeMargin: -103982.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
 2016.04.04 16:00:00  Tester: not enough money for buy 100.00 EURUSD at 1.13991 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
 2016.04.04 16:00:00  Tester: PrevBalance: 10000.00, PrevPL: 0.00, PrevEquity 10000.00, PrevMargin: 0.00, NewMargin: 113982, FreeMargin: -103982.00
 2016.04.04 16:00:00  2222 EURUSD,H1: OrderSend error 134
0 11:52:38.864 2016.04.04 16:00:00  2222 EURUSD,H1: Alert: Ошибка открытия: Недостаточно денег для совершения операции
 2016.04.04 16:00:01  Tester: not enough money for buy 100.00 EURUSD at 1.13992 sl: 0.00000 tp: 0.00000 [2016.04.04 16:00]
there are no trading operations


Добавил код


 bool CheckMoneyForTrade(string symb, double lots,int type)
  {
   double free_margin=AccountFreeMarginCheck(symb,type,lots);
   //-- если денег не хватает
   if(free_margin<0)
     {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   //-- проверка прошла успешно
   return(true);
   }


и та же проблема.
Что еще может быть?

What is MT4 Error 134

The MT4 error 134 mainly occurs due to a poorly programmed Expert Advisor (EA) in MQL4 that shows OrderSend error message ERR_NOT_ENOUGH_MONEY. Most often this error takes place while backtesting an EA.

MT4 Error 134

Generally, it means the system has canceled your order request due to insufficient funds in your account. However, this is not the only reason you are receiving the error code. Even though you have enough cash in your account, the system may still show you the same message. So, in most cases, pouring more money into account doesn’t help you solve this ghostly error.

In this guide, we’ve explained the possible reasons for causing MT4 error 134. Also, we’ve discussed how to tackle this annoying problem and get back to live trading through a few simple steps.

Why does MT4 error 134 happen?

A badly designed EA

An error in the money management of an expert advisor is the most common reason behind error 134 trouble. A poorly designed money management can bring an absolute disaster in both automated and manual trading.

When an EA miscalculates the risks, it starts sending orders with unrealistic trading lots. For instance, many traders prefer trading bots that follow the Martingale strategy because it gradually increases trading lot sizes based on the account’s growth.

In terms of a profitable trading strategy, the Martingale style is not a bad idea at all. But the problem arises when the bot raises the lot size based on the number of trades, not the profit/loss of the account.

So, it keeps gradually increasing the trading lot even in a drawdown period of the performance. At a point, the lot turns bigger than it affords to trade. So, the system stops accepting further orders sending a “not enough money” message.

A change in the trading leverage and account types

In forex, leverage enables you to go for big trades with a smaller amount of cash. That is cool, but the way a broker offers the leverage is not the same for every exchange. Some brokers change the leverage ratio based on trading account types and balances.

Therefore, a major drawdown in your account or a switch to another account may affect your leverage ratio. Eventually, it may affect your trading credibility as well. For example, you need a margin of $100 to place a one standard lot trade of an asset while you are enjoying a 1:1000 leverage ratio. In that case, you certainly couldn’t be able to trade the same amount if the leverage was down to 1:200.

An MT4 will always show error 134 whenever it detects the current account balance doesn’t meet the minimum margin requirement for activating an order.

How to fix MT4 OrderSend error 134?

Time needed: 8 minutes.

How to fix MQL4 error 134

  1. Check your trading balance

    Make sure you have a sufficient balance in your account, and there is no change in your base currency.

  2. Check your trading leverage

    Check if your broker has applied any change in your account leverage.

  3. Verify free margin after executing an order

    Use the following code to check the available free margin after executing an order:

    MQL4 Check Free Margin

  4. Verify free margin requirements on stop-out positions

    Next, apply the following code to reveal how your broker determines the stop-out positions so that you can assess your free margin requirements:

    MQL4 Check Requirements Stop Out

I am coding a bot to execute trades for me when I receive them on my email. I have achieved this however, I have run into a small problem I can’t seem to solve. When a buy trade is placed by the EA, it runs smoothly and places the trade. However, when a sell trade is placed, it throws an error #134.

MQL4 Website

ERR_NOT_ENOUGH_MONEY 134 : Not enough money.

Here is my code:

  int placeOrder = OrderSend(
     trade,  
     type,                  
     MarketInfo(getResult(trade, " "), MODE_MINLOT),
     buy ? Ask : Bid,                                // for the market price
     3,                                              // do this if it doesnt move more than slippage
     buy ? Ask-100*_Point : Bid+100*_Point,          // Stop loss 100 points
     buy ? Ask+200*_Point : Bid-200*_Point,          // Take profit 200 points
     "ANBai trade",                                  // comment
     0,                                              // no id number
     0,                                              // no expiration date
     Green                                           // draw green arrow
  );

  if(placeOrder<0){
     return raw + " OrderSend failed with error #"+ error(GetLastError()) +"nn";
  }else{
     return raw + " Trade executed!nn";
  }

As you know, we buy at ask and sell at bid. This error does not happen on BUY, as much as I place many trades.

  • #1

Надо добавить условие в советнике, чтобы перед отправкой торгового приказа всегда проверял, достаточно ли на счете свободной маржи для открытия позиции, ошибку выдаёт ordersend error 134 недостаточно средств для открытия ордера. Дело в том что при работе советника по принципу мартингейл бывает что баланс и эквити с положительным показателем, а маржи не достаточно для открытия ордера с определённым лотом и в итоге заваливает брокера приказами на открытие ордера пока присутствует сигнал для открытия. В голове крутится, но не могу понять как правильно сформулировать чтобы всё учесть и при этом не намусорить.
AccountFreeMargin()>0 — этого не достаточно. Надо учитывать так же лот 1-ого ордера и последующих с увеличением объёма.
Закипел уже мозг и темы в поисковике похожих нет.
Вроде нашёл что то похожее на то что мне надо: Lot*MarketInfo(Symbol(),MODE_MARGINREQUIRED)>AccountFreeMargin()
но теперь лот постоянно 0.1 и мартин не используется.
В советнике 1-ый лот 0.1 если откат цены и ордер в минусе то последующие ордера +0.16 лот

  • #2

Всё сделал, нашёл нужную формулу ))

double GetLot(int Risk){
double Free = AccountFreeMargin();
double margin = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double minLot = MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot = MarketInfo(Symbol(),MODE_MAXLOT);
double Step = MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot = MathFloor(Free*Risk/100/margin/Step)*Step;
if(Lot<minLot) Lot = minLot;
if(Lot>Max_Lot) Lot = Max_Lot;
if(Lot*margin>Free) return(0);
return(Lot);
}

Содержание

  • Как разобраться в непонятных сообщениях об ошибках MT4 (лог-файлах)
  • Вкладка Experts
  • Вкладка Journal
  • Лог-файлы
  • Заключение

Как разобраться в непонятных сообщениях об ошибках MT4 (лог-файлах)

Если вы когда-либо пользовались платформой MetaTrader 4, наверняка в какие-то моменты вы сталкивались с некоторыми проблемами.

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

Ранее мы писали об устранении неполадок советников на MetaTrader 4, но не менее важно знать, как правильно читать лог-файлы, чтобы найти причину проблемы.

Если вы один из тех пользователей, которые начинают пинать свой компьютер каждый раз, когда сталкиваются с проблемами в каком-нибудь из советников, индикаторов или скриптов на платформе MetaTrader 4, мы уверены, что вы найдёте эту статью очень полезной.

Мы занимаемся программированием на MQL4 уже 7 лет и довольно хорошо знаем, как определить, что не так с тем или иным приложением MT4, но также знаем и о том, что многие люди не умеют это сделать.

Мы получаем на электронную почту в буквальном смысле получаем сотни сообщений каждый месяц, когда люди сталкиваются с проблемами с какими-то советниками MT4 и не могут понять это.

Не поймите нас неправильно, но, похоже, большинство пользователей даже не пытается найти, в чем причина проблемы.

Надо сказать, что это вполне понятно, потому что в интернете не так уж много информации о том, как это делается.

Так что давайте копнём глубже! Мы будем неправы, если заявим, что MT4 записывает всю вашу деятельность, и позже вы сможете отследить, что именно пошло не так в определённый момент.

Но абсолютно точно, что MT4 регистрирует самые важные действия. В большинстве случаев этого более чем достаточно для понимания, что происходит.

В платформе MetaTrader 4 есть три типа логов, которые разделены по разным вкладкам в нижней части терминала: вкладка Experts, вкладка Journal, а также ещё одна вкладка Journal в «Тестере стратегий» MT4.

Но в этой статье мы расскажем о сообщениях на вкладках Experts и Journal. Бэктестинг оставим для другой статьи.

Вкладки Experts и Journal в нижней части клиентского терминала МТ4. Именно в них MetaTrader регистрирует все сообщения, чтобы сообщить пользователю о том, что происходит.

Все эти сообщения также записываются в специальные лог-файлы. Позже мы к этому ещё вернёмся.

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

Вкладка Experts

На вкладке Experts находятся сообщения, связанные с советниками, индикаторами и скриптами, которые вы запускаете в терминале MT4.

Например, когда советник отправляет запрос на открытие сделки, это всегда отображается на вкладке Experts.

То же самое относится и к любым другим торговым действиям, выполняемым советниками или скриптами.

Индикаторы не имеют права совершать торговые операции, например, открывать, изменять или закрывать сделки, но всё, что связано с индикаторами, также регистрируется в этой вкладке.

Естественно, любой советник, индикатор или скрипт можно запрограммировать на вывод пользовательских сообщений.

Эти сообщения всегда будут отображаться в той же самой вкладке Experts.

Тем не менее, вы сразу увидите, какие сообщения отправлены советником, а какие напечатаны самим терминалом MT4, чтобы сообщить о чём-то, связанном с советником.

Два различных типа сообщений на вкладке Experts в MT4.

На рисунке выше видно, что слева возле двух сообщений находится изображение «жёлтого треугольника«, а возле других изображение «серого круга«. Те, что с серым кругом, печатаются советниками.

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

Можно считать, что это советник рассказывает вам о своих действиях.

Представьте себе охранника, который проходит по всем этажам здания и заполняет специальный журнал о своей деятельности.

Этаж 1, проверено в 10:02. Этаж 2, проверено в 10:04. Этаж 3, проверено в 10:06 и так далее. Любой, кто позже прочтет этот журнал, будет знать, какие этажи он проверил и в какое время.

Изображение жёлтого треугольника указывает на то, что это сообщение связано с какой-то торговой операцией, и оно было отправлено самим клиентским терминалом MT4, но оно также связано с советником.

Другими словами, советник не может избежать печати этих сообщений.

Таким образом, каждый раз, когда советник выполняет успешную торговую операцию (например, открытие, закрытие или модификацию сделки), эта операция будет регистрироваться MT4 с “жёлтым треугольником” слева от сообщения.

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

Охранник на 1-м этаже пишет в своём журнале «Главный охранник посетил 1-й этаж в 10:02 утра«. Охранник на 2-м этаже пишет в своём журнале «Главный охранник посетил 2-й этаж в 10:04 утра«.

В приведённом выше примере одно «жёлтое» сообщение об открытии сделки, а другое – о её изменении. Советник не может избежать печати этих сообщений.

Теперь давайте посмотрим, как узнать, какой именно советник напечатал сообщение.

На этой иллюстрации показано, что сообщения на вкладке Experts были отправлены двумя плагинами MT4.

Как вы видите, вкладка Experts разделена на два столбца. Первая – это «Time«, и объяснять что-то здесь вряд ли нужно.

Надо только упомянуть, что в ней указывается время вашего компьютера. Поэтому, если часы вашего брокерского сервера (в окне Market Watch) находятся в другом часовом поясе, его время не будет совпадать со временем, напечатанным на вкладке Experts.

Вторая колонка называется “Message“, но представляет собой нечто большее. Вы можете заметить, что сообщение начинается с названия советника (индикатора или скрипта) и в нашем примере мы видим сообщения от двух разных советников.

LTC Client VIP v2.6” – это название первого советника, и “Myfxbook” – имя второго советника (вверху находятся самые свежие сообщения).

Таким образом, вы можете легко определить, какой советник отправил сообщение, что говорит о том, какой советник выполнил ту или иную операцию.

Например, из приведённого выше примера видно, что советник LTC Client открыл сделку на продажу #18662944 с размером лота 0,85 по валютной паре EURAUD по цене 1,38578.

В этом нет никаких сомнений, и сообщения во вкладке «Experts» никогда не лгут, независимо от того, что вам могут сказать другие люди. Данная сделка была открыта советником LTC Client.

Вкладка Experts в MT4 показывает, на графике какой валютной пары или другого инструмента работал тот или иной советник.

Далее, после названия советника, идет название инструмента, на котором работает данный советник. На иллюстрации выше хорошо видно, что советник LTC Client прикреплен к часовому графику EURUSD.

Советники обычно программируются так, чтобы торговать только по той валютной паре, к которой они прикреплены, однако в этом случае советник Local Trade Copier предназначен для открытия, изменения и закрытия сделок по любой паре.

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

Важно отметить, что терминал MetaTrader 4 не позволяет подключать к одному графику более одного советника, поэтому, если вы хотите запустить несколько советников на одном терминале MT4, вам придётся открыть отдельное окно графика для каждого советника.

Понятно, что это могут быть окна графиков любой валютной пары или торгового инструмента.

В нашем примере оба советника работают на часовом графике EURUSD, но на самом деле это разные окна с одинаковой валютной парой и таймфреймом.

Тот факт, что пользователь может запускать один и тот же советник на нескольких графиках одного и того же торгового инструмента, затрудняет определение того, какой именно советник отправил сообщение, потому что они оба имеют одно и то же обозначение типа “EURUSD H1” на вкладке Experts.

Поэтому для решения данной проблемы советник LTC был улучшен, и теперь он печатает специальный уникальный идентификатор окна графика, на котором работает.

Когда советник Local Trade Copier печатает сообщения на вкладке Experts терминала MT4, в их название добавляется специальный идентификатор окна графика, который помогает клиенту определить, какой именно экземпляр советника напечатал сообщение.

Это помогает в случае, если вы используете несколько советников.

Данному экземпляру советника присвоен идентификатор 73588-6000-1. В случае, если на одной и той же валютной паре будут работать другие советники, определить, какой именно советник напечатал сообщение, будет невозможно.

Но в нашем случае у обоих советников будут разные идентификаторы, и это поможет определить, каким из них было отправлено сообщение.

Этот идентификатор состоит из специального уникального номера (73588), присвоенного советнику «магического числа» (60000) и идентификатора поставщика сигналов (1).

Если вы являетесь пользователем программы Local Trade Copier, вы поймёте, что это означает.

Вы можете видеть, что сообщения с «жёлтым треугольником» не имеют этого идентификатора, а причина в том, что советник не печатает эти сообщения сам по себе, как объяснялось выше.

Поэтому мы не можем добавить в них такой идентификатор сообщения, хотя он помогает идентифицировать другие сообщения.

Сообщения от двух разных советников на вкладке Experts клиентского терминала MT4.

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

На изображении выше вы можете увидеть два советника, загруженные в разных окнах графика одной и той же валютной пары с одним таймфреймом (GBPUSD, M5), и оба этих советника отправили сообщения на вкладку Experts.

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

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

Один советник использует идентификатор сообщения [84073-222-1], в то время как другой советник использует [30815-111-1].

Если вы сами занимаетесь программированием на MQL4, можете рассмотреть возможность добавления такой функции в свои советники. Это очень сильно помогает при чтении лог-файлов.

Если вы спросите, как мы генерируем уникальный идентификатор для каждого окна графика, в ответ вы услышите: «Никак«. Мы используем специальную функцию MQL4, которая называется ChartID.

Чтение сообщений от советника

Как правило, всё, что идёт после инструмента графика и таймфрейма (на иллюстрации ниже это EURUSD, H1), является сообщением, которое сгенерировано советником.

Это может быть в буквальном смысле всё, что угодно, но не пугайтесь, если увидите много сообщений.

Если вы хотите узнать, что происходит на вашем счёте MT4, и что делает советник, просто прочтите эти сообщения, чтобы лучше понять ситуацию.

Сообщения от двух разных советников на вкладке Experts терминала MT4.

На изображении выше мы видим, что Myfxbook напечатал сообщение «Отчёт успешно загружен«.

Так что же это значит? Предположительно, советник хочет сообщить нам, что отчёт был успешно загружен в базу данных Myfxbook. Да, всё вот так просто. )

Вы заметите, что на вкладке Experts новые сообщения находятся вверху, а старые – внизу. Другими словами, вам нужно просматривать сообщения снизу вверх, чтобы сохранять правильный порядок.

Однако в логах, как вы заметите позже, сообщения сортируются по времени. Это означает, что более старые сообщения находятся наверху, и читать их нужно сверху вниз.

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

На вкладке Experts в MT4 показан код сообщения об ошибке 134: недостаточно средств.

Что насчёт ошибок? С использованием одного из своих советников мы попытались открыть сделку на 800 лотов. Давайте посмотрим, что произошло.

На изображении выше мы видим, что советник Trader on Chart выдал ошибку 134, которая означает «Недостаточно денег«, или, другими словами, размер лота слишком велик для текущего баланса счёта.

Приложение ToC также воспроизводит звуковое оповещение, которое позволяет пользователю узнать, что что-то пошло не так. А при взгляде на вкладку Experts, мы можем легко определить фактическую причину проблемы.

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

Советник MT4 выводит на график ярлык с кодом ошибки.

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

Код ошибки oe134 означает «Open Error 134» (открытая ошибка 134). Это означает, что при открытии сделки произошла ошибка 134.

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

Нажмите здесь, чтобы получить полный список возможных кодов ошибок.

Вот ещё один пример сообщения об ошибке.

Советник MT4 выводит сообщение об ошибке, связанное с неправильно указанной ценой входа для отложенного ордера BUY STOP.

Мы настроили приложение Trader on Chart для размещения отложенного ордера BUY STOP по паре NZDUSD на уровне 0,70000.

Однако этот отложенный ордер не был размещён, так как на тот момент текущая цена Ask для NZDUSD составляла 0,75207.

Цена входа для отложенных ордеров Buy Stop всегда должна быть выше цены Ask, и ее невозможно разместить ниже этой цены (нужно использовать BUY LIMIT, если вы хотите разместить ордер ниже цены Ask).

По этой простой причине советник напечатал сообщение об ошибке «Неверная цена входа для BUY STOP 0.70000», а также внёс в запись цены Ask и Bid.

Вкладка Journal

Остальные типы сообщений, которые не генерируются плагинами MT4, хранятся на вкладке Journal.

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

На вкладке Journal в MT4 регистрируются сообщения об ошибках, полученные от сервера брокера.

Помните сделку на 800 лотов? Когда сервер брокера отказался открыть такую сделку, советнику было отправлено сообщение об этом и мы увидели запись об ошибке в логах.

Но также мы видим, что на вкладке Journal появилось ещё одно сообщение об ошибке.

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

Это сообщение об ошибке также чётко указывает на то, что вам не хватило денег для открытия ордера на покупку 800 лотов по паре NZDUSD по рыночной цене.

Вкладка Journal также разделена на два столбца: Time и Message. Для этих пунктов не требуется никаких объяснений, но в сообщениях об ошибках нам особенно нравится то, что они имеют это маленькое изображение красного круга с левой стороны, которое поможет вам их легко обнаружить.

Стоит отметить, что мы уделяем не очень много внимания вкладке Journal, потому что в основном торгуем с помощью советников, и все сообщения, которые нам нужны, находятся на вкладке Experts.

Но не нужно недооценивать информацию, показанную во вкладке Journal. Её стоит изучить, если вы не можете найти объяснение в других местах.

Лог-файлы

Лог-файлы хранят в основном те же сообщения, которые вы найдете на вкладках Experts и Journal, но понятно, что лог-файлы могут хранить гораздо больше сообщений.

Если вы закроете и снова откроете платформу MT4, вы увидите, что на вкладках Experts/Journal никаких сообщений не останется. Их запись начинается заново, и все старые сообщения переносятся в лог-файлы.

Обычно передача сообщений с вкладок Experts/Journal в лог-файлы в режиме реального времени занимает некоторое время, поэтому, если вы хотите найти последние сообщения в лог-файлах, закройте платформу MT4 и подождите несколько секунд.

Сообщения со вкладки Experts сохраняются в лог-файлах, расположенных в папке Data FolderMQL4Logs.

Сообщения с вкладки Journal сохраняются в лог-файлах, расположенных в папке Data FolderLogs (эти файлы не сильно помогают при решении проблем, связанных с торговлей по советникам).

Папку «Data Folder» можно открыть непосредственно с платформы MT4 через пункт меню «File -> Open Data Folder«. Здесь хранятся все лог-файлы, а также советники, индикаторы, скрипты и другие файлы.

Доступ к папке данных MT4 из верхнего меню.

После открытия папки Data Folder вам нужно перейти в папку MQL4, а затем в папку Logs. Вот как выглядят лог-файлы со вкладки Experts у нас на компьютере.

Лог-файлы MQL4 от советников в папке данных платформы MT4.

Как видите, название каждого лог-файла является датой в формате YYYYMMDD. Это поможет легко найти то, что вы ищете.

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

Поэтому, если кто-то попросит вас отправить ему лог-файл от 13 апреля 2015 года, мы рекомендуем отправить сразу три лог-файла: 20150412.log, 20150413.log, 20150414.log.

То есть, вы должны добавить файлы журнала за предыдущий и следующий день.

Чтение лог-файла

При открытии лог-файла в любом текстовом редакторе, таком как Notepad или Notepad++, вы увидите все сообщения, записанные в этот день.

Важно отметить, что существует ограничение на длительность сообщения на вкладке Experts, но нет ограничений на то, как долго сообщения могут храниться в лог-файле.

Поэтому, если на вкладке Experts какое-то сообщение оказалось обрезанным, полное сообщение вы наверняка найдёте в лог-файле.

Сообщения от советников MT4, напечатанные в лог-файле.

На изображении выше вы можете увидеть пример того, как это выглядит.

В принципе, формат такой же, как и на вкладке Experts, за исключением того, что изображения «жёлтого треугольника» преобразуются в цифру 2, а изображения «серого круга» в 0.

Далее идёт время, название советника, график инструмента и таймфрейм, и, наконец, само сообщение.

Еще один простой способ получить доступ к лог-файлам – щёлкнуть правой кнопкой мыши в любом месте вкладки Experts и выбрать пункт Open.

Щёлкните правой кнопкой мыши в любом месте вкладки Experts или Journal и выберите пункт «Открыть» для доступа к лог-файлам.

Выполнение этого действия на вкладке Experts откроет вам папку с лог-файлами Experts, а с вкладки Journal откроется папка с лог-файлами Journal.

Остальные пункты из этого меню не требуют пояснений, но нам особенно нравятся следующие варианты: Copy, View и “Auto Scroll“.

Опция «Auto Scroll» используется редко, но когда у нас возникают проблемы с каким-то советником, который печатает огромное количество сообщений в лог, бывает полезно включить «Auto Scroll».

Это позволит просто смотреть на сообщения вместо того, чтобы наблюдать их автоматическую прокрутку вниз, что даже не даст вам прочитать, что в них говорится.

Функция Copy просто копирует выбранные сообщения в буфер обмена, чтобы вы могли вставлять их в другие приложения.

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

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

Опция View (просмотр) позволяет фильтровать сообщения в логах советников. Вот окно, которое при этом открывается.

MT4 позволяет искать сообщения в лог-файле по дате и фразе.

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

В приведённом выше примере мы вводим номер сделки 18831445, выбираем диапазон дат последних двух дней, и после нажатия кнопки запроса мы получаем сообщения с этим номером сделки.

Как отправить несколько лог-файлов в виде одного файла

Это очень просто. Для того, чтобы отправить несколько файлов журналов в виде одного файла, вам необходимо упаковать их в так называемый ZIP-архив.

На любом компьютере с Windows это делается очень легко.

Все, что вам нужно сделать, это открыть папку Logs, выбрать файлы, которые вы хотите упаковать, затем нажмите правую кнопку мыши и в меню выберите “Sent to -> Compressed (zipped)“.

Упаковка лог-файлов MT4 в zip-архив для удобства передачи.

На изображении ниже вы можете увидеть, как выглядит .zip-архив со сжатыми файлами.

Семь файлов журнала сжаты и упакованы в один файл .zip, который теперь можно отправить по электронной почте.

Это также экономит место. Эти 7 файлов в общей сложности весят 105 КБ, а архив .zip – всего 12 КБ.

Семь лог-файлов MT4, сжатых в один ZIP-архив.

Для того, чтобы распаковать .zip-архив, вам необходимо кликнуть правой кнопкой мыши по файлу и в всплывающем меню выбрать пункт «Extract All…«.

Извлечение Zip-архива со сжатыми и упакованными лог-файлами MT4.

Заключение

Благодаря простому чтению сообщений на вкладках Experts или Journal в вашей платформе MetaTrader 4 вы можете легко определить и решить проблемы, связанные с вашими советниками, индикаторами и скриптами.

Многие люди бросают всё слишком рано или тратят много времени, пытаясь решить проблему с помощью команды поддержки производителя программного обеспечения.

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

Помогла ли вам эта статья? Поделитесь информацией с друзьями и оставьте свои комментарии ниже.

Возможно вам также будет интересно прочитать статьи

Как закрыть все открытые сделки на MT4 в определённое время

Взламываем Metatrader, чтобы создать идеальный инструмент для определения соотношения риска и вознаграждения

Лучший способ установить много MT4 на один компьютер [или VPS]

Privatfinance

Над статьями работает команда авторов, переводчиков и редактор. На сайте команда Privatefinance.biz публикует информационные статьи, обзоры, рейтинги, гайды о торговле на финансовых рынках и инвестировании, рекомендации по выбору брокера и инструментов инвестирования, актуальные новости из мира финансов.

Почта для связи с нами: [email protected]

Некоторые наиболее часто возникающие проблемы- ошибки в работе форекс — советников и возможные способы их решения. Коды ошибок можно узнать, посмотрев папки «Эксперты» и «Журнал» панели «Терминал», или папку «Журнал» панели «Тестер», если ошибки происходят в процессе тестирования.

ошибки в работе советника мт4

Ошибки в процессе тестирования советника

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

Все коды ошибок.

ошибка 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. Проверьте, Минимальный и Максимальный лот в Вашем ДЦ и на Вашем счете. На некоторых типах счетов, минимальный лот может быть 0.01 а также 0.1 и даже 3. Максимальный лот может быть 5 лотов и 999 лотов и другие.

3. Уточните разрядность лотов на Вашем сервере. Если например разрядность лотов=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

Остаток от деления на ноль
1. Вы пытаетесь поделить число на 0.

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

ошибка 4017
Вызовы DLL не разрешены
1. В Вашем терминале запрещен вызов DLL

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

ошибка 4018 , 4019
Невозможно загрузить библиотеку
1. Библиотека повреждена
2. Вызов библиотеки осуществляется с ошибкой

Способы решения:
1. Проверьте библиотеку DLL
2. Обратитесь к разработчику данной библиотеки

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

ошибка 4103
Невозможно открыть файл
1. Данный файл не существует
2. Данный файл заблокирован

Способы решения:
1. Проверьте наличие указанного файла в папке experts – files Тester – files
2. Проверьте не заблокирован ли файл системой антивируса. Разрешен ли режим записичтения файла

ошибка 4106
Неизвестный символ
1. Символа нет в обзоре рынка

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

ошибка 4108
Неверный номер тикета
1. Тикет ордера, который выбирает эксперт – не существует
2. Эксперт пытается выбрать тикет, но данный ордер был закрыт другим советником или руками.
3. При попытке осуществления приказа над ордером, тикет был исполнен и закрыт брокером.

Способы решения:
1. Если данная ошибка появляется очень часто, 100-1000 раз за минуту, проверьте функции Вашего советника
2. Отключите другие советники, или настройте их так, чтобы они не конфликтовали, не закрывайте ордер руками, когда эксперт выполняет операцию

ошибка 4109
Торговля не разрешена
1. Советнику запрещено торговать, на графике грустный смайл или крестик

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

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

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

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

Другие статьи по теме:

Устранение ошибок в работе эксперта

Коды ошибок в работе советников форекс (константы MQL4)

Тонкости работы торгового терминала MetaTrader4

Очистка терминала МТ4

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

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • 133e10 ошибка bmw n55
  • 1313 ошибка пежо 206
  • 131201 ошибка бмв
  • 1312 ошибка сааб

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

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