"Error open (non-string passed), Error = 0" Что за зверь?

 

Не могу понять что это за ошибка и по какой причине она возникает.
Советник работает виртуальными ордерами. В одно и то же время на тех же парах у одного брокера все работает как часы, у другого в закладке "Эксперты" простыня из сообщений "Error open (non-string passed), Error = 0" по всем парам. Само собой что ни один установленный советником ордер не открывается.
Полное отключение торговой функции (нет ни одного ордера) не помогает, ResetLastError() растыканное где только можно тоже не помогает, ошибка продолжает валить.  При этом вручную установленные отложенные ордера открываются без проблем.
Если кто-то знает что это такое и как с этим бороться - подскажите, пожалуйста.

 

Error = 0 - это значит нет ошибки, а Вы выполняете действие проверяете GetLastError() после действия которое могло быть и не выполнено....т.е. GetLastError() всегда дает ответ 0 если не было ошибок

фух как то так )))

ЗЫ: вчера на эти же грабли наступил, не мог найти почему OrderSelect() не выбирает ордера не закрывает потом их, хоть и код был раз сто уже проверен... распринтовывал все, оказалось, что я делаю код для работы с несколькими магикномерами (магики по формуле формирую), а пытаюсь закрыть как обычно по одному "главному магику", почти час искал как и у Вас откуда "ноги растут" при Error = 0

 
Igor Makanu:

Error = 0 - это значит нет ошибки, а Вы выполняете действие проверяете GetLastError() после действия которое могло быть и не выполнено....т.е. GetLastError() всегда дает ответ 0 если не было ошибок

фух как то так )))

ЗЫ: вчера на эти же грабли наступил, не мог найти почему OrderSelect() не выбирает ордера не закрывает потом их, хоть и код был раз сто уже проверен... распринтовывал все, оказалось, что я делаю код для работы с несколькими магикномерами (магики по формуле формирую), а пытаюсь закрыть как обычно по одному "главному магику", почти час искал как и у Вас откуда "ноги растут" при Error = 0

То что ноль это отсутствие ошибки, это мне было известно буквально с первых шагов в прогаммировании. Error = 0 можно получить отправив на модификацию уже существующий уровень ТП или СЛ. 
Нет, это не то. Во-первых Не Открываются виртуальные ордера (сделка по рынку при пересечении ценой уровня ордера), во-вторых непонятно что такое  "non-string passed" и почему это ошибка открытия, если она идет без всяких попыток открыть что-либо.

GetLastError() у меня прописан только там где выполняется какое то действие (открытие сделки, модификация ТП или СЛ) и только после того как выдана команда на исполнение и это действие не выполнено - вот тогда идет запрос кода ошибки. В описанной мной ситуации вообще нет никаких действий - торговая функция выключена, ордера не устанавливаются, но ошибка продолжает генерироваться.
Если бы был ляп в коде, то точно то же самое выдавал бы и сов установленный у другого брокера, но этого нет. Более того - за восемь лет что я пишу и торгую своими ботами эту ошибку видел только иногда и только в разовых количествах, не было такого чтобы она проскакивала более 1-2-3 раза.

Боюсь что это какие-то происки брокера запретившего таким неявным образом автоматическую торговлю.

 

я не знаю такой ошибки non-string passed

поиск по форуму не дает результата, в основном Ваш топик https://www.mql5.com/ru/search#!keyword=non-string%20passed

Поиск - MQL5.community
Поиск - MQL5.community
  • www.mql5.com
Поиск выполняется с учетом морфологии и без учета регистра. Все буквы, независимо от того, как они введены, будут рассматриваться как строчные. По умолчанию наш поиск показывает страницы...
 
Igor Makanu:

я не знаю такой ошибки non-string passed

поиск по форуму не дает результата, в основном Ваш топик https://www.mql5.com/ru/search#!keyword=non-string%20passed

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

И - \это уже абсолютно точно - это случайные или умышленные траблы со стороны брокера. Эта ошибка пропала так же внезапно как и появилась, но ордера по-прежнему не открываются. Теперь по причине "Нет цены". И это в пятницу да сразу по открытию американской сессии на кроссах евро-иена, доллар/иена и прочих мажорах... При том что на графике цена мечется мама не горюй.  
 
Сначала укажите, каким образом получаете описание этой ошибки? Ведь речь явно не об ответе сервера, т. к. в списке таких ошибок нет.
 
Ihor Herasko:
Сначала укажите, каким образом получаете описание этой ошибки? Ведь речь явно не об ответе сервера, т. к. в списке таких ошибок нет.

В том то и проблема что я никак не поучаю эту ошибку которой нет в списке, сама она лезет, без всячих запросов.
Там где у меня есть проверки на ошибку обязательно есть и Print с выводом в таком формате:  "____ + функция выдавшая ошибку + код ошибки + описание ошибки"
Эту странную ошибку (опять, кстати, поперла в полный рост) сервер выдает без моего запроса. Вот как это выглядит в журнале:


 
Vasily Temchenko:

В том то и проблема что я никак не поучаю эту ошибку которой нет в списке, сама она лезет, без всячих запросов.
Там где у меня есть проверки на ошибку обязательно есть и Print с выводом в таком формате:  "____ + функция выдавшая ошибку + код ошибки + описание ошибки"
Эту странную ошибку (опять, кстати, поперла в полный рост) сервер выдает без моего запроса. Вот как это выглядит в журнале:


Это общий журнал или журнал "Эксперты"?

 
Это может быть ошибка не от открытия ордеров, от чего то еще
 

Нашел!!!

Все-таки был в моем коде вывод ошибки не по моему стандарту, а через PrintFormat, так как в доке было было предложено (поленился переписать в свое время, а потом копированием размножил во все свои боты).
Нашел путем исключения вначале функций, потом, когда нашел "грешную" функцию, путем исключения кусков кода.
Так вот, то что я так долго искал  есть не что иное как ошибка 5004, банальная ошибка открытия файла для записи.

Блин, как же я был прав не используя "как есть" то что предлагается в документации!

 
Vasily Temchenko:

Нашел!!!

Все-таки был в моем коде вывод ошибки не по моему стандарту, а через PrintFormat, так как в доке было было предложено (поленился переписать в свое время, а потом копированием размножил во все свои боты).
Нашел путем исключения вначале функций, потом, когда нашел "грешную" функцию, путем исключения кусков кода.
Так вот, то что я так долго искал  есть не что иное как ошибка 5004, банальная ошибка открытия файла для записи.

Блин, как же я был прав не используя "как есть" то что предлагается в документации!

В документации показаны лишь примеры, а не предложения для необходимости использования. То, что вы сами скопировали код из документации, сами поленились и сами его размножили на всю свою обувь ("боты" - это же ботинки, так?) - никоим образом всё это не даёт права переложить вину на разработчиков. Бросьте такое поведение - всегда мужественней признать собственную недоработку и невнимательность, чем искать ей причины на стороне - сначала виноваты злые мошенники из ДЦ, а теперь вот разработчики терминала. Но никак не вы сами...

Не отвечайте - риторика...

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