Тестер МТ5 генерирует тики ЗАГАДОЧНЫМ ОБРАЗОМ. - страница 4

 
Stanislav Korotky #:
В тестере МТ5 есть проблемы - никто не спорит, но тот мой абзац, который вы процитировали - абсолютно точный. Так что чушь тут порете вы. Если есть пример исходника, который у вас работает как-то не так - публикуйте. И повежливее, плиз.
у меня все работает так как надо. если у Вас есть код который в мт5 при разных прогонах дает разный результат, выкладывайте его, выкладывайте тесты, обсудим, а не пишите что я чушь порю. да и спред установить вручную не забудьте при тестах установить.
 
Mikhail Pityugov #:
у меня все работает так как надо. если у Вас есть код который в мт5 при разных прогонах дает разный результат, выкладывайте его, выкладывайте тесты, обсудим, а не пишите что я чушь порю. да и спред установить вручную не забудьте при тестах установить.

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Тестер МТ5 генерирует тики ЗАГАДОЧНЫМ ОБРАЗОМ.

Mikhail Pityugov, 2026.08.21 10:09

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

 - это не так. В 99.99% - это проблема в коде MQL5.

 
Stanislav Korotky #:

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

 - это не так. В 99.99% - это проблема в коде MQL5.

я говорю то что знаю из практики. я здесь работаю с 2012 года. сделал более 1400 проектов. имею безупречные отзывы и золотой трофей от mql5. по отзывам видно что есть клиенты которые ходят ко мне годами. более того, у меня лучшая на этом сайте статистика по качественным показателям таким как процент арбитражей, просрочки и т.д. на данный момент она недостижима ни для кого здесь. за 14 лет у меня не было ни одного проигранного арбитража. по сему имею право полагать что мое мнение имеет экспертный уровень. так вот, я конечно не часто тестирую чужие совы, но я ни разу не видел чтобы при заданном вручную спреде и тесте без задержек, при тестах не через длительное время, а при тестах подряд один и тот же советник давал существенно отличающиеся результаты. если Вы хотите это обсудить, присылайте код, присылайте тесты, обсудим. у меня таких кодов нет и никогда не было. а посты вроде Вашего что советник может быть так написан что давать разные результаты в тестере МТ5 просто подрывают доверие людей к МТ5 и к использованию советников. 
 
Mikhail Pityugov #:
я говорю то что знаю из практики. я здесь работаю с 2012 года. сделал более 1400 проектов. имею безупречные отзывы и золотой трофей от mql5. по отзывам видно что есть клиенты которые ходят ко мне годами. более того, у меня лучшая на этом сайте статистика по качественным показателям таким как процент арбитражей, просрочки и т.д. на данный момент она недостижима ни для кого здесь. за 14 лет у меня не было ни одного проигранного арбитража. по сему имею право полагать что мое мнение имеет экспертный уровень. так вот, я конечно не часто тестирую чужие совы, но я ни разу не видел чтобы при заданном вручную спреде и тесте без задержек, при тестах не через длительное время, а при тестах подряд один и тот же советник давал существенно отличающиеся результаты. если Вы хотите это обсудить, присылайте код, присылайте тесты, обсудим. у меня таких кодов нет и никогда не было. а посты вроде Вашего что советник может быть так написан что давать разные результаты в тестере МТ5 просто подрывают доверие людей к МТ5 и к использованию советников. 

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

Мои посты служат единственной цели - выяснить проблемы в МТ5 и найти пути их решения. Софта без проблем не бывает.

PS. вот один из многих топиков на тему различий в результатах тестера (на английском, но есть и на русском).

PPS. чтобы не искать суть - вот еще пост на русском форуме:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2019.01.17 14:37

В дополнение к ранее сказанному, одной из самых распростаненных причин несовпадения одинаковых прогонов в Тестере - ошибочная инициализация или ее отсутствие.


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


Чтобы поймать такие потенциальные проблемы, можно в начале советника вставить такие строки

// Помогает найти причину потенциальной ошибочной инициализации
template <typename T>
int ArrayResize2( T &Array[], const int NewSize, const string Str )
{
  const int PrevSize = ArraySize(Array);
  const int Res = ArrayResize(Array, NewSize);
  
  if ((PrevSize < NewSize) || (Res != NewSize))
  {
  #define TOSTRING(A) ", " + #A + " = " + (string)(A)
    Print(Str + (string)Res + TOSTRING(PrevSize) + TOSTRING(NewSize));
  #undef TOSTRING     
  
    TesterStop();
  }
  
  return(Res);
}

// Вариант с Reserve != 0 не предусмотрен
#define ArrayResize(A,B) ArrayResize2(A, B, __FUNCSIG__ + ", Line = " + (string)__LINE__ + \
                                            ": ArrayResize(" + #A + ", " + #B + ") = ")
// Помогает найти причину потенциальной ошибочной инициализации
template <typename T1, typename T2>
int ArrayInitialize2( T1 &Array[], const T2 Value, const string Str )
{
  const int Res = ArrayInitialize(Array, Value);
  
  if (!ArraySize(Array) || !Res)
  {
  #define TOSTRING(A) ", " + #A + " = " + (string)(A)
    Print(Str + (string)Res + TOSTRING(ArraySize(Array)));
  #undef TOSTRING     
  
    TesterStop();
  }
  
  return(Res);
}

