Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Проходит не потому, что перекомпилировал, а потому, что тестирование началось с другой даты. И я заметил такую бяку, если подсунуть то что уже было, то тестирование не происходит, а сразу выдаётся предыдущий результат теста. Так-что не обольщайтесь такими костылями. Старайтесь сделать нормально. Если чего-то не хватает, или параметры недопустимые, сообщите об этом посредством Print и всё будет правильно.
Вот если это было связано только с другой датой, тогда бы мои проверки выявили бы это (не хватка баров и т.д.), но не в дате проблема. Если мне не как не удаётся воссоздать ошибку то что находит автоматическая валидация, то мне проще подсунуть то же самое и надеется что мести с покупателями найдем проблемное место (если такое есть). Данная реализация валидаций мне не даёт полное понимание где искать ошибку. А Print мне уже засунуто везде.
И я заметил такую бяку, если подсунуть то что уже было, то тестирование не происходит, а сразу выдаётся предыдущий результат теста.
А что-бы не получать предыдущий результат теста, надо изменить что-то, хоть добавить пустую строку( я это имел виду под "заново перекомпилировать").
Разобрался наконецто, может кому поможет, в общем в сове у меня только при включенном ММ была проверка на минимальный лот, а так хардкором устанавливался лот = 0.01, так вот, в валидаторе депозит оказывается равен 1$ (нашел эту инфу в одной из тем), соответственно он использует лот 0.001 (ну или около того) для торговли, а так как у меня в одном месте всегда был лот 0.01 соответственно ему не хватало средств и робот не торговал)
Точно, Роман, валидатор тестит с депозитом 1$.
В советнике есть функция нормализации лота. Если она возвращает 0, то сделка даже не пытается открыться:
Но непонятно как тогда эта функция советника нормализации лота отправляет лот 0.2 на открытие:
Ведь если приходит на проверку лот 0.2, а маржа судя по логам 645, то эта часть выражения должна давать true
И функция отправит 0.0, но никак не 0.2. Значение 0.2 она может отправить только если
вернула 0 или ничтожно малое значение. Я вообще не понимаю как работает этот валидатор.
Уважаемые разработчики MQL, отправляйте пожалуйста логи тестирования программ вместо сухих отчётов об ошибках валидации в три строчки. Нам, скромным программистам гораздо проще будет понять ошибки кода и исправить их. Можно на почту архивом, способ уж наверное придумаете )))
P.S. Забавная ситуация. 5-й день пытаюсь выложить на маркет отлично работающий в тестере и на реале советник.Точно, Роман, валидатор тестит с депозитом 1$.
В советнике есть функция нормализации лота. Если она возвращает 0, то сделка даже не пытается открыться:
Но непонятно как тогда эта функция советника нормализации лота отправляет лот 0.2 на открытие:
Ведь если приходит на проверку лот 0.2, а маржа судя по логам 645, то эта часть выражения должна давать true
И функция отправит 0.0, но никак не 0.2. Значение 0.2 она может отправить только если
вернула 0 или ничтожно малое значение. Я вообще не понимаю как работает этот валидатор.
Уважаемые разработчики MQL, отправляйте пожалуйста логи тестирования программ вместо сухих отчётов об ошибках валидации в три строчки. Нам, скромным программистам гораздо проще будет понять ошибки кода и исправить их. Можно на почту архивом, способ уж наверное придумаете )))
P.S. Забавная ситуация. 5-й день пытаюсь выложить на маркет отлично работающий в тестере и на реале советник.по ходу у Вас другое плечо, не то что в маркете, возможно 1:500
попробуйте привести расчет лота к плечу 1к100 заменив в коде только одну строку:
margin = AccountLeverage()*MarketInfo(symbol,MODE_MARGINREQUIRED)/100.0;
ну и минимальный лот для маркета 0.1 по моему....Вы живёте в каком-то своём ограниченном мире. В обычном мире минимальный лот может сильно отличаться от 0.01
РЕцепт: читать и ещё раз читать статью "Какие проверки должен пройти ..."
Перед отсылкой торгового приказа нужно проверять: пройдет ли он, хватит ли маржи ...
В общем валидатор пока справляется со своей главной задачей: отсеивать недоработанный код из Маркета.
по ходу у Вас другое плечо, не то что в маркете, возможно 1:500
попробуйте привести расчет лота к плечу 1к100 заменив в коде только одну строку:
margin = AccountLeverage()*MarketInfo(symbol,MODE_MARGINREQUIRED)/100.0;
Ренат, спасибо за совет, я попробую.
Вы живёте в каком-то своём ограниченном мире. В обычном мире минимальный лот может сильно отличаться от 0.01
РЕцепт: читать и ещё раз читать статью "Какие проверки должен пройти ..."
Перед отсылкой торгового приказа нужно проверять: пройдет ли он, хватит ли маржи ...
В общем валидатор пока справляется со своей главной задачей: отсеивать недоработанный код из Маркета.
Владимир, а Вы конструктивно разобраться в вопросе можете?! Разве я не проверяю лот на маржу и прочее? Статья "Какие проверки должен пройти ..." для меня уже как библия. Фрагменты кода выложил выше. Для полного соответствия изменил код согласно Вашим рекомендациям из статьи:
Но всё равно получаю "нет торговых операций":
Хорошо, если функция всё время отправляет лот 0.0, тем самым не даёт открывать сделки, изменяю чтобы она отправляла минимальный лот:
И получаю историю, что сделки всё таки происходят (см. скрины ниже). Но минимальный лот конечно очень странный приходит, но пусть приходит. Но сделки то есть!
Вот в этой ситуации очень странно поступает валидатор, делая минимальный лот 0.2 при депозите 1$.
Естественно при таком подходе никаких сделок не будет! И это при совершенно адекватном коде. К слову, я убрал для тестирования все условия по индикаторам и т.п. Сделки начинают открываться сразу же после запуска советника.
...
В общем валидатор пока справляется со своей главной задачей: отсеивать недоработанный код из Маркета.
Так с чем же справляется валидатор?! Мне видится пока только с тем, чтобы взорвать мозг программистам!
Заметьте, я не прошу что то менять в валидаторе. Можно просто нам видеть логи тестирования. Тогда станет понятно с какими параметрами проходят тесты, на каких депозитах. В конце концов принтами можно будет хотя бы отследить где ошибка в коде и оперативно её исправить. А не тыкать пальцем в небо целую неделю, пытаясь только локализовать ошибку. Мы же не друг против друга работаем! Я понимаю, вместе пытаемся что то заработать.
... Мы же не друг против друга работаем! Я понимаю, вместе пытаемся что то заработать.
Андрей, я в выходные как то раз напоролся на зависший сервак
то есть он тупо не кушал MarketInfo(...)
еле еле победил такое
поэтому, если поняли что не может проглотить маркет, то остается просто подумать как сделать так, чтобы валидатор не ругался
Например, я спрашиваю - какое плечо?
Он говорит 0(ноль)
Я добавляю в коде - если равно 0, то 100
Если логика понятна, то все получится и удачи!
Понятно, Ренат, спасибо.
Я уж и так кучу костылей наставил, но в некоторых местах я откровенно в тупике. И ведь хочется чтобы адекватный код проходил адекватную проверку. К тому же найти проблему при отсутствии логов тестирования не невозможно но крайне трудозатратно.
Наверное и валидатору неплохо бы сделать апгрейд. Не я один сталкиваюсь с подобными проблемами.
Понятно, Ренат, спасибо.
Я уж и так кучу костылей наставил, но в некоторых местах я откровенно в тупике. И ведь хочется чтобы адекватный код проходил адекватную проверку. К тому же найти проблему при отсутствии логов тестирования не невозможно но крайне трудозатратно.
Наверное и валидатору неплохо бы сделать апгрейд. Не я один сталкиваюсь с подобными проблемами.
Да, вы не один столкнулись с этой проблемой, в соседней ветке ещё один столкнулся - вас уже двое.
Так-же посмотрите, сколько в сутки выкладывается советников в маркет без каких либо проблем, это называется "Уровень профессионализма".
Виталий, если Вам и другим "профессионалам" удаётся пройти валидацию с первого раза, могу только поаплодировать. Но веток по подобной проблеме далеко не две, а больше. Плюс не все пишут, некоторые просто читают. Советник, к слову, не мой. Я готовлю его в маркет для клиента. Но это не отменяет вышеописанных проблем. Если вы внимательно прочли мой пост, может как "профессионал" предложите решение проблемы. Выложить пост по типу: "Ты тупой, а я умный" - много знаний не нужно.
Вот Вам ещё задачка. Почему, добавив в начало OnTick() безусловное последовательное открытие 5 сделок через 5 минут минимальным лотом, валидатор так же выдает мне: "no trading operations"
Виталий, если Вам и другим "профессионалам" удаётся пройти валидацию с первого раза, могу только поаплодировать. Но веток по подобной проблеме далеко не две, а больше. Плюс не все пишут, некоторые просто читают. Советник, к слову, не мой. Я готовлю его в маркет для клиента. Но это не отменяет вышеописанных проблем. Если вы внимательно прочили мой пост, может как "профессионал" предложите решение проблемы. Выложить пост по типу: "Ты тупой, а я умный" - много знаний не нужно.
Вот Вам ещё задачка. Почему, добавив в начало OnTick() безусловное последовательное открытие 5 сделок через 5 минут минимальным лотом, валидатор так же выдает мне: "no trading operations"
а Вы сначала положите сюда полный ответ валидатора
и с чего Вы решили, что валидатор назначает тикеты по принципу который придумали Вы?
для того чтобы открыть 5 сделок, нужно считать количество открытых сделок, а не париться тикетами