lna01:
А я уже начал думать, не написать ли статью по оптимизации многострадального
MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий
данные тестирования в файл, по окончании оптимизации читающий
данные, сортирующий их по отношению Прибыль/Просадка и снова
записывающий в тот же файл. Для разнообразия правда взял для
опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890
барах по ценам открытия заняли у меня около 36 секунд, как в полном
варианте, так и с закомментированными блоками, содержащими
операции с файлами и глобальными переменными. Засекал правда
вручную, но ясно, что разницы большой нет. Думаю с оптимизацией
по читаемым из файла параметрам проблем тоже быть не должно,
всё можно сделать аналогично. Советника прилагаю, но прошу не
очень ругаться на стиль, неинтеллектульный способ перебора
параметров, отсутствие комментариев и много ещё за что мне в
этом коде совестно :) - просто хотел по быстрому проверить идею.
При запуске нужно установить оптимизацию по параметру Counter
от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую
:). Разве что досконально разобравшись в коде, но тогда и менять
их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров,
при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т.
д.
Gull:
Да, интересно, но как правильно сделать перебор параметров,
при их количестве больше двух - нужно же проверить и TakeProfit и
StopLoss и TrailingStop и т. д.
Я думаю при большом числе параметров замахиваться на полный
перебор не стоит. Можно например случайным образом выбирать
значения из заданных диапазонов.
lna01:
А я уже начал думать, не написать ли статью по оптимизации многострадального
MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий
данные тестирования в файл, по окончании оптимизации читающий
данные, сортирующий их по отношению Прибыль/Просадка и снова
записывающий в тот же файл. Для разнообразия правда взял для
опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890
барах по ценам открытия заняли у меня около 36 секунд, как в полном
варианте, так и с закомментированными блоками, содержащими
операции с файлами и глобальными переменными. Засекал правда
вручную, но ясно, что разницы большой нет. Думаю с оптимизацией
по читаемым из файла параметрам проблем тоже быть не должно,
всё можно сделать аналогично. Советника прилагаю, но прошу не
очень ругаться на стиль, неинтеллектульный способ перебора
параметров, отсутствие комментариев и много ещё за что мне в
этом коде совестно :) - просто хотел по быстрому проверить идею.
При запуске нужно установить оптимизацию по параметру Counter
от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую
:). Разве что досконально разобравшись в коде, но тогда и менять
их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров,
при их количестве больше двух - нужно же проверить и TakeProfit и
StopLoss и TrailingStop и т. д.
Gull:
Да, интересно, но как правильно сделать перебор параметров,
при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т.
д.
Я думаю при большом числе параметров замахиваться на полный
перебор не стоит. Можно например случайным образом выбирать
значения из заданных диапазонов.
Если параметров 3-5, то не так уж это и много (если не раздувать
количество их вариантов), а случайную выборку все равно нужно как-то организовать правильно,
чтобы чего-то не пропустить, а это даже сложнее. А хотелось бы иметь
возможность интегрировать такую оптимизацию в любой советник с разумным числом параметров.
lna01:
А я уже начал думать, не написать ли статью по оптимизации многострадального
MACD Sample.mq4 по критерию Прибыль/Просадка :)
Ну в общем я это сделал :). В смысле набросал на коленке код, записывающий
данные тестирования в файл, по окончании оптимизации читающий
данные, сортирующий их по отношению Прибыль/Просадка и снова
записывающий в тот же файл. Для разнообразия правда взял для
опытов не MACD Sample а Moving Average. Вроде это нормально работает. 100 проходов оптимизации на 52890
барах по ценам открытия заняли у меня около 36 секунд, как в полном
варианте, так и с закомментированными блоками, содержащими
операции с файлами и глобальными переменными. Засекал правда
вручную, но ясно, что разницы большой нет. Думаю с оптимизацией
по читаемым из файла параметрам проблем тоже быть не должно,
всё можно сделать аналогично. Советника прилагаю, но прошу не
очень ругаться на стиль, неинтеллектульный способ перебора
параметров, отсутствие комментариев и много ещё за что мне в
этом коде совестно :) - просто хотел по быстрому проверить идею.
При запуске нужно установить оптимизацию по параметру Counter
от 1 до 100 с шагом 1. Что либо ещё делать с параметрами не советую
:). Разве что досконально разобравшись в коде, но тогда и менять
их и ни к чему уже будет.
Да, интересно, но как правильно сделать перебор параметров,
при их количестве больше двух - нужно же проверить и TakeProfit и StopLoss и TrailingStop и т.
д.
Просмотрел, спасибо. Оптимизация глобальных переменных по Criterion.
Но, на мой взгляд - сложновато, да и при переборе с одним индексом
не подойдет. По-моему должно быть по-проще - чем проще - тем надежнее.
Gull: Если параметров 3-5, то не так уж это и много (если не раздувать
количество их вариантов), а случайную выборку все равно нужно
как-то организовать правильно, чтобы чего-то не пропустить,
а это даже сложнее. А хотелось бы иметь возможность интегрировать
такую оптимизацию в любой советник с разумным числом параметров.
Ну тогда вложенные циклы, что ещё. По сути множество наборов
значений параметров будет многомерным (по числу параметров)
массивом с общим размером равным произведению размеров измерений
(то есть для полного перебора максимальному значению счётчика
тестирований).
P.S. В смысле текущие значения индексов запоминать в файле или глобальных переменных. C запоминанием код будет проще. Но скорее всего не быстрее. В принципе можно и через / и % но там уже будет по идее как бы лестница диапазонов параметров. Пусть есть текущие значения индексов i, j, k и их диапазоны I, J, K. Тогда имеем
А я уже начал думать, не написать ли статью по оптимизации многострадального 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
Ну и дальше симметрично можно достраивать.