Проблема с MT4, когда MT4 открывает сделку, а затем сразу же закрывает ее снова - страница 4

 

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

Эта проблема возникает только иногда и не может быть воспроизведена последовательно.

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

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

 
peterc005:

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

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

Этот поиск в Google

"OrderSymbol() == Symbol()" -OrderMagicNumber

найдет их множество, он начинается уже с третьего в списке (earlybird1, gridmaster_03 и так далее, весь результат поиска полон ими), они утверждают, что используют магическое число, но внутри просто игнорируют его. Вы найдете много таких. Эта ошибочная модель кода встречается на всех форумах и в конечном итоге копируется во многих советниках.

 
7bit:

Речь идет о дефекте проданного товара, а не о преступном умысле.

Конечно, дефект, нет проблем.

Однако "саботаж" имеет другое значение, вряд ли техническое, и не заменяет слово "дефект".

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

 
blogzr3:

Однако "саботаж" имеет другое значение, и вряд ли технического характера, и не является заменой слова "дефект".

Дефект проявляется в том, что один робот саботирует другого. Поскольку саботирует именно робот, я не могу понять, как у робота может быть намерение. Робот неисправен, и это заставляет его саботировать другие сделки. Ничего другого я не писал и не имел в виду. А продавец продает бракованный товар.
 
7bit:
Дефект проявляется в том, что один робот саботирует другого. Поскольку саботирует именно робот, я не понимаю, как у робота может быть намерение. Робот неисправен, и это заставляет его саботировать другие сделки. Ничего другого я не писал и не имел в виду. А продавец продает бракованный товар.

Большинство этих советников, похоже, используют индикатор ZigZag, который является вероятным виновником.

Когда это случилось в первый раз с советником под названием "Калибр", я декомпилировал советник, чтобы посмотреть на код. Это был дрянной советник, но в нем не было ничего подозрительного, и логика Magic Number казалась нормальной.

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

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

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

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

В данном случае это был новый демо-счет, на котором был запущен только один советник. Это заставляет меня думать, что это проблема платформы MT4, а не MQL4.

Сейчас я хорошо знаю MT4 и MQL4 и могу решить большинство проблем самостоятельно. Эта проблема поставила меня в тупик, и я прошу у других совета.


 

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

Если вы сможете повторить ошибку в тестере, это будет уже полдела.

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

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


//z

 

Here is one of the older log files. The problem is obvious from the number of trades opened and closed.

В журнале регистрации видно, что MT4 и брокер получают команды на открытие и закрытие ордеров, но почему?

Файлы:
 
peterc005:


Одна вещь, которую я заметил в одном лог-файле за соответствующую дату, это тысячи ошибок, которые говорят:

09:36:58 HistoryBase: недостаточно памяти для 'EURCHF1' в AddTick()

09:36:58 Обработчик памяти: невозможно выделить 160308896 байт памяти

Вместо того, чтобы лог-файл был, скажем, 10k, он стал 7Mb.

 
peterc005:

Вот один из старых файлов журнала. Проблема очевидна по количеству открытых и закрытых сделок.

В журнале видно, что MT4 и брокер получают инструкции на открытие и закрытие ордеров, но почему?

Есть ли у вас другой журнал (тот, что находится в папке experts/logs)? В нем будет указано имя советника-нарушителя.
 
zzuegg:

Поскольку вы знаете, какой советник вызвал это

До сих пор неизвестно, какой советник является причиной этого.


Все, что мы видели до сих пор, это симптомы (сделки нескольких разных советников закрываются сразу после открытия) и несколько теорий. До сих пор неизвестно, какой именно советник закрывает эти сделки. Нам нужны журналы экспертов в папке experts/logs со всех 4 терминалов, охватывающие тот же промежуток времени, чтобы сделать какие-либо дальнейшие выводы. Эти журналы могут подтвердить или опровергнуть мою теорию, и в конечном итоге они покажут, кто отправляет все ордера на закрытие.

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