Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Загружай коды из Библиотеки MQL5 через MetaTrader. Это удобно!
Сергей
20
Сергей 2013.04.06 21:28 

Здравствуйте,

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

Буду очень признателен... и заранее благодарен) 

ktest0
631
ktest0 2013.04.06 22:51  

Это очень просто - выведите эти переменные в extern и тестируйте в режиме оптимизации с указанием диапазона и шага изменения.

Сергей
20
Сергей 2013.04.06 23:16  
Согласен, пробовал - работает, но в некоторых случаях, а именно в которых мне интересно, получается довольно большое кол-во циклов и данный способ оказывается чрезмерно долгим и трудоемким. По всей видимости возможно реализовать те же действия в программе с выводом только интересующих значений, что пока что у меня не получается...
ktest0
631
ktest0 2013.04.07 05:42  

В extern укажите одну переменную int допустим 1,2,3,4,5, а внутри советника проверку если 1 - первый набор переменных, 2- второй набор и прочее...

Вызывайте с шагом 1 и так проверите .

Сергей
20
Сергей 2013.04.07 10:31  
Мммм... да так получается быстрее чем в предыдущем случае... Спасибо за идею, пока буду действовать таким образом... и все таки остается вопрос о том, как это реализовать программно... очень уж засела эта конструкция, да и применимо к другим целям она окажется востребована... Есть мысли на этот счет? 
TarasBY
1739
TarasBY 2013.04.07 13:23  
O.Sergey:
Мммм... да так получается быстрее чем в предыдущем случае... Спасибо за идею, пока буду действовать таким образом... и все таки остается вопрос о том, как это реализовать программно... очень уж засела эта конструкция, да и применимо к другим целям она окажется востребована... Есть мысли на этот счет? 
Когда мы имеем несколько значимых переменных, участвующих в формировании конечного результата, а не все комбинации их параметров (для процесса оптимизации) имеют "валидность" (например, когда в советнике есть и БУ и трал, то БУ должен быть меньше размера трала), то можно посмотреть такое решение. В частности функция fSet_Continue().
Сергей
20
Сергей 2013.04.07 18:28  
TarasBY:
Когда мы имеем несколько значимых переменных, участвующих в формировании конечного результата, а не все комбинации их параметров (для процесса оптимизации) имеют "валидность" (например, когда в советнике есть и БУ и трал, то БУ должен быть меньше размера трала), то можно посмотреть такое решение. В частности функция fSet_Continue().

Спасибо, а не подскажете: есть ли решения для организации некого алгоритма как бы над функцией старт, т.е. чтобы результаты полученные после исполнения функции старт на временном отрезке можно было обработать и запустить снова функцию старт...(как бы для второго описанного вами условия)?
TarasBY
1739
TarasBY 2013.04.07 18:39  
O.Sergey:

Спасибо, а не подскажете: есть ли решения для организации некого алгоритма как бы над функцией старт, т.е. чтобы результаты полученные после исполнения функции старт на временном отрезке можно было обработать и запустить снова функцию старт...(как бы для второго описанного вами условия)?
Я своё решение эффективно использую при оптимизации - т.е. у меня есть и формализация задачи и её решение, которое позволяет значительно уменьшить время оптимизации, "пропуская" "несущественные" комбинации оптимизируемых параметров. С Вашей формализацией мне не понятно.
Сергей
20
Сергей 2013.04.07 19:04  
TarasBY:
Я своё решение эффективно использую при оптимизации - т.е. у меня есть и формализация задачи и её решение, которое позволяет значительно уменьшить время оптимизации, "пропуская" "несущественные" комбинации оптимизируемых параметров. С Вашей формализацией мне не понятно.
Прошу прощения - это наверное я чего то ни как не уловлю - не так давно занимаюсь программированием...) Эмм... не могли бы вы вкратце описать суть программного повторного запуска тестирования советника? Буду очень признателен)
TarasBY
1739
TarasBY 2013.04.07 19:20  
O.Sergey:
Прошу прощения - это наверное я чего то ни как не уловлю - не так давно занимаюсь программированием...) Эмм... не могли бы вы вкратце описать суть программного повторного запуска тестирования советника? Буду очень признателен)
Сначала нужно уточнить, как происходит процесс оптимизации: тестер загружает комбинацию входных параметров (переменные extern) и прогоняет по всему отрезку заданной истории, затем загружает новую комбинацию входных параметров и процесс прогона по истории повторяется и так до тех пор, пока тестер не переберёт все возможные комбинации входных параметров. Так вот мой код анализирует загруженные входные параметры и, если конкретная комбинация попадает под понятие "несущественная", советник заканчивает работу функции start() после прохождения функции fSet_Continue(), которая расположена в самом её начале. Т.е. при такой комбинации параметров прогон осуществляется в "сокращённом" виде - очень быстро. Такая схема.
Сергей
20
Сергей 2013.04.07 19:55  
TarasBY:
Сначала нужно уточнить, как происходит процесс оптимизации: тестер загружает комбинацию входных параметров (переменные extern) и прогоняет по всему отрезку заданной истории, затем загружает новую комбинацию входных параметров и процесс прогона по истории повторяется и так до тех пор, пока тестер не переберёт все возможные комбинации входных параметров. Так вот мой код анализирует загруженные входные параметры и, если конкретная комбинация попадает под понятие "несущественная", советник заканчивает работу функции start() после прохождения функции fSet_Continue(), которая расположена в самом её начале. Т.е. при такой комбинации параметров прогон осуществляется в "сокращённом" виде - очень быстро. Такая схема.


Большое спасибо - попробую разобраться)
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий