Ошибка 4756 - страница 2

 
Aleksey Mavrin:

Почему решили что именно тип исполнения по заливке вызвал ошибку? Может другие варианты тип по времени действия например?

Я выше привёл код, который находится в конце моей функции, которая открывает рыночные ордера:

  if (m_result.order < 1) {
    writeLog(MESSAGE_ERROR, __FUNCTION__ + " { position wasn't sent! " + "m_result.retcode = '" + iToS(m_result.retcode) + "' | " +
                                                                         "orderType = '" + EnumToString(m_request.type) + "' | " +
                                                                         "orderPrice = '" + dToS(m_request.price) + "' | " +
                                                                         "sl = '" + dToS(m_request.sl) + "' | " +
                                                                         "tp = '" + dToS(m_request.tp) + "' | " +
                                                                         "typeFilling = '" + (string)ENUM_ORDER_TYPE_FILLING(m_request.type_filling) + "' | " +
                                                                         "spread = '" + dToS(m_symbol.spread()) + "' }");
    if (_LastError > 0)    //---- Контролируем возможные ошибки
      writeLog(MESSAGE_ERROR, __FUNCTION__ + " { _LastError = '" + iToS(_LastError) + "' }");
    return false;
  }

Так вот после пачки ошибок:

2020.12.16 23:42:40.742 2020.01.03 08:00:02   failed market sell 0.001 EURUSD sl: 1.12462 tp: 1.07462 [Invalid volume]

***

***

***

2020.12.16 23:42:40.742 2020.01.03 08:00:03   failed market sell 0.001 EURUSD sl: 1.12462 tp: 1.07462 [Invalid volume]

Я вижу, что writeLog() принтует  в журнал следующее:

2020.12.16 23:42:40.742 2020.01.03 08:00:03   PositionsHandling::open { position wasn't sent! m_result.retcode = '10014' | orderType = 'ORDER_TYPE_SELL' | orderPrice = '1.11662' | sl = '1.12462' | tp = '1.07462' | typeFilling = '1' | spread = '0.00003' }
2020.12.16 23:42:40.742 2020.01.03 08:00:03   PositionsHandling::open { _LastError = '4756' }

Здесь видно, что в ходе отправки ордера произошла ошибка 4756 т.е. "Не удалось отправить торговый запрос", а значение m_result.retcode = 10014 т.е. не правильный объём. Очевидно, что проблема в лоте. Как ещё это можно понимать?

Ещё нужно обратить внимание на значение typeFilling = 1, соответствующее перечислению (SYMBOL_FILLING_FOK)


Теперь, я ради эксперимента, непосредственно перед отправкой ордера присваиваю значение типа заливки ордера 2, соответствующее перечислению SYMBOL_FILLING_IOC. Делаю я это вот так:

  m_request.type_filling = SYMBOL_FILLING_IOC;

Вот что вернёт функция writeLog() после отправки ордера:

2020.12.16 23:54:50.920 2020.01.03 08:00:03   PositionsHandling::open { position wasn't sent! m_result.retcode = '10030' | orderType = 'ORDER_TYPE_SELL' | orderPrice = '1.11662' | sl = '1.12462' | tp = '1.07462' | typeFilling = '2' | spread = '0.00003' }
2020.12.16 23:54:50.920 2020.01.03 08:00:03   PositionsHandling::open { _LastError = '4756' }

.Вижу, что ошибка возвращаемая посредством m_result.retcode на сей раз другая, а точнее 10030 т.е. "Указан неподдерживаемый тип исполнения ордера по остатку ".

Вот я и показал, что как не задай, всё равно ордер не выставить.


Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
OrderSend - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Viktar Dzemikhau:

Я выше привёл код, который находится в конце моей функции, которая открывает рыночные ордера:

Так вот после пачки ошибок:

Я вижу, что writeLog() принтует  в журнал следующее:

Здесь видно, что в ходе отправки ордера произошла ошибка 4756 т.е. "Не удалось отправить торговый запрос", а значение m_result.retcode = 10014 т.е. не правильный объём. Очевидно, что проблема в лоте. Как ещё это можно понимать?

Очевидно неправильный объём не связан с режимом заливки. Ну да о чём я))

объём 0,001 лота поддерживается на счёте? если нет  значит причина в нём. 

 
Aleksey Mavrin:

Очевидно неправильный объём не связан с режимом заливки. Ну да о чём я))

