Решил начать программировать на mql. Написал советник , проверяя как открываются и закрываются ордера. Открывается ордер при соответствующих условиях нормально, а при закррытии появляется Error 4051 — Invalid ticket to OrderClose Function. Помогите пожалуйста разобраться, что я делаю не так. Код советника ниже.
double MA;
MA=iMA(NULL,0,MA_Period,0,MODE_SMA,0,0);
int T;
T=OrdersTotal();
int ticket;
bool a;
После открытия позиции тикет у Вас не сохраняется. И при следующем запуске start переменная ticket инициализируется нулём. Нужно объявить ею как статическую или глобальную чтобы её значение сохранялось. Также полезно контролировать выполнение функции OrderSelect , например:
выбираю ордер, узнаю тип, узнаю тиккет, пытаюсь удалить отложенный ордер — выдаёт ошибка 4051
if (a2>1)
OrderDelete(ticket2);
Alert (GetLastError()); // Сообщение об ошибке 4051
Ордера на продажу переводит в без убыток нормально, а тралить начинает с ошибки 4051. Выдает 130. Но если условие соответствует, модифицирует.
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13398 tp: 0.00000 ok
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13418 tp: 0.00000 ok
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №4051
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: OrderModify error 4051
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: invalid stoploss for OrderModify function
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс в безубыток
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13438 tp: 0.00000 ok
2021.04.15 21:18:45.233 2019.01.24 18:15:00 %WR EURUSD,M15: Ордер OP_SELL открыт!
А с ордерами на покупку все ОКей.
ПС. Нормализация не помогает. Да к тому же все нормализовано в OnInit.
Источник
MT4 Error 4051: How to Fix Invalid Trading Lot Amount
What is MT4 error 4051?
The MT4 error 4051 is a MetaTrader OrderSend error suggesting the trading platform is denying an order due to an invalid trading lot amount.
Whenever an MT4 receives a trade request, it thoroughly examines the parameters of the order. When an EA sends an order request, the system automatically verifies the maximum and minimum limit of trading volumes allowed for the particular entry. At any point, the platform detects an order with a trading lot that you are not permitted to execute; it denies the order request showing ERR_INVALID_FUNCTION_PARAMETER_VALUE.
An OrderSend error 4051 doesn’t necessarily mean the system rejects all the trade requests or disables your trading bot permanently. The MT4 executes an order immediately when it comes with an appropriate amount of trading lot. On the other hand, the restriction over the trading volume prevents your account from suffering unexpected losses due to the wrong parameters of an EA.
Why does MT4 error 4051 happen?
You are exceeding your trading limit
The minimum order limit in MT4 is 0.01 lots, and the maximum limit is 200 lots. If your bot determines a trading lot less than 0.01 or greater than 200, the system will reject the order and show the OrderSend error 4051.
In some cases, your broker server might fail to read the lot amount correctly. For instance, you are trying to execute an order with 0.01 volume, but the minimum order limit of the broker is 0.1. So the server will define the volume as invalid since it turns lesser than the minimum order limit.
Conversely, if you ever try to place an order with more than 200 lots at a time, the MT4 will still refuse to activate the order because it exceeds the maximum trade volume limit.
Your EA is generating inappropriate order parameters
Such problems mainly occur due to an error in EA coding. A malfunction in the programming code may tempt your bot to produce unrealistic trading lot figures which are not recognized as valid parameters by MetaTrader or the broker server.
Apart from an invalid trading lot, your trade can be disallowed for the malfunction of other parameters. For instance, you cannot place a buy order with a stop-loss limit greater than your trade entry or take profit level. These types of problems may happen for two reasons:
- An error in the EA coding
- The EA is not compatible with the trading system
How to fix MT4 error 4051?
How to fix OrderSend error for invalid lot amount
- Use NormalizeDouble in your code
When the system confirms an invalid function parameters value, you may consider using the NormalizeDouble function:
Parameters:
value – determines a value with a floating point.
digits – determines the accuracy formate such as the number of digits after the decimal point.
Please note that you must normalize all the values calculated for stop-loss, take-profit, and pending order prices.
Adjust the value of NormalizeDouble
Sometimes a normalized number may become greater than the DoubleToString value like the following example:
Make sure normalized figures are rounded
Here is an example showing how to keep the normalized values round figured:
Broker trading limitations for lot size
f your system still shows the OrderSend error 4051, it might be an issue with your broker trading limitations. In that case, contact the broker and try to be more specific about their maximum and minimum limit of trading lots.
Источник
Ошибка 4051
В истории есть закрытые ордера.
Выбирать ордер нужно в цикле (в общем случае)
Например так (МТ4) —
Дело не в том, какой цикл использовать (можно хоть for, хоть while), а в том, как он построен. В коде, который Вы привели, цикла нет вообще, выбирается ордер, которого заведомо нет в списке. Проверки успешности выбора ордера тоже нет.
Параметры в функции OrderSend вообще очень странные.
Дело не в том, какой цикл использовать (можно хоть for, хоть while), а в том, как он построен. В коде, который Вы привели, цикла нет вообще, выбирается ордер, которого заведомо нет в списке. Проверки успешности выбора ордера тоже нет.
Параметры в функции OrderSend вообще очень странные.
Не нужно рассчитывать на историю счета. В МТ4 пользователь может изменить глубину отображения истории, чем собьет с толку любой алгоритм, ориентирующийся на нее. Лучше отслеживать наличие ордеров, открытых советником, в списке рабочих ордеров. И только тогда, когда ордер исчез из этого списка (был закрыт), открывать следующий ордер.
Не нужно рассчитывать на историю счета. В МТ4 пользователь может изменить глубину отображения истории, чем собьет с толку любой алгоритм, ориентирующийся на нее. Лучше отслеживать наличие ордеров, открытых советником, в списке рабочих ордеров. И только тогда, когда ордер исчез из этого списка (был закрыт), открывать следующий ордер.
Эксперт работает не с одним ордером? Тогда все усложняется. При открытии каждого ордера нужно запомнить его тикет в собственном массиве. А потом на каждом тике проверять, существует ли этот ордер.
При открытии ордера:
Затем для проверки существования ордера:
Ну и кроме того нужно озаботиться сохранением накопленных данных (в файл, к примеру) для случаев прерывания работы советника.
Эксперт работает не с одним ордером? Тогда все усложняется. При открытии каждого ордера нужно запомнить его тикет в собственном массиве. А потом на каждом тике проверять, существует ли этот ордер.
При открытии ордера:
Затем для проверки существования ордера:
Ну и кроме того нужно озаботиться сохранением накопленных данных (в файл, к примеру) для случаев прерывания работы советника.
Это всего лишь пример кода. Писалось даже без проверки синтаксиса. Смысл — показать направление. Поэтому могут быть какие-то мелкие ошибки.
Это всего лишь пример кода. Писалось даже без проверки синтаксиса. Смысл — показать направление. Поэтому могут быть какие-то мелкие ошибки.
Источник
Error 4051, somewhere in code?
Im trying to backtest this martingale EA and i get this error 4051 in the journal, and i can see it
effects up to 50% of orders from opening, when i compiled the code this warning comes up
» return value of ‘OrderModify’ should be checked Template EA.mq4 265 14″
i have pasted the part of the code below where the warning is, unfortunately i dont know how to code just yet, and wouldnt
have a clue how to fix it.
Anybody can help me with it?
return value of ‘OrderModify’ should be checked Template EA.mq4 265 14
First, the 4051 error is a runtime error that exists in your OrderSend() function call. From the info in the log, it appears that the information contained in the lotsize variable you are passing to OrderSend() is invalid. Check how you are calculating the lot size to find the error. Also, please use the search function to compare your calculation for lot size to others who have posted/answered questions in this forum about lot size calculation.
Finally, here is a link to a good discussion regarding checking return values:
Thanks for the reply i have given a good shot at the information you gave me, but i really have no idea how to code yet, im just starting to learn
and i really want to use and backtest this EA, any chance you can have a quick look at the code for me? i think it is a very easy fix just i wouldnt have a clue where to start..
i attached it if you have the time would be super helpful 🙂
If you really have no idea how to code yet, it really is better if you start with small and simple code and thereafter work into more and more complex coding once you get better and more comfortable with the language. Just a suggestion.
I’m not going to debug your code. you will learn more about coding and MQL4 if you do it yourself. This forum has many, many answers—you just have to search for them. With that said, I do have a suggestion: try not to use NormalizeDouble() in your normalizelot() function; the results may be unreliable in this context.
I suggest the following instead:
This code forces your lot size (aka, size) to be a multiple of lotstep, rather than rounded to the nearest decimal digit of lotstep. It also forces «size» to be at or above minlot and at or below maxlot, as you had in your code.
Источник
OrderClose error 4051
Hi, I have been trying out two EAs in S/Tester; one is a BUY oriented EA, the other is exactly the same but SELL oriented. The Buy oriented works fine fine but the Sell gives ‘OrderClose error 4051’
I’ve narrowed this down to the specific area of code but, apart from long/short trade difference, can’t why one works and not the other.
This is the first time I’ve asked this forum for help, but just about given up on this one.
All comments welcome. Many thanks.
When you post code please use the CODE button (Alt-S)!
Did you read Sergey’s post?
Sergey Golubev :
When you post code please use the CODE button (Alt-S)!
Please edit your post and use the code button (Alt+S) when pasting code.
EDIT your original post, please do not just post the code correctly in a new post.
Did you read Sergey’s post?
Please edit your post and use the code button (Alt+S) when pasting code.
EDIT your original post, please do not just post the code correctly in a new post.
Re-post it. Yes okay.
This is a re-post.
Hi, I have been trying out two EAs in S/Tester; one is a BUY oriented EA, the other is exactly the same but SELL oriented. The Buy oriented works fine fine but the Sell gives ‘OrderClose error 4051’
I’ve narrowed this down to the specific area of code but, apart from long/short trade difference, can’t why one works and not the other.
The two sets of code are:-
— Buy Oriented EA that works:
Sell Oriented EA Code giving Errors: «OrderClose error 4051″ and » invalid ticket for OrderClose function»:
So far as I can see it’s the ‘Retracement’ part of the code which is giving the problem. All contributions gratefully received. Many thanks
Источник
Adblock
detector
В исполняющей подсистеме клиентского терминала имеется возможность сохранения кода ошибки в случае ее возникновения при выполнении 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.
I’m getting a error 4051 with this code when I use it with a OrderModify function, but only on the take profit part. the stoplose modifies correctly. Any ideas as to why?
double LStopLose = iOpen(NULL, 0,0) — (iATR(NULL, 0, 5, 1) * 2);
double SStopLose = iOpen(NULL, 0,0) + (iATR(NULL, 0, 5, 1) * 2);
double LTakeProfit = iOpen(NULL, 0,0) + (iATR(NULL, 0, 5, 1) * 3);
double STakeProfit = iOpen(NULL, 0,0) — (iATR( NULL, 0, 5, 1) * 3);
Show your order and the calculations that lead up to it.
I was having some 130 errors, so I made two modifies, put alerts on them to see if it was the take profit or stop lose
ok, figured out the src thing, thought it was something in the meta trader program, not this board.
I’ll check your answer sometime tomorrow. good night.
Second. Wat can be it mean?
Please read documentation. OrderTicket returns ticket number for the currently selected order.
Note: The order must be previously selected by the OrderSelect() function. I.e. you can use OrderTicket function only after OrderSelect!
Ok, you get ticket number (for example returned from OrderSend). For example this ticket number is 10002345. What do You mean using SELECT_BY_POS value?
1. You must call OrderSelect function before using OrderTicket
ok, so i look at this code from a sample EA that comes with the meta trader program.
with ‘ticket’ being defined as the OrderSend line, how does that get defined as the ordernumber?
OrderSelect(index, SEL_BY_POSITON); — first time through selects order #4,which is ticket E
int ticket = OrderTicket(); —- returns the ticket number of ticket E — the «selected» ticket
double price = OrderOpenPrice(); — returns the opening price for ticket E — the «selected» ticket
Решил начать программировать на mql. Написал советник , проверяя как открываются и закрываются ордера. Открывается ордер при соответствующих условиях нормально, а при закррытии появляется Error 4051 — Invalid ticket to OrderClose Function. Помогите пожалуйста разобраться, что я делаю не так. Код советника ниже.
double MA;
MA=iMA(NULL,0,MA_Period,0,MODE_SMA,0,0);
int T;
T=OrdersTotal();
int ticket;
bool a;
После открытия позиции тикет у Вас не сохраняется. И при следующем запуске start переменная ticket инициализируется нулём. Нужно объявить ею как статическую или глобальную чтобы её значение сохранялось. Также полезно контролировать выполнение функции OrderSelect , например:
выбираю ордер, узнаю тип, узнаю тиккет, пытаюсь удалить отложенный ордер — выдаёт ошибка 4051
if (a2>1)
OrderDelete(ticket2);
Alert (GetLastError()); // Сообщение об ошибке 4051
Ордера на продажу переводит в без убыток нормально, а тралить начинает с ошибки 4051. Выдает 130. Но если условие соответствует, модифицирует.
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс
2021.04.15 21:18:45.263 2019.01.24 18:51:05 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13398 tp: 0.00000 ok
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №130
2021.04.15 21:18:45.263 2019.01.24 18:51:04 %WR EURUSD,M15: OrderModify error 130
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13418 tp: 0.00000 ok
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс не удалось. Ошибка №4051
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: OrderModify error 4051
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: invalid stoploss for OrderModify function
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: Ордер OP_SELL за №33: модифицирован стоп лосс в безубыток
2021.04.15 21:18:45.263 2019.01.24 18:51:03 %WR EURUSD,M15: modify #33 sell 0.10 EURUSD at 1.13438 sl: 1.13438 tp: 0.00000 ok
2021.04.15 21:18:45.233 2019.01.24 18:15:00 %WR EURUSD,M15: Ордер OP_SELL открыт!
А с ордерами на покупку все ОКей.
ПС. Нормализация не помогает. Да к тому же все нормализовано в OnInit.
Источник
Can´t find the reason why OrderModify Error 4051 is happening
I just can´t find why my EA is showing this error when I use the Trailing Stop option.
I am attaching here the code where I call the function Trailing Stop and then the function itself
After that I am showing the messsages from the Alerts That I have inserted in the code
In short, The StopLoss of the Selected Order is the same as the new Stop Loss that the trailing Stop is calculating
If I am right, I have specifically coded that in such case the EA will not run the OrderModify function
But the Error 4051 is happening even though the OrderModify function is not being called
Well, at least that is my deduction
Will someone please check what is wrong with my code?
This is the Trailing Stop function
so, after I check that Modify==false, there is a break instruction, so the EA should get out of the while(true) loop and should NOT execute the OrderModify instruction, but somehow it is beeing called and if my new SL is equal to the OrderStopLoss then error 4051 is understandable. But why is the OrderModify instruction being executed, will someone please explain?
here are the messages when I backtested the EA:
What I see here is that the new SL (variable SL) is 1.3418 and the OrderStopLoss (variable loss) is exactly 1.3418
That is why the condition if (SL
Have you looked up the meaning of 4051:Invalid function parameter value. So try to change the values of OrderModify(..), like price, SL, and profit.
Check the minimal difference (MODE_STOPLEVEL and MODE_FREEZELEVEL)
Maybe instead of price use either OrderOpenPrice() or 0 as you don’t change a pending order , .
There is another section in my code where I modify the initial Sl and TP values for a recently opened trade.
Might it be possible that the error is being generated THERE and that the sentence Error=GetLastError() is receiving the Error generated on that part of the code?
BTW, thanks for your answer , I will check the parameters ‘ values on both OrderModify funtions.
best regards. JHF
So then why is the EA showing «Occurred error 4051»?
That is the last error that happened . . . it may be completely somewhere else in your code . . . and completely unrelated to your Trailing Stop function, if you want to check this then at the start of your Trailing Stop function add . . . ResetLastError();
Part of the issue is that your trailing stop function returns False even if there was no failure . . . then you go looking for an error . . . why ? you need to fix this design flaw.
That is the last error that happened . . . it may be completely somewhere else in your code . . . and completely unrelated to your Trailing Stop function, if you want to check this then at the start of your Trailing Stop function add . . . ResetLastError();
Part of the issue is that your trailing stop function returns False even if there was no failure . . . then you go looking for an error . . . why ? you need to fix this design flaw.
I am getting the same kind of error message but with openselect function ( OrderSelect returned error of 4051):
Can anyone help please?
Here is copy of my journal:
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 2 Total Trades : 3
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 1 Total Trades : 3
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 0 — Position : 0 Total Trades : 3
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: open #6 sell 0.10 EURGBP- at 0.83859 tp: 0.83429 ok
2014.12.08 15:25:41.375 2014.03.25 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (UP) — ### : 4
2014.12.08 15:25:41.093 2014.03.24 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:41.093 2014.03.24 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 1 Total Trades : 2
014.12.08 15:25:41.093 2014.03.24 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 0 — Position : 0 Total Trades : 2
2014.12.08 15:25:41.093 2014.03.24 00:00 Testing_loop_v1 EURGBP-,Daily: open #5 sell 0.10 EURGBP- at 0.83601 tp: 0.83421 ok
2014.12.08 15:25:41.093 2014.03.24 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (UP) — ### : 3
2014.12.08 15:25:40.906 2014.03.21 10:38 Tester: take profit #4 at 0.83650 (0.83650 / 0.83657)
2014.12.08 15:25:40.843 2014.03.21 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:40.843 2014.03.21 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 0 — Position : 1 Total Trades : 2
2014.12.08 15:25:40.843 2014.03.21 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 0 — Position : 0 Total Trades : 2
2014.12.08 15:25:40.843 2014.03.21 00:00 Testing_loop_v1 EURGBP-,Daily: open #4 buy 0.10 EURGBP- at 0.83475 tp: 0.83650 ok
2014.12.08 15:25:40.843 2014.03.21 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (DOWN) — ### : 2
2014.12.08 15:25:40.656 2014.03.20 13:47 Tester: take profit #1 at 0.83415 (0.83408 / 0.83415)
2014.12.08 15:25:40.500 2014.03.20 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:40.500 2014.03.20 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 0 — Position : 1 Total Trades : 2
2014.12.08 15:25:40.500 2014.03.20 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 0 Total Trades : 2
2014.12.08 15:25:40.500 2014.03.20 00:00 Testing_loop_v1 EURGBP-,Daily: open #3 buy 0.10 EURGBP- at 0.83625 tp: 0.83969 ok
2014.12.08 15:25:40.500 2014.03.20 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (DOWN) — ### : 1
2014.12.08 15:25:40.437 2014.03.19 22:26 Tester: take profit #2 at 0.83607 (0.83600 / 0.83607)
2014.12.08 15:25:40.125 2014.03.19 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:40.125 2014.03.19 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 1 Total Trades : 2
2014.12.08 15:25:40.125 2014.03.19 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 0 Total Trades : 2
2014.12.08 15:25:40.125 2014.03.19 00:00 Testing_loop_v1 EURGBP-,Daily: open #2 sell 0.10 EURGBP- at 0.83967 tp: 0.83607 ok
2014.12.08 15:25:40.125 2014.03.19 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (UP) — ### : 2
2014.12.08 15:25:36.718 2014.03.18 00:00 Testing_loop_v1 EURGBP-,Daily: OrderSelect returned error of 4051
2014.12.08 15:25:36.718 2014.03.18 00:00 Testing_loop_v1 EURGBP-,Daily: Type : 1 — Position : 0 Total Trades : 1
2014.12.08 15:25:36.718 2014.03.18 00:00 Testing_loop_v1 EURGBP-,Daily: open #1 sell 0.10 EURGBP- at 0.83672 tp: 0.83415 ok
2014.12.08 15:25:36.718 2014.03.18 00:00 Testing_loop_v1 EURGBP-,Daily: Alert: ### — New BAR (UP) — ### : 1
And here is part my code:
for(int pos=0;pos v_total_trades = OrdersTotal();
// I am just displaying a message for now so I can find the problem,
Print(«Type : «, OrderType() + » — Position : «, pos + » Total Trades : » + v_total_trades);
Print(«OrderSelect returned error of «,GetLastError());
Источник
Adblock
detector