Задавайте в советнике цикл n=1...100, m=n+1...1000
Если((a1[n]>b1[m]&&a2[n]<b2[m])||(n>m)) тогда бай
Если((a1[n]<b1[m]&&a2[n]>b2[m])||(n>m)) тогда сел
Если((a1[n]<b1[m]&&a2[n]>b2[m])||(n>m)) тогда сел
Можно в начале функции start() написать
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
Задавайте в советнике цикл n=1...100, m=n+1...1000
Если((a1[n]>b1[m]&&a2[n]<b2[m])||(n>m)) тогда бай
Если((a1[n]<b1[m]&&a2[n]>b2[m])||(n>m)) тогда сел
Если((a1[n]<b1[m]&&a2[n]>b2[m])||(n>m)) тогда сел
Мы наверно немного друг друга не поняли.
Можно в начале функции start() написать
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
Этот способ я и использую, но ...
Если тестируешь потиково на истории в 5 лет, то даже пустой прогон умноженный на количество бесполезных циклов занимает довольно много время.
Например, в С++ есть операторы оказывающие воздействие не на действие программы, а на действие самого компилятора. Есть ли в MQLе возможность написать указания для тестера стратегий?
Пример:
extern int n=0; extern int m=0; ... int tester () //Встроенная функция типа init() и deinit() { if (n<m) break; //Прерывает работу тестера на данном наборе данных и переходит к следующему. return(0); }
Такой именно функции конечно же нету, но есть ли возможность реализации чего-то подобного?
Ваш случай только один множества возможных. Вспомните пример про сороконожку-что делает ее пятая правая нога, когда пятнадцатая левая опущена , а девятая правая в воздухе. Если Вам лень (или сложно) запрограммировать в советнике Ваше никчемное (на взгляд других пользователей MetaTrader 4) условие в советнике, то неужели Магомет должен подойти к Вам лично?
1. Могу конечно ошибаться, но это будет полезно для большенства советников, которые работают с трендовой и сигнальной линиями, а таких не мало.
2. Запрограммировать условие мне не лень и я об этом написал выше, что использую этот способ.
3. Я абсолютно не требую "Магомет должен подойти к Вам лично". Я спросил есть ли такая возможность в МТ, потому что не очень хорошо знаком с возможностями MQL.
4. Мне конечно далеко до профессионального программиста, но насколько я представляю, реализовать эту возможность не очень сложно, на имеющейся базе. К тому же большинство используемых функций уже существуют.
5. Я не знаю кто вы такой товарищ Rosh, только вижу, что ваш ник выделен цветом, но мне кажется вы немного предвзято отнеслись к этому вопросу и немного не вежлево.
С уважением, Дмитрий.
З.Ы. Если честно, то я немного не понял пример с сороконожкой. :)
И на всякий случай для "новеньких" - вопрос не о работе советника, а о работе тестера стратегий.
"возможность реализации чего-то подобного?" - имеется ввиду текущие возможности тестера и MQL, а не написание новых функций для МТ программистами Metaquotes.
2. Запрограммировать условие мне не лень и я об этом написал выше, что использую этот способ.
3. Я абсолютно не требую "Магомет должен подойти к Вам лично". Я спросил есть ли такая возможность в МТ, потому что не очень хорошо знаком с возможностями MQL.
4. Мне конечно далеко до профессионального программиста, но насколько я представляю, реализовать эту возможность не очень сложно, на имеющейся базе. К тому же большинство используемых функций уже существуют.
5. Я не знаю кто вы такой товарищ Rosh, только вижу, что ваш ник выделен цветом, но мне кажется вы немного предвзято отнеслись к этому вопросу и немного не вежлево.
С уважением, Дмитрий.
З.Ы. Если честно, то я немного не понял пример с сороконожкой. :)
И на всякий случай для "новеньких" - вопрос не о работе советника, а о работе тестера стратегий.
"возможность реализации чего-то подобного?" - имеется ввиду текущие возможности тестера и MQL, а не написание новых функций для МТ программистами Metaquotes.
Поддерживаю, мысль очень интересная - сделать в тестере условие, при котором во время оптимизации можно исключать ненужные прогоны.
Мы наверно немного друг друга не поняли.
Можно в начале функции start() написать
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
if (n<m) return (0); оптимизатор просто быстро сделает этот прогон
Этот способ я и использую, но ...
Если тестируешь потиково на истории в 5 лет, то даже пустой прогон умноженный на количество бесполезных циклов занимает довольно много время.
Например, в С++ есть операторы оказывающие воздействие не на действие программы, а на действие самого компилятора. Есть ли в MQLе возможность написать указания для тестера стратегий?
Пример:
extern int n=0; extern int m=0; ... int tester () //Встроенная функция типа init() и deinit() { if (n<m) break; //Прерывает работу тестера на данном наборе данных и переходит к следующему. return(0); }
Такой именно функции конечно же нету, но есть ли возможность реализации чего-то подобного?
Идею понял (не сразу увидел), но не знаю насколько это востребовано и реализуемо на данный момент. Вчера провел замеры на своем компьютере (Celeron-2000 768 Mb ОЗУ), пустой прогон по Open Price на 60 000 баров занял около секунды. Конечно, при прогонах на миллионах баров это может вылиться в десяток/другой секунд на каждом пустом прогоне, просто я никогда этого не делал и не задумывался о такой необходимости. Возможно, бывают такие стратегии, оптимизация которых требует прохождения дырявых(ячеистых) множеств параметров. То есть , без этого , возможно, в некоторых случаях не обойтись. Разработчики MQL4 могут сказать более точно о возможности появления такой функции.
Спасибо за ответ и извините за замечания. :)
Вставил в начале эксперта строчку
if (AccountBalance()>1) return (0);
Билд 206, тестирование - все тики, ТФ - D1, период - 01.01.03-01.06.07, Cel D 3.06 - 1Gb ОЗУ
20 циклов - 1мин 7 сек.
Итого если "левых" циклов 1000, то теряем почти 1 час.
Вставил в начале эксперта строчку
if (AccountBalance()>1) return (0);
Билд 206, тестирование - все тики, ТФ - D1, период - 01.01.03-01.06.07, Cel D 3.06 - 1Gb ОЗУ
20 циклов - 1мин 7 сек.
Итого если "левых" циклов 1000, то теряем почти 1 час.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Допустим есть условие, при выполнении которого открывается ордер.
Если a1[n]>b1[m] и a2[n]<b2[m], тогда бай.
Если a1[n]<b1[m] и a2[n]>b2[m], тогда сел.
При этом n всегда должно быть больше m.
При прогоне в оптимизаторе со значениями n=1...100, m=1..100 получается 100000 циклов. Но если бы оптимизатору можно было бы указать, что при n<m набор данных не тестировать, то количество циклов уменьшилось бы в два раза, что при оптимизации без использования генетического алгоритма существенно сократило время.
Собственно вопрос - такая возможность в МТ присутствует? Если да, то как ей пользоваться? Если нет, то возможна ли её реализация в будующем?