Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1535

 
Aleksey Vyazmikin #:

Возможно, этот случай.

Благодарю. Там про то, что какие-то операции не осуществляются. Возможно, это касается первой части или причины, по которой я хотел увидеть информацию в лог файле. Но дело в том, что и закрытые вручную операции не повлияли на возникновение лог файла и не отобразились во вкладке Эксперты. И об этом брокер посоветовал обращаться на форум или к разработчику. Собственно, если брокер, а не я, решает, каким операциям быть, а каким не быть, врядли у меня есть еще какие-то возможности воздействовать на ситуацию и смысл работать в этой сфере...

 
Kristian Kafarov #:

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

Затем запустите его с опциями "Задержки" --> "Случайная задержка" и "Моделирование" --> "Все тики".

И, конечно, вам нужно будет предоставить несколько логов/кода, если вы хотите увидеть содержательный ответ.

Код можно как текст увидеть в гугл диске: https://drive.google.com/file/d/1bSmNjmO71GYO6fYVFioJWOsFctmmeJTy/view?usp=drive_link

Включал тестер без задержки, затем со случайной задержкой и задержкой 1000 миллисекунд.

Без задержек - первый скан во вкладке "Журнал". Все тики. С задержками - второй скан. Тоже все тики.

Может, я что-то не так делаю? Потому что кроме этих записей больше никаких изменений не было. На графике тоже ничего не отобразилось. Дату выставил 3 мая 24 года. Тогда была пятница. Логи тоже не появились. Не знаю, что Вам показать. Их нет.

 
maxvoronin74 #:

Благодарю. Там про то, что какие-то операции не осуществляются. Возможно, это касается первой части или причины, по которой я хотел увидеть информацию в лог файле. Но дело в том, что и закрытые вручную операции не повлияли на возникновение лог файла и не отобразились во вкладке Эксперты. И об этом брокер посоветовал обращаться на форум или к разработчику.

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

maxvoronin74 #:
Собственно, если брокер, а не я, решает, каким операциям быть, а каким не быть, врядли у меня есть еще какие-то возможности воздействовать на ситуацию и смысл работать в этой сфере...

А это вот очень здравая мысль, которая сэкономит нервы и деньги.

 
Aleksey Vyazmikin #:

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

Так открытие-закрытие позиции отображается в любом случае. Должно отображаться. И всегда так было. До сих пор.

Aleksey Vyazmikin #:

А это вот очень здравая мысль, которая сэкономит нервы и деньги.

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

 
maxvoronin74 #:

Так открытие-закрытие позиции отображается в любом случае. Должно отображаться. И всегда так было. До сих пор.

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

maxvoronin74 #:

Так открытие-закрытие позиции отображается в любом случае. Должно отображаться. И всегда так было. До сих пор.

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

Я жалею, что 10 лет назад всё не бросил.

Попробуйте посмотреть в сторону Московской биржи.

 
maxvoronin74 #:

Код можно как текст увидеть в гугл диске: https://drive.google.com/file/d/1bSmNjmO71GYO6fYVFioJWOsFctmmeJTy/view?usp=drive_link

Какой то злой кодер, очень сильно поизвращался над кодом вашего советника.

Боюсь поле такого, этот советник никогда не сможет торговать 

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

Согласитесь, что такое условие никогда не будет выполнено ask > ask   и такое тоже   bid > bid

А у вас в коде, советник ждёт выполнения именно этого.

Сорри, там всё таки есть одно условие при котором может открыться позиция селл  -  ask0 > bid0, но вот незадача продавать можно только по цене bid, а ваш советник пытается продать по цене  ask, и естественно получает при этом реквот.


Как видите в логах всё есть.

 
Aleksandr Slavskii #:

Какой то злой кодер, очень сильно поизвращался над кодом вашего советника.

Боюсь поле такого, этот советник никогда не сможет торговать 

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

Согласитесь, что такое условие никогда не будет выполнено ask > ask   и такое тоже   bid > bid

А у вас в коде, советник ждёт выполнения именно этого.

Сорри, там всё таки есть одно условие при котором может открыться позиция селл  -  ask0 > bid0, но вот незадача продавать можно только по цене bid, а ваш советник пытается продать по цене  ask, и естественно получает при этом реквот.


Как видите в логах всё есть.

Злее меня кодеров еще поискать...

Как Вы сделали, чтобы появились логи и что значит этот реквот?

Дело в том, что проблем с открытием ордеров не наблюдалось. Прикрепляю скан истории за 03.05.2024 года. Там открыты роботом три позиции, одна из которых - buy... Вот закрыть мне их пришлось вручную и удалить Эксперта со страницы, чтобы не открывал опять. Почему-то именно условие закрытия не сработало.

Я мог бы выложить весь код сюда, но  там две сотни строчек кода. Не уверен, что будет правильно так. Поэтому, оставил ссылку.

ПС. Пробую добавить файл mq5. Там тоже можно увидеть код. Мой МетаЭдитор открывает.

Попробовал, как работает эксперт, который приложен ниже. Открыл бай. Снова не закрыл по условию. И снова нет ни лог файла, ни записей во вкладке Эксперт.



 
Aleksey Vyazmikin #:

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

Вы правы. Сделал принты, и лог файл появился. Но в нем, почему-то, не указывается открытие, закрытие позиций. Может, я напрасно переживал? Извините, что отнял время.

 
Aleksey Vyazmikin #:

Возможно, этот случай.

Принты подтвердили, что условие закрытия есть, но закрытие не происходит.
Файлы:
 
maxvoronin74 #:

Злее меня кодеров еще поискать...

Ладно, все когда то, с чего то начинали.

Очень много ошибок в советнике.

double Price            = PositionGetDouble(POSITION_PRICE_OPEN);

Вызывать PositionGetDouble нужно после PositionSelect иначе в вашем Price окажется скорее всего мусор или ноль, потом вы будете сравнивать этот ноль с асками бидами, где нибудь да сработает условие.

 for(int i = 0; i < ArraySize(mqlTick); i++)
  {
     double bid1 = NormalizeDouble(mqlTick[0].bid, _Digits); // первая цена bid за последний период
     double ask1 = NormalizeDouble(mqlTick[0].ask, _Digits); // первая цена ask за последний период

Что делает этот код?

Хренову тучу раз он делает одно и то же.

Полагаю, что индексом массива mqlTick должен быть не ноль, а i.

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

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

m_trade.Buy(LotSize)

Так у вас будет меньше шансов ошибиться.


При наступлении условия bid0 > ask0 вы хотите открывать позицию.

По мне так при наступлении этого условия, нужно закрывать все открытые позиции, закрывать терминал и выключать компьютер)))

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