#define ArrayInitialize(A,B) ArrayInitialize2(A, B, __FUNCSIG__ + ", Line = " + (string)__LINE__ +  \
                                                    ": ArrayInitialize(" + #A + ", " + #B + ") = ")


Если ситуация будет поймана, то в лог будет выведена подробная информация и прогон будет остановлен.


ЗЫ Пример применения.


Strategy optimization result do not match single run test result
Strategy optimization result do not match single run test result
  • 2021.08.22
  • www.mql5.com
The user is experiencing discrepancies between optimization test results and single test results in MT5, suspecting issues with parameter transmission, version compatibility, or indicator handling. They have tried various troubleshooting steps, including checking parameters, using different MT5 versions, and verifying test modes. They seek advice on resolving the inconsistency and ensuring reliable test results.
 
Stanislav Korotky #:

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


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

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

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

 
Mikhail Pityugov #:

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

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

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

Вы можете оставаться при своем мнении, но у MQ мнение другое - они сделали свою платформу не для трейдеров, а для алготрейдеров-программистов, поэтому неявные ошибки кодирования MQL5 считаются ошибками MQL5, а не тестера. Если уж строго называть вещи своими именами, но по вашей логике ошибка не в тестере, а в MQL5 - в том как он (не)инициализирует данные и (не)обрабатывает ошибки сам, а отдает это на откуп прикладному программисту - что сделано со стороны MQ опять-таки намеренно в угоду скорости, как они говорят. Чтобы понять, как запуски тестера с одинаковыми настройками могут дать разные результаты - читайте обсуждения на форуме.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Не совпадают результаты оптимизации и одиночного прогона

fxsaber, 2021.11.25 12:05

Ни разу не использовал режим "Форвард-оптимизации". Могу сказать только за обычную оптимизацию.

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


Поэтому почти 100%, причина различий в исходном коде.


Также проверялся на баги и сам Тестер (мало ли где некорректно сработал). Не нашел проблем среди миллионов сделок. Идеальное совпадение с другим тестером. Единственное НО - досконально проверял только моновалютный режим.


Если в будущих билдах MT5 появятся косяки в Тестере, то с большой вероятностью обнаружу их.


 
Stanislav Korotky #:

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


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

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

 
Mikhail Pityugov #:

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

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

Я рассказал, как есть в МТ5, поскольку здесь были утверждения, что мол в расхождениях результатов виноват тестер - но это ложь. При чём тут моя правота или неправота? Я всегда признаю свои ошибки, но в данном случае ошибок нет. В приведенных ссылках есть достаточно кода и описания сути проблем - в частности, если переменная в MQL5 не инициализируется явно, то в ней будет мусор, способный влиять на алгоритм случайным образом - не важно под оптимизацией, при форварде или при отдельном запуске тестера. Вы этого видимо не знаете и даже не хотите вникнуть, а предпочитаете выяснять личные отношения. Проблема зависит от случайного распределения памяти - может проявляться, а может не проявляться - всё зависит от кучи условий (программного, аппаратного окружения и пр.). Поэтому целенаправленно писать тест, чтобы разубедить таких фом-неверующих - извините я не буду. Но это не значит, что этой особенности в MQL5 нет. Обычно "разбор полетов" выполнялся на кодах, в которых у других пользователей уже случались странности. Вы бы еще стали утверждать, что Земля плоская просто потому, что никто не предоставил вам возможность побывать на Луне и посмотреть на Землю со стороны.

 
Mikhail Pityugov #:

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

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

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

Код попал ко мне, при проверке в тестере результаты разнились, исправил инициализацию массивов - всё четко.

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

 
Stanislav Korotky #:

Я рассказал, как есть в МТ5, поскольку здесь были утверждения, что мол в расхождениях результатов виноват тестер - но это ложь. При чём тут моя правота или неправота? Я всегда признаю свои ошибки, но в данном случае ошибок нет. В приведенных ссылках есть достаточно кода и описания сути проблем - в частности, если переменная в MQL5 не инициализируется явно, то в ней будет мусор, способный влиять на алгоритм случайным образом - не важно под оптимизацией, при форварде или при отдельном запуске тестера. Вы этого видимо не знаете и даже не хотите вникнуть, а предпочитаете выяснять личные отношения. Проблема зависит от случайного распределения памяти - может проявляться, а может не проявляться - всё зависит от кучи условий (программного, аппаратного окружения и пр.). Поэтому целенаправленно писать тест, чтобы разубедить таких фом-неверующих - извините я не буду. Но это не значит, что этой особенности в MQL5 нет. Обычно "разбор полетов" выполнялся на кодах, в которых у других пользователей уже случались странности. Вы бы еще стали утверждать, что Земля плоская просто потому, что никто не предоставил вам возможность побывать на Луне и посмотреть на Землю со стороны.

по факту доказательств своих слов Вы не предоставили