объём 0,001 лота поддерживается на счёте? если нет  значит причина в нём. 

Интересно. В настройках явно на один ноль после запятой меньше. А, по факту, больше. На Альпари всё так работает. На FXOpen нет. В общем, я уже сонный. Завтра принтатну в чём так косяк. Может реально не в этом дело, а я загнался.

 
Viktar Dzemikhau:

Интересно. В настройках явно на один ноль после запятой меньше. А, по факту, больше. На Альпари всё так работает. На FXOpen нет. В общем, я уже сонный. Завтра принтатну в чём так косяк. Может реально не в этом дело, а я загнался.

Должен пошутить, ничего личного, просто долг)

шутка вообщем такая: Судя по тому что на ошибку [Invalid volume] вы сразу не проверили собственно volume, сонный вы часто и уже давно. ха-ха-ха, зал апплодирует)  Высыпайтесь, полезно для здоровья.

 
Viktar Dzemikhau:

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

В той одной строке инклуда и ответ на ваш вопрос есть.

Зря пытаетесь обидеть, может и мой совет когда-то пригодился бы.

 
Aleksey Mavrin:

Должен пошутить, ничего личного, просто долг)

шутка вообщем такая: Судя по тому что на ошибку [Invalid volume] вы сразу не проверили собственно volume, сонный вы часто и уже давно. ха-ха-ха, зал апплодирует)  Высыпайтесь, полезно для здоровья.

Благодарю за совет. Вы правы! Я нынче уже сдвинул режим прилично. Несколько дней у меня выдались интенсивые. Пришлось поездить на длительные расстояния по делам. Встречи, беготня и тд. Замотался. А интерес был огромный до ума довести свою писанину. То что писал всё работает на других терминалах. Причём на 4-ке и 5-ке. А здесь, как оказалось нужно было сбросить настройки у бота. Для тестера это делается чутка иначе. Вот я и застрял чутка.

 
Andrey Khatimlianskii:

В той одной строке инклуда и ответ на ваш вопрос есть.

Зря пытаетесь обидеть, может и мой совет когда-то пригодился бы.

Вопрос не в обидах. Я чётко указал то, что меня очень интересует. А ответ увидел типа смотри вон.. туда. В принципе, как под копирку в смежных разделах. Любой программист, который пишет на любом языке знает, что чей-то код читать сложнее, чем свой. Иногда это имеет смысл, а иногда проще услышать какой-то либо совет и перенять его.

Я не спорю, некоторым нужно получить готовое решение. Такие достаточно много. Кто-то желает, чтобы ему написали бесплатно или за деньги. Мне же интересно, понять как это работает и добавить это себе. И чаще всего вопросы касаются, именно, MQL, т.к. написать я могу всё, что мне нужно. А вот логику некоторых понятий или терминала иногда приходится догнать, ровно как это было в этот раз. С кодом всё было в порядке. Но вот в параметрах я не сменил значение лота. Ответ оказался элементарнейшим.. ((

 
Viktar Dzemikhau:

Вопрос не в обидах. Я чётко указал то, что меня очень интересует. А ответ увидел типа смотри вон.. туда. В принципе, как под копирку в смежных разделах. Любой программист, который пишет на любом языке знает, что чей-то код читать сложнее, чем свой. Иногда это имеет смысл, а иногда проще услышать какой-то либо совет и перенять его.

Я не спорю, некоторым нужно получить готовое решение. Такие достаточно много. Кто-то желает, чтобы ему написали бесплатно или за деньги. Мне же интересно, понять как это работает и добавить это себе. И чаще всего вопросы касаются, именно, MQL, т.к. написать я могу всё, что мне нужно. А вот логику некоторых понятий или терминала иногда приходится догнать, ровно как это было в этот раз. С кодом всё было в порядке. Но вот в параметрах я не сменил значение лота. Ответ оказался элементарнейшим.. ((

К сожалению, в МТ5 столько тонкостей, что освоить их все, даже занимаясь им каждый день с самого его рождения, практически невозможно (сами разработчики не все знают).

Мои ироничный ответ ("Когда устанете разбираться") был одновременно и отсылкой к коду, где нюансы заливки проработаны и протестированы, и советом не тратить свое время на то, что понимать не обязательно. Конкретного запроса "объяснить механику процесса" я в первом посте не увидел.

Причина обращения: