![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
отличия есть и отличия существенные.
убедиться очень легко -- любой советник запустить одновременно на нескольких парах -- и уже через несколько дней/неделю будут сделаны выводы, типа, та или иная пара не подходит потому-то и потому-то.
маркет проверяет техническую сторону вопроса, а не профитность -- и с технической стороны (корректный лот, корректные тейк и стоп, корректная установка отложки) всё должно работать на всех парах и всех таймфреймах без исключения.
Я об этом и говорил выше.
Интересно что 90% людей, может быть и больше, все время говорят наизусть о тех правилах или законах, о которых читают.
Но на практике бывают и такие случаи, когда применить все эти правила или законы 1:1 не правильно. Надо посмотреть еще глубже.
Вот приведу несколько примеров, когда программа не проходит валидацию.
1. Допустим в роботе не разрешается торговать, когда спред выше 5(50) пункта. И если стратегия такая, когда обрабатывается каждый тик, то для корректной работы надо в OnTick проверить размер спреда и если выше 5 пункта, то return.
Но валидация не проходит поскольку нет не одной сделки.
2. Если робот неттинговая, а его ставили на хеджинговый счет, тогда что надо делать, в OnInit проверить тип счета и если хеджинговый то надо выдать Alert об этом, и его удалить из графика, применив ExpertRemove. Там его нечего делать.
А валидация не проходит, поскольку из OnInit нельзя применить ExpertRemove.
3. Тоже самое надо делать, если робот предназначен для торговли 5-и значного счета, а он установлен на график с котировкой 4 зн. При этом просто надо выдать сообщение и при нажатии на OK удалить робот из графика. Тут тоже его нечего делать.
Это тоже запрещается.
Так надо делать во всех случаях, когда робот установлен туда, где не надо было установить.
А что говорит модератор. Что робот нельзя удалить.
И получается что в таких ситуациях робот все время должен крутиться в холостую. И не понятно зачем.
Интересно что 90% людей, может быть и больше, все время говорят наизусть о тех правилах или законах, о которых читают.
Но на практике бывают и такие случаи, когда применить все эти правила или законы 1:1 не правильно. Надо посмотреть еще глубже.
Вот приведу несколько примеров, когда программа не проходит валидацию.
1. Допустим в роботе не разрешается торговать, когда спред выше 5(50) пункта. И если стратегия такая, когда обрабатывается каждый тик, то для корректной работы надо в OnTick проверить размер спреда и если выше 5 пункта, то return.
Но валидация не проходит поскольку нет не одной сделки.
Разово выдать сообщение о том, что допустимый спред превышен. Удалять эксперта с графика не нужно. Тогда все будет ОК.
2. Если робот неттинговая, а его ставили на хеджинговый счет, тогда что надо делать, в OnInit проверить тип счета и если хеджинговый то надо выдать Alert об этом, и его удалить из графика, применив ExpertRemove. Там его нечего делать.
А валидация не проходит, поскольку из OnInit нельзя применить ExpertRemove.
Есть код возврата OnInit - INIT_FAILED.
3. Тоже самое надо делать, если робот предназначен для торговли 5-и значного счета, а он установлен на график с котировкой 4 зн. При этом просто надо выдать сообщение и при нажатии на OK удалить робот из графика. Тут тоже его нечего делать.
Это тоже запрещается.
Надуманное ограничение - работа только на пятизнаке. Это недоработка программиста. Добавить специальный параметр, указывающий точность котировок счета, на котором происходит запуск. И это всего лишь для правильной работы стратегии, а не самой программы. Для технической стороны не должна быть важна точность котировок.
Разово выдать сообщение о том, что допустимый спред превышен. Удалять эксперта с графика не нужно. Тогда все будет ОК.
В этом случае я согласен, не надо удалять. Но есть такие ситуации когда сов лучше удалить. Например, если сказано, что на фьючерсах советник не должен работать, предназначен только для валютных пар форекс... Для каких целей сделана такая функция если ей полноценно пользоваться нет возможности. Исключительно для себя???
Ihor Herasko:
Есть код возврата OnInit - INIT_FAILED.
А с этим возвратом из OnInit сов тоже не проходит валидацию. Я проверял.
А с этим возвратом из OnInit сов тоже не проходит валидацию. Я проверял.
На мой взгляд это недоработка. Давайте дружно напишем в сервисдеск по этому поводу. На то OnInit и нужен, чтобы проверить корректность настроечных параметров. Ведь со всеми возможными значениями параметров не может работать советник. К примеру, если пользователь (по ошибке или намеренно) установил период 0 для МАшки.
Неудачный пример. МА "застрахована" от таких юзверей и всё что меньше 1 переводит в 1.
А вот было-бы просто замечательно если-бы можно было макросом написать контроль ввода в поле.
И ещё я мечтаю о каком ни-будь таймере, подобии календаря, чтобы можно было переменную задавать выбором часа и минуты из этого таймера. Можно и enum написать, но получится слишком громоздко, да и раздельно часы и минуты.
Разово выдать сообщение о том, что допустимый спред превышен. Удалять эксперта с графика не нужно. Тогда все будет ОК.
Есть код возврата OnInit - INIT_FAILED.
Надуманное ограничение - работа только на пятизнаке. Это недоработка программиста. Добавить специальный параметр, указывающий точность котировок счета, на котором происходит запуск. И это всего лишь для правильной работы стратегии, а не самой программы. Для технической стороны не должна быть важна точность котировок.
Возможности в программирования безграничны. Могу сделать так что эти котировки танцевали на графике.
Если ваша цель сделать так, чтобы любым способом робот попал в маркет, то вы правы.
И поэтому там одни сливаторы, работают прекрасно, по всем правилам, сливают тоже прекрасно, по всем правилам.
Надо иметь соответствующий уровень программиста, чтобы объявить что это недоработка программиста.
По вашему любой телефон должен работать под водой, или может быть ваша машина умеет ездить под водой ?
В этих случаях тоже надо на экран вывести сообщение и оставаться там ?
Ведь это тоже недоработка.