![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А я уже начал думать, не написать ли статью по оптимизации многострадального MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий данные тестирования в файл, по окончании оптимизации читающий данные, сортирующий их по отношению Прибыль/Просадка и снова записывающий в тот же файл. Для разнообразия правда взял для опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890 барах по ценам открытия заняли у меня около 36 секунд, как в полном варианте, так и с закомментированными блоками, содержащими операции с файлами и глобальными переменными. Засекал правда вручную, но ясно, что разницы большой нет. Думаю с оптимизацией по читаемым из файла параметрам проблем тоже быть не должно, всё можно сделать аналогично. Советника прилагаю, но прошу не очень ругаться на стиль, неинтеллектульный способ перебора параметров, отсутствие комментариев и много ещё за что мне в этом коде совестно :) - просто хотел по быстрому проверить идею. При запуске нужно установить оптимизацию по параметру Counter от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую :). Разве что досконально разобравшись в коде, но тогда и менять их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров, при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т. д.
Да, интересно, но как правильно сделать перебор параметров, при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т. д.
А я уже начал думать, не написать ли статью по оптимизации многострадального MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий данные тестирования в файл, по окончании оптимизации читающий данные, сортирующий их по отношению Прибыль/Просадка и снова записывающий в тот же файл. Для разнообразия правда взял для опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890 барах по ценам открытия заняли у меня около 36 секунд, как в полном варианте, так и с закомментированными блоками, содержащими операции с файлами и глобальными переменными. Засекал правда вручную, но ясно, что разницы большой нет. Думаю с оптимизацией по читаемым из файла параметрам проблем тоже быть не должно, всё можно сделать аналогично. Советника прилагаю, но прошу не очень ругаться на стиль, неинтеллектульный способ перебора параметров, отсутствие комментариев и много ещё за что мне в этом коде совестно :) - просто хотел по быстрому проверить идею. При запуске нужно установить оптимизацию по параметру Counter от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую :). Разве что досконально разобравшись в коде, но тогда и менять их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров, при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т. д.
Посмотри советник, который я выложил https://c.mql5.com/mql4/forum/2007/09/NeuroMA_MMM.mq4
Да, интересно, но как правильно сделать перебор параметров, при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т. д.
Если параметров 3-5, то не так уж это и много (если не раздувать количество их вариантов), а случайную выборку все равно нужно как-то организовать правильно, чтобы чего-то не пропустить, а это даже сложнее. А хотелось бы иметь возможность интегрировать такую оптимизацию в любой советник с разумным числом параметров.
А я уже начал думать, не написать ли статью по оптимизации многострадального MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий данные тестирования в файл, по окончании оптимизации читающий данные, сортирующий их по отношению Прибыль/Просадка и снова записывающий в тот же файл. Для разнообразия правда взял для опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890 барах по ценам открытия заняли у меня около 36 секунд, как в полном варианте, так и с закомментированными блоками, содержащими операции с файлами и глобальными переменными. Засекал правда вручную, но ясно, что разницы большой нет. Думаю с оптимизацией по читаемым из файла параметрам проблем тоже быть не должно, всё можно сделать аналогично. Советника прилагаю, но прошу не очень ругаться на стиль, неинтеллектульный способ перебора параметров, отсутствие комментариев и много ещё за что мне в этом коде совестно :) - просто хотел по быстрому проверить идею. При запуске нужно установить оптимизацию по параметру Counter от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую :). Разве что досконально разобравшись в коде, но тогда и менять их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров, при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т. д.
Посмотри советник, который я выложил https://c.mql5.com/mql4/forum/2007/09/NeuroMA_MMM.mq4
Просмотрел, спасибо. Оптимизация глобальных переменных по Criterion. Но, на мой взгляд - сложновато, да и при переборе с одним индексом не подойдет. По-моему должно быть по-проще - чем проще - тем надежнее.
Если параметров 3-5, то не так уж это и много (если не раздувать количество их вариантов), а случайную выборку все равно нужно как-то организовать правильно, чтобы чего-то не пропустить, а это даже сложнее. А хотелось бы иметь возможность интегрировать такую оптимизацию в любой советник с разумным числом параметров.
Ну тогда вложенные циклы, что ещё. По сути множество наборов значений параметров будет многомерным (по числу параметров) массивом с общим размером равным произведению размеров измерений (то есть для полного перебора максимальному значению счётчика тестирований).
P.S. В смысле текущие значения индексов запоминать в файле или глобальных переменных. C запоминанием код будет проще. Но скорее всего не быстрее. В принципе можно и через / и % но там уже будет по идее как бы лестница диапазонов параметров. Пусть есть текущие значения индексов i, j, k и их диапазоны I, J, K. Тогда имеем
i = (Counter-1) % I
j = (Counter-1) / I % J
k = (Counter-1) / I / J
Ну и дальше симметрично можно достраивать.