[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 366
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
нет никаких галок.
возможно отсутствие нормализации внутри советника дает такой эффект.
однако добившись появления вкладки входные параметры , самой оптимизации не происходит.
Тестер что-то делает, внизу видно текущее кол-во переборов (7/ 62), но по завершению во вкладках результаты оптимизации, и график оптимизации ПУСТОТА!
галочка на параметре ессно стоит....
даже не знаю в какую сторону думать...
Тестер не обеспечивает повторяемости результатов при неизменных данных, поскольку спред при тестировании меняется неведомо как.
Лекарство: https://www.mql5.com/ru/forum/119830
Пустые значения могут говорить о том, что результат оптимизации конкретных параметров убыточны - т.е. слив. Попробуйте прогнать один из параметров с Визуализацией - и, возможно, Вы увидите этот результат.
Про нормализацию, думаю, тоже не будет такого эффекта, т.к. раз значения одни и те же, то математические числа будут ровно такими же - отсюда и никаких изменений.
На счет "в какую сторону думать" - Иногда лучше не думать и отложить вопрос - Идея и мысли придут чуть позже. Нужно давать мозгу возможность для маневра, отдыха и размышлений без напряженки.
1. советник прибыльный.
2. руками уже проверил - прибыльный на всем диапазоне параметра. просто хотел чуть расширить диапазон и сделать шаг поменьше.
Тестер не обеспечивает повторяемости результатов при неизменных данных, поскольку спред при тестировании меняется неведомо как.
Лекарство: https://www.mql5.com/ru/forum/119830
таки спред же плавающий? нельзя его фиксировать.
другое дело что он должен быть зацементирован на истории...
в общем результат плавает незначительно, и кол-во сделок не меняется...поэтому данный вопрос меня не сильно пугает...
другое дело что оптимизатор нифига не работает! вот это бесит...
вот что тестер пишет в журнале:
2013.05.29 12:20:10 There were 8 passes done during optimization, 8 results have been discarded as insignificant
Тестер не обеспечивает повторяемости результатов при неизменных данных, поскольку спред при тестировании меняется неведомо как.
Лекарство: https://www.mql5.com/ru/forum/119830
Может это и возможно, но у меня размер спреда вынесен в Инфо - и при изменении отображается. На тестере я не заметил, чтобы спред плавал. Он берет из МаркетИнфо текущего счета данные стандартные параметры и уже их не меняет.
Это лекарство меняет р-р спреда, чтобы можно было посмотреть различные результаты оптимизации с разным спредом. Как я понял, только для этого прога по ссылке нужна.
2013.05.29 12:20:10 There were 8 passes done during optimization, 8 results have been discarded as insignificant
Ну, все правильно - Данные результаты были отметены как незначащие (insignificant). - Поэтому и не отражает ни в результатах, ни на графике.
видимо тут косяк глубже.
первый мой вопрос вчера был : как оптимизировать параметры находящиеся внутри пользовательской функции.
мне ответили - вынеси их в extern double
я вынес.
и вот теперь оптимизатор выбрасывает результат...видимо я вынес их как-то неправильно.
вот код. это обычный модификатор стопа и тейка
вместо STOP и TAKE там раньше стояли числа 100 и 200
я заменил числа на STOP и TAKE
а в начале кода добавил
extern double STOP = 100;
extern double TAKE = 200;
нет ли тут где-то ошибки?
(сам модификатор 100% рабочий)
Пока смотрю код, но по ходу дела позволю несколько комментариев.
Вот эта строка вообще не имеет смысла:
point=MarketInfo(Symbol(),MODE_POINT); /* поскольку это ровным счетом то же самое, что штатный параметр */ Point
Она будет нужна только в том случае, если у Вас мультивалютная стратегия, но тогда вместо
Symbol()
Нужно будет подставлять иные значения заранее определенные, но никак не эту штатную функцию.
Так же и эта переменная лишняя
total=OrdersTotal();
т.к. внутри функции у Вас это применяется всего лишь единожды в переборе, который почему-то закомментирован, и только захламляет код. - Отсюда вопрос - А почему перебор по ордерам закомментировали?
Вот это:
вообще лучше сгруппировать - условие же одинаковое. Кстати, у Вас они написаны по структуре по-разному. - это к вопросу о потере структуры. Стиль написания должен быть единым - тогда видна структура и возможные ошибки сами вылазят как кочки после схода снега.
Из представленного Вами, принципиальных моментов я не выявил, что могло бы влиять на результат. Но!... Вы тут представили всего лишь одну функцию (довольно небрежно написанную, если не считать закомментированного перебора - это отражено в вопросе). Чтобы сказать вердикт - нужна не функция, а код программы, т.к. неизвестно, где и в чем кроется причина и ее нужно искать. Для этого прогу нужно запустить в тестере - посмотреть своими глазами на косяки проявляемые. Затем уже пробежаться по коду (или в обратном порядке) и поискать эту причину.
Как общее ощущение могу сказать, что у Вас, Олег, довольно много небрежностей (пофигизмов, я бы сказал). Это может приводить 1. К замусориванию используемой системы. 2. Потере структуры в результате этого замусоривания и сложности идентификации и выявления косяка. Поэтому могу посоветовать. - По возможности повыкидывайте весь "мусор" (лишнее) из кода - ошибку будет очевиднее найти. - Это классическая ошибка большинства вопрошающих о помощи - небрежность.
видимо тут косяк глубже.
первый мой вопрос вчера был : как оптимизировать параметры находящиеся внутри пользовательской функции.
мне ответили - вынеси их в extern double
я вынес.
и вот теперь оптимизатор выбрасывает результат...видимо я вынес их как-то неправильно.
Нет, я думаю, Вы ошибаетесь. Тестер выбрасывает не из-за вынесенных параметров - а потому что результаты не проходят критериев значимости.
А вот то, что сама прога может содержать ошибку - это возможно. Тем более, косвенным образом на это указывают как раз нестабильные результаты. - Значит, что-то не так. В моей практике я такие проги до реала не допускаю. Потому что, раз что-то не так, значит, ситуация не контролируемая. И может вылезти все что угодно.
Параметры Стоп-Лосс и Тейк-Профит, по определению, в любой программе находятся во внешних переменных, а не только потому, что их нужно оптимизировать. Вы же не будете каждый раз в код лазить, чтобы их поменять. Поэтому внешние или внутренние переменные - значения не имеет. - Это точно.
Пока смотрю код, но по ходу дела позволю несколько комментариев.
Вот эта строка вообще не имеет смысла:
Она будет нужна только в том случае, если у Вас мультивалютная стратегия, но тогда вместо
Нужно будет подставлять иные значения заранее определенные, но никак не эту штатную функцию.
Так же и эта переменная лишняя
Т.к. внутри функции у Вас это применяется всего лишь единожды в переборе, который почему-то закомментирован, и только захламляет код. - Отсюда вопрос - А почему перебор по ордерам закомментировали?
Вот это
Вообще лучше сгруппировать - условие же одинаковое.
Ну, из представленного Вами, принципиальных моментов я не выявил, что могло бы влиять на результат. Но!... Вы тут представили всего лишь одну функцию (довольно небрежно написанную, если не считать закомментированного перебора - это отражено в вопросе). Чтобы сказать вердикт - нужна не функция, а код программы, т.к. неизвестно, где и в чем кроется причина и ее нужно искать. Для этого прогу нужно запустить в тестере - посмотреть своими глазами на косяки проявляемые. Затем уже пробежаться по коду (или в обратном порядке) и поискать эту причину.
Как общее ощущение могу сказать, что у Вас, Олег, довольно много небрежностей (пофигизмов, я бы сказал). Это может приводить 1. К замусориванию используемой системы. 2. Потере структуры в результате этого замусоривания и сложности идентификации и выявления косяка. Поэтому могу посоветовать. - По возможности повыкидывайте весь "мусор" (лишнее) из кода - ошибку будет очевиднее найти. - Это классическая ошибка большинства вопрошающих о помощи - небрежность.
этот модификатор писал не я.
я взял его готовым из библиотек.
поэтому и почистить не смогу. главное что он 100% рабочий.
а вот почему не оптимизируется параметр внутри него - вот это вопрос.....
принципиальных ошибок же нет!
остальной код рабочий.
поставьте любые условия по алгоритму.
- купить
-модифицировать
- закрыть
---------------------------
и попробуйте прооптимизировать параметр внутри моего МОДИФИКАТОРА ордера - т.е. стоп и тейк
Нет, я думаю, Вы ошибаетесь. Тестер выбрасывает не из-за вынесенных параметров - а потому что результаты не проходят критериев значимости.
А вот то, что сама прога может содержать ошибку - это возможно. Тем более, косвенным образом на это указывают как раз нестабильные результаты. - Значит, что-то не так. В моей практике я такие проги до реала не допускаю. Потому что, раз что-то не так, значит, ситуация не контролируемая. И может вылезти все что угодно.
Параметры Стоп-Лосс и Тейк-Профит, по определению, в любой программе находятся во внешних переменных, а не только потому, что их нужно оптимизировать. Вы же не будете каждый раз в код лазить, чтобы их поменять. Поэтому внешние или внутренние переменные - значения не имеет. - Это точно.
ну вот смотрите,
если я сейчас верну все назад , т.е. уберу внешние параметры СТОП И ТЕЙК, а внутри функции пропишу вместо них числа, то советник прогнанный неделя за неделей в течение 10 недель , показывает четкие результаты. он делает ровно то что надо. проверял визуально сделку за сделкой.
И если я буду вручную менять параметры стопа и тейка - все будет работать и давать чуть другие результаты (это естественно )
а вот теперь почему, когда я выношу эти параметры наружу модификатора - оптимизатор считает их незначительными?